XML Schema
Moni
- xml
Hallo,
ich möchte folgenden Typ definieren:
<xsd:complexType name="laplaceType">
xsd:sequence
<xsd:element name="metadata" type="metadataType" minOccurs="0" maxOccurs="1"/>
xsd:all
<xsd:element name="information-file" type="information-fileType" minOccurs="0" maxOccurs="1"/>
<xsd:element name="technical-help-file" type="information-fileType" minOccurs="0" maxOccurs="1"/>
<xsd:element name="tools-file" type="information-fileType" minOccurs="0" maxOccurs="1"/>
</xsd:all>
<xsd:element name="procedure" type="procedureType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="startup" type="startupType" />
<xsd:element name="interaction" type="statementsType" />
<xsd:element name="support" type="supportType"/>
</xsd:sequence>
</xsd:complexType>
Leider funktioniert xsd:all nicht, wenn es nicht an oberster Stelle im ContentModel steht
Hat vielleicht jemand eine Idee, wie ich das sonst ausdrücken könnte?
Vielen Dank schonmal
Moni
Hallo,
Leider funktioniert xsd:all nicht, wenn es nicht an oberster Stelle im ContentModel steht
Was heisst denn funktioniert nicht? Dein Beispieldokument validiert nicht gegen das Schema? Wie sieht denn das Beispieldokument aus? Wenn ich Dein Schema-Auschnitt richtig lese ist auch das Element <metadata> als Kindelement vor der all-Gruppe erlaubt. Das hier sollte also funktionieren:
~~~xml
<laplaceType>
<metadata/>
<information-file/>
<technical-help-file/>
<tools-file/>
</laplaceType>
Allerdings eben nur <metadata>, schließlich soll nach Deinem Schema der Inhalt von <laplaceType> eine Sequenz sein, die nur in dieser Ordnung sein darf.
> Hat vielleicht jemand eine Idee, wie ich das sonst ausdrücken könnte?
Ich weiss nicht wirklich, \_was genau\_ Du ausdrucken möchtest. Die Sequenz und damit die genaue Ordnung der Elemente scheint Dir wichtig zu sein; insofern muss die all-Gruppe nach <metadata> am Anfang der Kindelemente stehen. Ich weiss also nicht, was schief läuft.
Hast Du vielleicht aus Verzweiflung oder einem Missverständnis zu <xs:sequence> gegriffen? Ist Dir die Ordnung der Kindelemente eigentlich wurst? Wenn ja, dann kann XML Schema nicht wirklich ausdrücken, was Du willst oder nur unter Nöten. Ich mag RELAX NG.
Tim
Hallo,
ich möchte folgenden Typ definieren:
<xsd:complexType name="laplaceType">
xsd:sequence
<xsd:element name="metadata" type="metadataType" minOccurs="0" maxOccurs="1"/>
Leider funktioniert xsd:all nicht, wenn es nicht an oberster Stelle im ContentModel steht
Kann auch nicht: XML Schema verlangt, dass eine all-Gruppe als einziges Kind am Anfang eines Inhaltsmodells auftritt.
Hat vielleicht jemand eine Idee, wie ich das sonst ausdrücken könnte?
Umdenken und umschreiben.
Grüße
Thomas