私は人間とマシンの両方で使用可能な大規模なXML構造を管理するためにXML Includesを使用しようとしています。Xスキーマ/名前空間の検証を含める?
しかし、既存のスキーマに対して検証できるXMLファイルを作成しようとすると、無数の問題が発生します。ここに私がしようとしているものの単純な例があります。
私の "main.xml"ファイルは検証されません。
<?xml version="1.0" encoding="UTF-8"?>
<!-- Main.xml - This fails to validate. -->
<ns1:main xsi:schemaLocation="http://www.example.com/main main.xsd"
xmlns:ns1="http://www.example.com/main"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xi="http://www.w3.org/2001/XInclude">
<name>String</name>
<xi:include href="child.xml"/> <!-- What I'm trying to do. -->
</ns1:main>
"child.xml"ファイルは、スタンドアロンファイルとしてfineを検証します。
<?xml version="1.0" encoding="UTF-8"?>
<!-- Child.xml - This validates fine, as a standalone file. -->
<ns1:child xsi:schemaLocation="http://www.example.com/main main.xsd"
xmlns:ns1="http://www.example.com/main"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<name>String</name>
<age>String</age>
</ns1:child>
は、ここに私のスキーマです:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Main.xsd - My Simplified Schema -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://www.example.com/main"
targetNamespace="http://www.example.com/main">
<!-- Main Element (References Child) -->
<xs:element name="main">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element ref="ns1:child"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Child Element -->
<xs:element name="child">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
私の問題はほとんど-明らかに名前空間に関連しているが、私は私の問題を解決する方法のための損失でね。
妥当性検査をしようとすると、どのようなエラーが発生しますか? – skaffman
main.xmlの解析時に、次のエラーが表示されます。「 'schemaLocation'属性は、ターゲットの名前空間がすでに検証に使用されているスキーマを参照しています。 - AltovaのXML Spyで。 – Nate
Notepad ++のXML検証プラグインでは、「Element '{http://www.w3.org/2001/XInclude〕include」:この要素は期待されていません。({http://www.example.com/main}子 )。" – Nate