Hallo,
Ich habe folgendes Problem:
Ich habe eine xml Datei, in der mehrere referenzen vorkommen:
Ein Element "model" hat ein Attribut "id":
nun ist diese id eigentlich bekannt, und wir von anderen Elementen initialisiert:<element name="signal1">
...
<xsd:attribut name="id" type="xsd:string"/>
</xsd:element>
<element name="signal2">
jetzt soll mein id vom element model auf eine der drei signale zeigen. Es kann immer nur eine Signalart pro model vorkommen, also entweder signal1 oder signal2 oder signal3, wie kann ich mit key und keyref verweise erstellen?
Du könntest für die "id" (bei den signal-Elementen) den Typ xs:ID verwenden (natürlich mit den Beschränkungen die für XML-IDs gelten) und dann
<xsd:element name="model" >
<xsd:attribut name="id" type="xsd:IDREF"> nützen.
Mit key und keyref könntest du es so lösen:
Im _gemeinsamen_ Elternelement vom modul und signal sowhl key als auch keyref definieren
<xs:element name="parent">
<xs:element name="modul> ... </xs:element>
<xs:element name="signal1> ... </xs:element>
<xs:element name="signal3 type="signal3Typ />
...
<xs:key name="modul">
<xs:selector xpath="modul" />
<xs:field xpath="@id" />
</xs:key>
<xs:keyref name="signal" refer="modul">
<xs:selector xpath="signal1 | signal2 signal3" />
<xs:field xpath="@id" />
xs:keyref
</xs:element>
Grüße
Thomas