Micha: (XSD) Eindeutige Daten in NodeList

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

  1. 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