Ssascha Becker: XML "all"-Elemente und occurence

Hi!

ich habe das Problem, daß meine XML-Datei, welche zum Einlesen von Werten in ein C++-Programm dient bereits vorgegeben ist, da dies Bestandteil eines redesignes ist.
Soviel zum Umfeld, jetzt zum Problem:
Lt. definition des W3C darf in einem "all"-Element die Occurence der Elemente nur 0 oder 1 sein. Per Definition ist mir aber vorgegeben, daß es Elemente geben soll, die mehr als einfach vorkommen sollen. Dies dürfen aber keine "sequences" oder choices" sein!!!!
Hier mal ein Codeausschnitt aus dem hervorgehen soll, was ich erreichen will. Aber leider sagen hierzu sowohl Xerces als auch XMLSpy und TurboXML, daß dies (richtigerweise) nicht valide ist.

Vielen Dank für alternativ-Vorschläge oder Workarounds schon im Voraus,
Sascha

xs:all
  <xs:element name="WriteDirectionOfPropagation" type="xs:boolean" fixed="1" minOccurs="0" maxOccurs="10"/>
  <xs:element name="TriangleGrid" type="xs:boolean" fixed="1" minOccurs="0" maxOccurs="10"/>
  <xs:element name="OpticalPower" type="xs:boolean" fixed="1" minOccurs="0" maxOccurs="10"/>
  <xs:element name="WriteIntensity" type="xs:boolean" fixed="1" minOccurs="0" maxOccurs="10"/>
  <xs:element name="CreateSpotDiagram" type="xs:boolean" fixed="1" minOccurs="0" maxOccurs="10"/>
  <xs:element name="FindSpotDiagramCentroid" type="xs:boolean" fixed="1" minOccurs="0" maxOccurs="10"/>
  <xs:element name="WriteElectricField" type="xs:boolean" fixed="1" minOccurs="0" maxOccurs="10"/>
  <xs:element name="RelOPLViaChiefRay" type="xs:boolean" fixed="1" minOccurs="0" maxOccurs="10"/>
  <xs:element name="AbsOPLChiefRay" type="xs:boolean" fixed="1" minOccurs="0" maxOccurs="10"/>
  <xs:element name="CreatePolarizationMap" minOccurs="0" maxOccurs="10">
</xs:all>

  1. Hallo Sascha,

    Lt. definition des W3C darf in einem "all"-Element die Occurence der Elemente nur 0 oder 1 sein.

    Richtig, laut XML-Schema-Spec ist das nicht zulässig. Und somit wirst du auch mit XML-Schema nicht erreichen können, was du möchtest. Auch wenn es Chefs und Auftraggeber nicht gerne hören: "es geht nicht".

    Eine Möglichkeit evtl. eine Erweiterung Deines Schemas mit einer anderen Schemasprache, z.B. Schematron. Wie das in diesem konkreten Falle geht, kann ich Dir aber auch nicht sagen.

    Dieser Link hilft Dir vielleicht etwas weiter: http://www.xfront.com/ExtendingSchemas.pdf

    Gruß
    Franz