# .xsd: Unbestimmte Anzahl an Children



## U2nt (6. Jul 2012)

Hey 

Ich habe eine XML-Datei mit etwa folgendem Inhalt:

```
<items>    
  <category name="Sample Category #1">
    <category name="Sample Subcategory #1.1">
      <object>
        <name>Sample Inner Object</name>
        <desc>Sample Description</desc>
      <object>
    </category>
    <object>
      <name>Sample Name</name>
      <desc>Sample Description #2</desc>
    <object>
  </category>
  <category name"MyCat #2">
    <object>
      <name>Another Object</name>
      <desc>Another Description</desc>
    <object>
  </category>
</items>
```

Wie man sehen kann soll der <category>-Tag "unendlich" tief in die Struktur rein gehen können und je nach belieben auf jeder Ebene auch <object>s beinhalten können.
Diese Struktur wollte über ein XML-Schema (xsd) serialisieren lassen, doch ich weiß nicht wie ich im Schema sagen soll, dass die categories unendlich tief gehen können.

Gibt es dafür eine Lösung (ich denke mal, ich bin noch nicht ganz vertraut mit Schemata) oder bin ich hier mit XML als "Datenbank" fehl am Platz (bzw. zahlt sich für diese Verwendung ein anderes System mehr aus?)


----------



## musiKk (7. Jul 2012)

Ob nun XML oder nicht: Das ist eigentlich recht simpel umzusetzen. Der Kategorie-Typ erlaubt als Kindelemente eine Kategorie und eine Liste von Objekten. Mehr ist nicht nötig.


----------



## mvitz (8. Jul 2012)

Und anbei ein Beispiel:
u2nt.xsd
[XML]<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.java-forum.org/u2nt"
    xmlns:tns="http://www.java-forum.org/u2nt"
    elementFormDefault="qualified" attributeFormDefault="unqualified">

  <element name="items">
    <complexType>
      <sequence>
        <element name="category" type="tns:Category" maxOccurs="unbounded" />
      </sequence>
    </complexType>
  </element>

  <complexType name="Category">
    <sequence>
      <element name="category" type="tns:Category" minOccurs="0" maxOccurs="unbounded" />
      <element name="object"   type="tns:Object"                 maxOccurs="unbounded" />
    </sequence>
    <attribute name="name" type="string" use="required" />
  </complexType>

  <complexType name="Object">
    <sequence>
      <element name="name" type="string" />
      <element name="desc" type="string" />
    </sequence>
  </complexType>

</schema>[/XML]

u2nt.xml
[XML]<?xml version="1.0" encoding="UTF-8"?>
<items xmlns="http://www.java-forum.org/u2nt"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.java-forum.org/u2nt u2nt.xsd">
  <category name="Sample Category #1">
    <category name="Sample Subcategory #1.1">
      <object>
        <name>Sample Inner Object</name>
        <desc>Sample Description</desc>
      </object>
    </category>
    <object>
      <name>Sample Name</name>
      <desc>Sample Description #2</desc>
    </object>
  </category>
  <category name="MyCat #2">
    <object>
      <name>Another Object</name>
      <desc>Another Description</desc>
    </object>
  </category>
</items>[/XML]


----------



## U2nt (8. Jul 2012)

Vielen Dank euch Beiden! War doch einfacher als ich gedacht habe


----------

