Jan: xml-schema: key und keyref

Beitrag lesen

OK, ich weiss jetzt ungefähr wo mein Problem liegt. Den key zu erstellen ist noch einfach. Aber bei der richtigen keyref hakt es dann.

  
<xsd:element name="root" type="rootType">  
  
  <xsd:key name="myKey">  
    <xsd:selector xpath="a"/>  
    <xsd:field xpath="b/@name"/>  
    <xsd:field xpath="@name"/>  
  </xsd:key>  
  
  <xsd:keyref name="myRef1" refer="myKey">  
      <xsd:selector xpath="."/>  
      <xsd:field xpath="c/d/@id"/>  
      <xsd:field xpath="c/@context"/>  
    </xsd:keyref>  
  
  <xsd:keyref name="myRef2" refer="myKey">  
      <xsd:selector xpath="c"/>  
      <xsd:field xpath="d/@id"/>  
      <xsd:field xpath="@context"/>  
  </xsd:keyref>  
  
  <xsd:keyref name="myRef3" refer="myKey">  
      <xsd:selector xpath="c/d"/>  
      <xsd:field xpath="@id"/>  
      <xsd:field xpath="../@context"/>  
  </xsd:keyref>  
  
</xsd:element>  

myRef1 überprüft nur, ob das allererste d-Element im allerersten c-Element der Schlüsselbedingung genügt. Falls nicht gibt es eine schöne Fehlermeldung, falls doch werden alle anderen d-Elemente ignoriert.

myRef2 überprüft für jedes c-Element, ob das erste d-Element die Schlüsselbedingung erfüllt. Falls nicht gibt es die Fehlermeldung, falls doch werden alle weiteren d-Elemente in diesem c-Element ignoriert.

Ich muss also offensichtlich mit dem Selektor direkt auf das d-Element zeigen, damit alle Elemente überprüft werden. Wenn ich es so versuche wie in myRef3, dann bekomme ich aber die Fehlermeldung:

c-general-xpath: The expression '../@context' is not valid with respect to the XPath subset supported by XML Schema.

Aber irgendwie muss ich mit XPath mein xsd:field auf ein Attribut des unmittelbaren Eltern-Element des im Selektor ausgewählten Elements verweisen lassen. Kann man nicht irgendwo nachlesen, welches Subset von XPath in XML Schema erlaubt ist?

Grüße Jan