Elemente aus importierten XML Schemata verwenden

java123

Mitglied
Hallo,

ich bin sehr neu in der XML-Welt und bin eben dabei mein erstes Schema zu erstellen, ein bis zwei XMLs habe ich bisher erstellt, jedoch ohne Schema dahinter.

Ich möchte nun im Schema ein Element definieren, welches wiederum ein ein include Element aus dem http://www.w3.org/2001/XInclude Namespace enthält. Dazu habe ich erstmals den Namespace definiert und ein Kürzel zugewiesen.

Code:
<xs:schema targetNamespace="http://www.example.ch/Blabla"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:own="http://www.example.com/Blabla"
           xmlns:xi="http://www.w3.org/2001/XInclude"
           attributeFormDefault="qualified" elementFormDefault="qualified"
           >
Über Google habe ich natürlich schon gesucht, wusste allerdings nicht nach was ich suchen sollte. Ich habe dann jedenfalls rausgefunden, dass ich über xs:import anderen Schemata importieren und die dort definierten Elemente dann verwenden kann.

Code:
<xs:import schemaLocation="http://www.w3.org/2001/XInclude.xsd" namespace="http://www.w3.org/2001/XInclude" />
Auf einer anderen Seite habe ich dann noch folgendes gefunden
Auf die importieren Definitionen kann dann auf üblichem Weg (unter Verwendung eines Namensraum-Präfix) verwiesen werden.

Nun sollte ich doch mit xi:include auf das Element zugreifen können, soweit korrekt?

Code:
<xs:complexType name="foo">
  <xs:sequence>
    <xs:element name="xi:include"></xs:element>
  </xs:sequence>
</xs:complexType>
Liefert mir den Fehler: src-resolve: Cannot resolve the name 'xi:includeType' to a(n) 'type definition' component. Achja, ich verwende zur Erstellung Eclipse WTP welches einen Xerces Parser/Validator (oder was auch immer^^) nutzt.
Dann hab ich noch name="include" und type="xi:includeType" versucht und Include zu erweitern, lieferte jedoch alles einen Fehler.

Der Validator liefert mir für die Zeile, wo der import Tag steht ausserdem "schema_reference.4: Failed to read schema document 'http://www.w3.org/2001/XInclude.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.".
Wenn ich die bei import angegebene URI http://www.w3.org/2001/XInclude.xsd aufrufe wird mir etwas angezeigt und mein Dokument-Rootelement ist xs:schema. Deshalb habe ich die XInclude.xsd lokal abgespeichert und den Pfad so angepasst, danach erschien die Warnung nicht mehr, an den anderen Fehlermeldungen änderte sich jedoch leider nichts.

Habe ich etwas Grundlegendes falsch verstanden? Ist es überhaupt möglich? Was mache ich falsch und wie gehts richtig?^^

Danke schonmal :)
 
Zuletzt bearbeitet:
Hi.

Wenn du dich auf ein Element beziehen willst, dann mußt du ref verwenden:
XML:
<xs:element ref="xi:include" />

Ansonsten ist es meistens eine gute Idee ein vollständiges(!) Minimalbeispiel zu machen.

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Zurück