Hallo,
aaaaaah, danke. Und wenn es dann doch ein Element <Person></Person> sein soll? so?
<xs:keyref name="PersonID2" refer="PersonID">
<xs:selector xpath="Bestellung"/>
<xs:field xpath="Person"/>
</xs:keyref>Ja, genau so.
NEIN, XMLSpy will das aber nicht so. Im XML-Schema ist das so ok, wenn ich aber eine XML-Datei gegen dieses Schema prüfen lasse, kommt:
"Diese Datei ist nicht gültig: Der <keyref> Identity Contraint 'PersonID2' ergab keinen Treffer im Geltungsbereich des Elements 'Bestellungen'. Der referenzierte Identity Contraint 'PersonID' befindet sich außerhalb des Geltungsbreichs."
So sieht das ganze im XML-Schema aus:
<xs:element name="Bestellungen">
xs:complexType
xs:sequence
<xs:element name="Bestellung">
xs:complexType
xs:sequence
<xs:element name="Person"/>
</xs:sequence>
<xs:attribute name="Person" type="xs:positiveInteger"
use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:keyref name="PersonID2" refer="PersonID">
<xs:selector xpath="Bestellung"/>
<xs:field xpath="Person"/>
</xs:keyref>
</xs:element>
Wieso ist das falsch? Ich wähle in selector das Element Bestellung aus und das Unterelement Person ist das field, was gemeint ist.