(XSD) Eindeutige Daten in NodeList
Micha
- xml
0 Micha
Hallo,
ich habe ein kleines Problem bei der Definition einer XSD. Ich möchte innerhalb einer NodeList eindeutige Kind-Elemente haben. Also etwas nach folgendem Schema:
<reise>
<orte gid="1">
<ort pid="berlin"/>
<ort pid="hamburg"/>
<ort pid="bern"/>
</orte>
<orte gid="2">
<ort pid="wien"/>
<ort pid="hamburg"/>
<ort pid="berlin"/>
</orte>
<orte gid="3">
<ort pid="wien"/>
<ort pid="berlin"/>
<ort pid="berlin"/> <!-- Das soll nicht passieren -->
</orte>
</reise>
Eine eindeutige gid
für die Orte habe ich hinbekommen:
<xsd:key name="keyGId">
<xsd:selector xpath=".//orte"/>
<xsd:field xpath="@gid"/>
</xsd:key>
um keine doppelten Einträge in orte
zu bekommen, bin ich auf unique gestoßen. Versucht habe ich eine Kombination aus der pid
und der gid
zu bilden. Das scheint aber nicht korrekt zu sein.
<xsd:unique name="uniquePid">
<xsd:selector xpath=".//orte"/>
<xsd:field xpath="./@gid"/>
<xsd:field xpath="./ort/@pid"/>
</xsd:unique>
Wo liegt mein Fehler?
Mit freundlichem Gruß
Micha
Hallo,
ich habe es hinbekommen, nachdem mich im Java-Forum einer in die richtige Richtung geschickt hat. Den /Umweg/ über die gid muss ich gar nicht gehen, wenn die Eindeutigkeit direkt im Element festgelegt wird. Folglich reicht schon:
<xsd:element name="orte" type="orteTyp" minOccurs="1" maxOccurs="unbounded">
<!-- Eindeutige Namen -->
<xsd:unique name="uniqueIDs">
<xsd:selector xpath="./ort" />
<xsd:field xpath="./@pid"/>
</xsd:unique>
</xsd:element>
Mit freundlichem Gruß
Micha