我在xml架构中有点新手。如果有人帮我解释为什么我的xml没有通过架构验证,我将不胜感激:
这是我的架构:
<?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 :(得分:1)
只需将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>
答案 1 :(得分:1)
你需要做的就是添加elementFormDefault =“qualified”,你会没事的。要理解这种行为,请阅读“您是否合格?”部分@ http://msdn.microsoft.com/en-us/library/ms950796.aspx
答案 2 :(得分:0)
您似乎未能指定如何验证FirstName
和LastName
元素;给出那些type="xsd:string"
的元素规范(当然,xsd
需要映射到XML Schema Datatypes命名空间)并且一切都应该很好。
但最好不要将这些元素嵌套得那么深。将它们全部放在同一级别,然后使用ref="Name"
将它们全部链接在一起;它使您的架构更加灵活和可用。