.xsd: Unbestimmte Anzahl an Children

U2nt

Bekanntes Mitglied
Hey ;)

Ich habe eine XML-Datei mit etwa folgendem Inhalt:
Code:
<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

Top Contributor
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

Top Contributor
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]
 

Ähnliche Java Themen

Neue Themen


Oben