Ich versuche XML-Includes zu verwenden, um eine große XML-Struktur zu verwalten, die sowohl von Menschen als auch von Computern verwendet werden kann.XInclude Schema/Namespace Validierung?
Es treten jedoch unzählige Probleme beim Versuch auf, XML-Dateien zu erstellen, die anhand eines vorhandenen Schemas validiert werden können. Hier ist ein vereinfachtes Beispiel für das, was ich versuche zu tun.
Meine Datei "main.xml" wird nicht validiert.
<?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>
Die Datei "child.xml" wird als eigenständige Datei überprüft.
<?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>
Hier ist mein Schema:
<?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>
Meine Fragen sind fast offensichtlich im Zusammenhang mit Namensraum, aber ich bin ratlos, wie mein Problem zu beheben.
Welchen Fehler bekommen Sie bei der Validierung? – skaffman
Beim Analysieren der main.xml sehe ich den Fehler: "Das Attribut 'schemaLocation' verweist auf ein Schema, dessen Ziel-Namespace bereits zur Validierung verwendet wurde." - In Altovas XML-Spion. – Nate
Das XML-Validierungs-Plugin von Notepad ++ gibt Folgendes an: "Element '{http://www.w3.org/2001/XInclude] include': Dieses Element wird nicht erwartet. Erwartet wird ({http://www.example.com/main} Kind). " – Nate