为什么我的测试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是错误的。
所有的u需要做的就是增加将elementFormDefault = “合格” 和u将被罚款。要理解这种行为,请阅读“您是否合格?”部分@http://msdn.microsoft.com/en-us/library/ms950796.aspx
谢谢Pangea。这是我的问题的解决方案。 – WSK 2010-05-13 16:41:00
看起来你没有指定如何验证FirstName
和LastName
元素;给出type="xsd:string"
(当然需要将xsd
映射到XML模式数据类型名称空间)的元素规格,并且一切都会好的。
但是你最好不要嵌套那么深的元素。将它们全部放在同一层,并使用ref="Name"
将它们全部链接在一起;它使您的架构更加灵活和可用。
不,我失败的“名称”标记,而不是名字或姓氏。这就是为什么(可能)类型不起作用。 我的“名称”元素是复杂类型的,所以我无法设置它的类型。顺便提一句,这个例子是我相对复杂的模式的简化版本。通过不使用嵌套元素,我的模式会使我的生活更加困难 – 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>
通过添加xmlns =“”我在xml中得到这个错误: cvc-complex-type.2.4.a:发现无效内容以元素'FirstName'开头。 “{”http://www.example.org/ 其中之一是testSchema“:FirstName}”。 – WSK 2010-05-13 15:59:50
你可以发布你试图验证的模式吗? – 2010-05-13 15:29:53
架构现已在原始帖子中显示。 道歉使用“答案”而不是编辑 – WSK 2010-05-13 15:41:04