我试图设计一个XML架构,但我一直陷入困境。我的XML文件不会验证我的架构。我怀疑我犯了一些初学者的错误。谁能指出我哪里出错?错误消息对我没有意义。
这是我的xsd文件:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.test.com/teststuff/XMLnamespace" >
<xs:element name="dataCollecFile">
<xs:complexType>
<xs:sequence>
<xs:element name="fileHeader" minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="data" minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="fileFooter">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
以下是无法验证的XML文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<dataCollecFile xmlns="http://www.test.com/teststuff/XMLnamespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.test.com/teststuff/XMLnamespace test.xsd">
<fileHeader>heady head header</fileHeader>
<data>data data</data>
<fileFooter>foot feet feeter</fileFooter>
</dataCollecFile>
最后,这是我从Java的javax.xml.validation.Validator类得到的错误消息:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'fileHeader'. One of '{fileHeader, data, fileFooter}' is expected.
答案 0 :(得分:3)
尝试将elementFormDefault="qualified"
添加到&lt; schema&gt;元件。
更新
当elementFormDefault不合格时,全局元素将具有目标名称空间,但本地元素将没有名称空间。因此,如果您拥有模式的非限定版本,那么您的XML必须如下所示:
<ns:dataCollecFile xmlns:ns="http://www.test.com/teststuff/XMLnamespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.test.com/teststuff/XMLnamespace test.xsd">
<fileHeader>heady head header</fileHeader>
<data>data data</data>
<fileFooter>foot feet feeter</fileFooter>
</ns:dataCollecFile>