XMLスキーマに対してXMLドキュメントを検証しようとしています。
これは私のスキーマです:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://cars.example.org/">
<element name="cars">
<complexType>
<sequence minOccurs="0" maxOccurs="unbounded">
<element name="brand" type="string"/>
</sequence>
</complexType>
</element>
</schema>
これは私のXMLドキュメントです:
<?xml version="1.0" encoding="UTF-8"?>
<cars xmlns="http://cars.example.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://cars.example.org/ cars.xsd">
<brand>x</brand>
</cars>
(Eclipseを介して)ドキュメントを検証しているときに、4行目に次のメッセージが表示されます。
cvc-complex-type.2.4.a: Invalid content was found starting with element 'brand'. One of '{"":brand}' is expected.
このメッセージは意味がありません:(。そしてグーグルソリューションは非常に難しい(不可能ですか?)。
ご協力ありがとうございました。
スキーマは、「ブランド」を名前空間がないものとして定義しています。それが'{"":brand}'
の意味です。ただし、XMLドキュメントでは、「brand」要素はhttp://cars.example.org/
名前空間にあります。したがって、それらは一致せず、検証エラーが発生します。
スキーマの「brand」要素をhttp://cars.example.org/
名前空間にあると宣言するには、属性elementFormDefault="qualified"
をスキーマ要素に追加します。
完全を期すために、スキーマ要素にattributeFormDefault="unqualified"
も追加することをお勧めしますが、この場合は問題ではありません。
名前空間のURLであるcars内の属性を検証していません。これは機能するはずです。
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://cars.example.org/">
<element name="cars">
<complexType>
<sequence minOccurs="0" maxOccurs="unbounded">
<element name="brand" type="string"/>
</sequence>
<attribute name="schemaLocation" type="anyURI"/>
</complexType>
</element>
</schema>