Gern stehe ich zur fachlichen Unterstützung in XML-Technologien, C#.NET, VisualBasic.NET und Java zur Verfügung. Sprechen Sie mich einfach an: Mail oder ☎ 0151 . 750 360 61


XML-Validierung: Wozu? / xs:choice

xs:choice

xs:choice

xs:choice bietet in der Regel mehrere Auswahloptionen für Childnodes an.

Das folgende XML-Schema deklartiert ein Element Sprachen, das entweder einen Childnode deutsch, englisch oder spanisch zulässt.

Wenn xs:choice so gestaltet ist, dass Sie aus mehreren Optionen nur eine einzige auswählen können (also zwei andere ausselektieren müssen), dann ist es nicht möglich, ein einziges XML-Dokument zu generieren, das alle drei Fälle zulässt. Das ist beispielsweise hier der Fall:


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">
    <xs:element name="Sprachen">
        <xs:complexType>
            <xs:choice>
                <xs:element ref="deutsch"/>
                <xs:element ref="englisch"/>
                <xs:element ref="spanisch"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:element name="deutsch" />
    <xs:element name="englisch" />
    <xs:element name="spanisch" />
</xs:schema>

XML-Schema-valide wäre hier also entweder dieses XML-Dokument:


<Sprachen>
    <englisch></englisch>    
</Sprachen>

... oder dieses:


<Sprachen>
    <deutsch></deutsch>    
</Sprachen>

... oder dieses:


<Sprachen>
    <spanisch></spanisch>
</Sprachen>

Dieses jedoch nicht:


<Sprachen>
    <deutsch></deutsch>
    <spanisch></spanisch>
</Sprachen>

Würden Sie jedoch mit maxOccurs="unbounded" eine mehrfache Auswahl zulassen, ...


<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">
    <xs:element name="Sprachen">
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="deutsch"/>
                <xs:element ref="englisch"/>
                <xs:element ref="spanisch"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:element name="deutsch" />
    <xs:element name="englisch" />
    <xs:element name="spanisch" />
</xs:schema>

pic/xs_choice.png

... so wäre das folgende XML-Dokument valide gegenüber dem XML-Schema. Hier haben Sie die Möglichkeit, ein einziges XML-Dokument zu generieren, das sämtliche Fälle (auch mehrfach) zulässt.


<Sprachen>
    <deutsch></deutsch>
    <spanisch></spanisch>
    <englisch></englisch>
    <deutsch></deutsch>
    <englisch></englisch>
    <spanisch></spanisch>
</Sprachen>

wg / 19. Dezember 2018



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/XSD3_9.html