smk: rekursives XML Schema

Beitrag lesen

Hallo allerseits,

habe schon viel gelesen und tagelang gesucht. Ich stecke fest und brauche Hilfe. Ich möchte gerne ein XML Schema erstellen, mit ich quasi einen Verzeichnisbaum beschreiben kann. Der Trick: ein Verzeichnis kann wiederum Verzeichnisse enthalten. Verzeichnisse und Dateien innerhalb eines Verzeichnisses können in beliebiger Anordnung und Anzahl vorkommen.

Alles was ich mir an Schema dafür ausdenke, kommt nicht durch den XML Schema Validator, weil die Referenzen irgendwie nicht aufgelöst werden können.

Hier mal ein XML Beispiel:
<tree>
  <dir>
    <dir>
      <file>1</file>
      <file>2</file>
      <dir>
        <file>12</file>
      </dir>
    </dir>
    <file>17</file>
  </dir>
  <file>28</file>
  <dir/>
</tree>

Meine Idee war:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="FileType" type="xsd:unsignedLong"/>
  <xsd:complexType name="DirItemType">
    xsd:choice
      <xsd:element name="dir" ref="DirType"/>
      <xsd:element name="file" ref="FileType"/>
    </xsd:choice>
  </xsd:complexType>
  <xsd:complexType name="DirType">
    xsd:sequence
      <xsd:element ref="DirItemType" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="tree" type="DirType"/>
</xsd:schema>

Der Schema Validator erzählt mir dazu:

Undefined element {None}:DirItemType referenced from content
Undefined element {None}:DirType referenced from content model

Wie man sieht: das soll mein erstes XML Schema werden. Ich hab schon zig XML Schema Tutorials durch, aber gerade das Thema rekursiver Strukturen wird nirgends beschrieben. :(

Hilfe! Danke schonmal.

Sebastian