XML-Schemas - substitutionGroup
watchout 11.10.2005 - 14:01 1138 9
watchout
Legendundead
|
Erstaunlich, wie gut sich Schemas lesen lassen Leider hab ich ein kleines Verständnisproblem noch - und zwar, wie wohl vermutet bei den substitution-groups (ab jetzt SG). Wenn ich das soweit richtig verstehe sind alle Members einer SG austauschbar. Wie ist das jetzt aber wenn eine SG genauso heisst wie ein Element (geht das überhaupt? Wenn nicht hab ich's wohl mit einem non-standard Schema hier zu tun, was ich mir eigentlich nicht vorstellen kann...) und dieses Element wieder der Member einer SG ist. Ein kleines Beispiel, ich habe hier mal alles (imho) unwichtige rausgenommen... <xs:element name="a" substitutionGroup="b"/>
<xs:element name="b" substitutionGroup="c"/>
<xs:element name="c" substitutionGroup="d"/>
<xs:complexType name="m">
<xs:complexContent>
<xs:sequence>
<xs:element ref="b"/>
</xs:sequence>
</xs:complexContent>
</xs:complexType>
Kann ich jetzt statt b auch a und c verwenden oder nur a oder nur c? PS:Ich bitte die XML-Schema Fanatiker nicht über meinen Beispiel-Code herzufallen, es geht mir nur um mein Verständnis der Funktion der SG
Bearbeitet von watchout am 12.10.2005, 12:11
|
Rektal
Here to stay
|
Ich haeng mich in den Thread hier rein, hab aber eine andere Frage bezueglich XML-Schema Verwendet jemand XML-Schema als Richtliniengrundlage fuer Word 2003 um XML-Dateien zu bearbeiten? Ich hab schon einige viele Artikel durchgelesen und Beispiele gesehen, sobald es aber komplexer wird, gibts Probleme. Es geht auch um Darstellung, d.h. wie kann Word unterscheiden ob etwas als block oder inline dargestellt wird usw. Jemand das schon konkret in der Praxis eingesetzt? (sorry watchout )
|
watchout
Legendundead
|
und ich hab mich schon gefreut dass endlich wer antwortet
|
that
ModeratorHoffnungsloser Optimist
|
Ich werde mal die Profis fragen und dann berichten.
|
vossi
been there, done that
|
<xs:element name="a" substitutionGroup="b"/>
<xs:element name="b" substitutionGroup="c"/>
<xs:element name="d" substitutionGroup="e"/>
<xs:complexType name="m">
<xs:complexContent>
<xs:sequence>
<xs:element ref="b"/>
</xs:sequence>
</xs:complexContent>
</xs:complexType>
verstehe das Beispiel nicht ganz. Du hast das element b das du durch a ersetzen kannst, welchen Bezug zum Beispiel hat <xs:element name="d" substitutionGroup="e"/>
Oder welchen Sinn hat es dem Element b einer substitutionGroup zu-zuweisen? Grundsätzlich, und da denke ich gehts genau um deine Frage: Die Existenz einer Ersetzungsgruppe erfordert weder, dass irgendwelche Elemente aus dieser Klasse benutzt werden, noch schließt sie die Verwendung des Ursprungs-Elements aus. Ersetzungsgruppen schaffen lediglich die Möglichkeit, zu erlauben, dass Elemente untereinander austauschbar benutzt werden. hth und falls ich total falsch lieg, wenigstens hab ichs probiert
|
watchout
Legendundead
|
verstehe das Beispiel nicht ganz.
Du hast das element b das du durch a ersetzen kannst, welchen Bezug zum Beispiel hat [code.../code] Oder welchen Sinn hat es dem Element b einer substitutionGroup zu-zuweisen?
Grundsätzlich, und da denke ich gehts genau um deine Frage:
hth und falls ich total falsch lieg, wenigstens hab ichs probiert Ach, ich hab mich vertippt... sollte so sein: /Ich besser' das oben aus) <xs:element name="a" substitutionGroup="b"/>
<xs:element name="b" substitutionGroup="c"/>
<xs:element name="c" substitutionGroup="d"/>
<xs:complexType name="m">
<xs:complexContent>
<xs:sequence>
<xs:element ref="b"/>
</xs:sequence>
</xs:complexContent>
</xs:complexType>
Wobei das "d" jetzt andeuten kann dass es noch weiter gehen kann... Der Quote bringt mir garnix - is glaub ich sogar nur die Reference übersetzt. Ich probier's nochmal: Ich habe die SG "A" und "B" wobei es in "A" ein Element "B" drin gibt. Wird jetzt im Schema "A" verlangt, kann ich dann auch ein Element aus "B" einsetzen? ("A" kann durch "B" ersetzt werden, wofür ja wieder die Elemente aus "B" eingefügt werden könnten [theoretisch])
Bearbeitet von watchout am 12.10.2005, 12:11
|
vossi
been there, done that
|
hm denke da ist grundlegend was falsch. bei substitutionGroup="" gibst du nur an welches Element du zu ersetzen/ergänzen wünscht. dh. @ <xs:element ref="b"/>
dort kann stehen: b und a über die SG (SG=b) @ <xs:element name="a" substitutionGroup="b"/>
<xs:element name="b" substitutionGroup="c"/>
<xs:element name="c" substitutionGroup="d"/>
Sollte es ein element d irgendwo geben dann kann es durch c,b und a ersetzt werden (bzw. sollte) @ <xs:element name="b" substitutionGroup="c"/>
Es geht aber glaube ich nicht wenn du beim element b ne SG angibst das dann auch b durch c ersetzt werden kann.
|
watchout
Legendundead
|
Glaubst du oder weisst du? Glauben nutzt mir wenig Ich schätze ich werd mal auf der Uni fragen.
|
vossi
been there, done that
|
|
vossi
been there, done that
|
*bump* gibts schon antworten?
|