为什么我的测试xml与非常简单的XSD架构失败?

问题描述:

我在xml架构中有点新手。我将不胜感激,如果有人帮助我理解为什么我的XML不被与模式验证:为什么我的测试xml与非常简单的XSD架构失败?

这里是我的架构:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/testSchema" xmlns="http://www.example.org/testSchema"> 
    <xs:element name="Employee"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="Name"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="FirstName" /> 
       <xs:element name="LastName" /> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

这里是我的测试XML:

<?xml version="1.0" encoding="UTF-8"?> 
<Employee xmlns="http://www.example.org/testSchema"> 
<Name> 
    <FirstName>John</FirstName> 
    <LastName>Smith</LastName> 
</Name> 
</Employee> 

我收到错误通过Eclipse的XML编辑器/验证器:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'Name'. One of '{Name}' is expected. 

我不明白是什么这个模式或我的XML是错误的。

+0

你可以发布你试图验证的模式吗? – 2010-05-13 15:29:53

+0

架构现已在原始帖子中显示。 道歉使用“答案”而不是编辑 – WSK 2010-05-13 15:41:04

所有的u需要做的就是增加将elementFormDefault = “合格” 和u将被罚款。要理解这种行为,请阅读“您是否合格?”部分@http://msdn.microsoft.com/en-us/library/ms950796.aspx

+0

谢谢Pangea。这是我的问题的解决方案。 – WSK 2010-05-13 16:41:00

看起来你没有指定如何验证FirstNameLastName元素;给出type="xsd:string"(当然需要将xsd映射到XML模式数据类型名称空间)的元素规格,并且一切都会好的。

但是你最好不要嵌套那么深的元素。将它们全部放在同一层,并使用ref="Name"将它们全部链接在一起;它使您的架构更加灵活和可用。

+0

不,我失败的“名称”标记,而不是名字或姓氏。这就是为什么(可能)类型不起作用。 我的“名称”元素是复杂类型的,所以我无法设置它的类型。顺便提一句,这个例子是我相对复杂的模式的简化版本。通过不使用嵌套元素,我的模式会使我的生活更加困难 – WSK 2010-05-13 15:51:39

只需将elementFormDefault =“qualified”添加到模式属性。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"   
     targetNamespace="http://www.example.org/testSchema" 
     elementFormDefault="qualified" 
     xmlns="http://www.example.org/testSchema"> 

而原始将工作

<?xml version="1.0" encoding="utf-8"?> 
    <Employee xmlns="http://www.example.org/testSchema"> 
    <Name> 
     <FirstName>John</FirstName> 
     <LastName>Smith</LastName> 
    </Name> 
</Employee> 
+0

通过添加xmlns =“”我在xml中得到这个错误: cvc-complex-type.2.4.a:发现无效内容以元素'FirstName'开头。 “{”http://www.example.org/ 其中之一是testSchema“:FirstName}”。 – WSK 2010-05-13 15:59:50