Mehrdeutigkeit des Inhaltsmodells in einem Schema

Vielleicht habe ich zu lange auf dieses Problem gestarrt, vielleicht gibt es keine Antwort; so oder so bin ich jetzt hier.

Ich versuche, eine Reihe möglicher Kombinationen in einer XSD zuzulassen, aber ich kann anscheinend keinen Ansatz finden, der keine Mehrdeutigkeit zur Folge hat.

Schnelle Repräsentation:

foo+ ( bar baz* | bar? baz+ qux* )
foo Wird benötigt (ein oder mehr)Obbar existiert,baz es ist optional (Null oder mehr)Obbaz existiert,bar es ist optional (Null oder Eins) undqux es ist optional (Null oder mehr)qux kann nicht existieren wennbaz ist nicht vorhanden

Mehrdeutigkeit entsteht gegebenfoo bar baz.

Mehrdeutiges XSD-Dokument:

<xs:element name="parent">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="foo" minOccurs="1" maxOccurs="unbounded" />
            <xs:choice>
                <xs:sequence>
                    <xs:element name="bar" minOccurs="1" maxOccurs="1" />
                    <xs:element name="baz" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
                <xs:sequence>
                    <xs:element name="bar" minOccurs="0" maxOccurs="1" />
                    <xs:element name="baz" minOccurs="1" maxOccurs="unbounded" />
                    <xs:element name="qux" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Bildschirmaufnahme für gutes Maß:

Jetzt beginne ich zu begreifen, dass dies möglicherweise nur eine Einschränkung des XSD-Inhaltsmodells ist. Der Grund für die Mehrdeutigkeit liegt auf der Hand; die lösung nicht so.

Kann jemand ein Mittel sehen, mit dem ich das zulassen kann; durch Umordnen der Elemente mithilfe eines Schemadesignmusters, um mehrdeutige Szenarien wie diese zu lindern?

Die Bedingungsabhängigkeit vonbar undbaz ist eindeutig das Problem, aber ich kann mir keinen anderen Weg vorstellen, dies zu tun.

Vielen Dank im Voraus Leute.

Bearbeiten: Ich lese gerade "Schema Component Constraint: Eindeutige Partikelzuordnung"in einem Versuch, eine Lücke zu finden. Jede andere vorgeschlagene Lesung willkommen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage