Validierung von XML mit XSDs… aber trotzdem Erweiterbarkeit zulassen

Vielleicht bin ich es, aber es scheint, dass, wenn Sie eine XSD haben

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="User">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="GivenName" />
                <xs:element name="SurName" />
            </xs:sequence>
            <xs:attribute name="ID" type="xs:unsignedByte" use="required" />
        </xs:complexType>
    </xs:element>
</xs:schema>

das definiert das Schema für dieses Dokument

<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
    <GivenName></GivenName>
    <SurName></SurName>
</User>

Es kann nicht überprüft werden, wenn Sie ein weiteres Element hinzufügen, z. B. EmailAddress, und die Reihenfolge verwechseln.

<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
    <SurName></SurName>
    <EmailAddress></EmailAddress>
    <GivenName></GivenName>
</User>

Ich möchte dem Dokument keine E-Mail-Adresse hinzufügen und möchte, dass diese als optional gekennzeichnet ist.

Ich möchte nur eine XSD, die die Mindestanforderungen überprüft, die das Dokument erfüllen muss.

Gibt es eine Möglichkeit, dies zu tun?

BEARBEITEN

marc_s wies darauf hin, dass Sie @ verwenden könnxs:any Innenxs:sequence Um mehr Elemente zuzulassen, müssen Sie leider die Reihenfolge der Elemente beibehalten.

Alternativ kann ich @ verwendxs:all was die Reihenfolge der Elemente nicht erzwingt, aber leider nicht erlaubt mir, @ zu platzierxs:any drinnen.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage