key und keyref
ghettoblaster
- xml
Hallo Leute
Ich habe folgendes Problem:
Ich habe eine xml Datei, in der mehrere referenzen vorkommen:
Ein Element "model" hat ein Attribut "id":
<xsd:element name="model" >
...
<xsd:attribut name="id" type="xsd:string">
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">
...
<xsd:attribut name="id" type="xsd:string"/>
</xsd:element>
<element name="signal3">
...
<xsd:attribut name="id" type="xsd:string"/>
</xsd:element>
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?
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
Nein so geht das leider nicht mit key und keyref, ich muss nämlich eigentlich mehrere keys erstellen und nicht mehrere keyrefs, und das mit den ID`s hat auch nicht geklappt, der sagt mir dann ne fehlermeldung wie: value ist ungültig oder so
So hat jetzt doch geklappt. Danke nochmals. Oh sorry hab einen anderen namen benutzt, um den thread zu öffnen, war da wohl ein bischen abgelenkt, ist mein icq name