schema.xsd
我在外部文件中有一个带有自定义类型的 XML 模式types.xsd
。我不知道为什么我的复杂类型typeComplex
没有正确验证。像这样的简单类型typeSimple
可以正常工作。那有什么问题?
日食说:
cvc-complex-type.2.4.a:发现以元素“a”开头的无效内容。需要 '{"http://www.example.org/types":a}' 之一。
架构.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/schema" elementFormDefault="qualified"
xmlns:t="http://www.example.org/types">
<xs:import schemaLocation="types.xsd" namespace="http://www.example.org/types" />
<xs:element name="root">
<xs:complexType>
<xs:all>
<xs:element name="simple" type="t:typeSimple" />
<xs:element name="complex" type="t:typeComplex" />
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
类型.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/types" xmlns="http://www.example.org/types"
elementFormDefault="qualified">
<xs:simpleType name="typeSimple">
<xs:restriction base="xs:string">
<xs:length value="3" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="typeComplex">
<xs:sequence>
<xs:element name="a" type="xs:string" />
<xs:element name="b" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
text.xml - 对 xsd 无效 - 为什么?
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.example.org/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/schema schema.xsd " xmlns:t="http://www.example.org/types">
<simple>XXX</simple>
<complex>
<a></a> <!-- not valid here; Eclipse say: cvc-complex-type.2.4.a: Invalid content was found starting with element 'a'. One of '{"http://www.example.org/types":a}' is expected. -->
<b></b>
</complex>
</root>