Wertebereich
BigHeart
- xml
Hallo,
ich bin noch relativ neu mit XML (bzw. -Schema) und hab daher mal ne kurze Frage. Wie kann ich festlegen, dass in einem Element nur bestimmte Werte auftreten dürfen? Kleines Beispiel: Ich habe die Elemente Mutter und Vater. Nun möchte ich ein neues Element namens Eltern. Dies soll die Felder Mutter und Vater beeinhalten, aber die Werte für beide sollen denjenigen Werten aus den ersten beiden Elementen entsprechen.
WIe kann ich das realisieren? Nach langem googlen und lesen hab ich nur key und keyref gefunden, bin mir aber nicht 100%ig sicher ob das dafür ausreicht. Gibt es noch ne andere Möglichkeit dafür?
Gruß und Thx
BigHeart
Dies soll die Felder Mutter und Vater beeinhalten, aber die Werte für beide sollen denjenigen Werten aus den ersten beiden Elementen entsprechen.
Verstehe ich leider nicht ganz. Gib mal bitte ein Beispiel für eine XML-Struktur, die erlaubt sein soll.
Hi,
ich schiess mal ins Blaue ...
Du möchstest einen complexType mit Namen VaterType, einen mit Namen MutterType und einen weiteren complexType namens ElternType definieren.
Letzteres beinhaltet ein xs:all mit den Referenzen (oder den complexType's selbst) auf die complexType's "MutterType" und "VaterType" in Form <xs:element type="MutterType" name="Mutter" ... />.
Es gibt darüber hinaus sicherlich noch geschicktere Ansätze ...
Grüsse,
Frank
Hallo,
Ich verstehe deine Frage leider auch nicht wirklich.
Kannst du sie bitte nochmal formulieren?
Grüße
Thomas
Hallo nochma,
also sowas wie
<xs:element name="Mutter" ...</xs:element>
<xs:element name="Vater"...</xs:element>
<xs:element name="Eltern"
xs:complexType
xs:sequence
<xs:element ref="Mutter"/>
<xs:element ref="Vater"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Im Prinzip will ich überprüfen dass das Element Mutter bzw Vater aus Eltern die Werte annimmt, die es in den oberen Element gibt.
Also z.b. Anna und Maria sind Mütter. Wie kann ich dann sicherstellen, dass im unteren Element Eltern nur diese beiden vorkommen können bzw für diese beiden Möglichkeiten "wahr" ausgegeben wird und ansonsten "falsch"?
Hoffe ich konnte mich diesmal etwas besser ausdrücken.
Thx und Gruß
BigHeart
Hallo,
Im Prinzip will ich überprüfen dass das Element Mutter bzw Vater aus Eltern die Werte annimmt, die es in den oberen Element gibt.
Also z.b. Anna und Maria sind Mütter. Wie kann ich dann sicherstellen, dass im unteren Element Eltern nur diese beiden vorkommen können bzw für diese beiden Möglichkeiten "wahr" ausgegeben wird und ansonsten "falsch"?
Hoffe ich konnte mich diesmal etwas besser ausdrücken.
Ja, das war verständlicher :)
Aber die Antwort auf deine Frage lautet leider: es ist nicht möglich.
Du kannst zwar versuchen für den Inhalt vom <vater> und <mutter> im Schema eine Aufzählung von möglichen Werten anzugeben, aber das ist kein Weg den man wirklich gehen kann (und soll).
Grüße
Thomas
Hi Thomas,
Im Prinzip will ich überprüfen dass das Element Mutter bzw Vater aus Eltern die Werte annimmt, die es in den oberen Element gibt.
Also z.b. Anna und Maria sind Mütter. Wie kann ich dann sicherstellen, dass im unteren Element Eltern nur diese beiden vorkommen können bzw für diese beiden Möglichkeiten "wahr" ausgegeben wird und ansonsten "falsch"?
Hoffe ich konnte mich diesmal etwas besser ausdrücken.
Ja, das war verständlicher :)
Aber die Antwort auf deine Frage lautet leider: es ist nicht möglich.
Meinst du es ist nicht möglich das zu überprüfen oder dass es nicht möglich ist wahr oder falsch auszugeben? Oder beides?^^
Dann müsste ich ja ne Sprache höher gehen. Mit OWL (owl:someValues, was dem Existenzquantor entspricht) ist das ja glaub ich möglich. Geht das auch mit RDF? Aber dann muesste man das doch über ne EIgenschaft definieren mit domain/range?
Gruß und Danke
BigHeart
Hallo,
Aber die Antwort auf deine Frage lautet leider: es ist nicht möglich.
Meinst du es ist nicht möglich das zu überprüfen oder dass es nicht möglich ist wahr oder falsch auszugeben? Oder beides?^^
Nun, du kannst eine Überprüfung machen:
<xs:element name="nameDesElement_innerhalbDessen_Vater-und-Mutter_als_auch_Eltern_vorkommt">
<xs:key name="MV">
<xs:seletor xpath="Mutter|Vater" />
<xs:field xpath="." />
</xs:key>
<xs:keyref name="MVREF" refer="MV">
<xs:seletor xpath="Eltern/Mutter|Eltern/Vater" />
<xs:field xpath="." /
</xs:key>
</xs:element>
Ich bin nur nicht ganz sicher, ob dies ist was du wirklich wolltest.
Grüße
Thomas
Hallo nochma,
Hallo,
bin mir nicht sicher, ob es das Richtige ist, aber die XML-Schema-Dokumentation hat ein ähnliches Beispiel:
http://www.w3.org/TR/xmlschema-0/#specifyingKeysAndtheirRefs