How to declare an element a *, b ?, (a | b) in XSD

1

I want to say how this statement would be in DTD to XSD

 <!ELEMENT ejemplo (a*, b)> <!ELEMENT ejemplo (a, b?)> <!ELEMENT ejemplo (a | b)>

I hope you can help me

    
asked by Ronald Sanchez 13.06.2017 в 14:22
source

1 answer

2

I changed the names of the elements to use the 3 at a time.

<!ELEMENT ejemplo1 (a*, b)> <!ELEMENT ejemplo2 (a, b?)> <!ELEMENT ejemplo3 (a | b)>

In XSD it would be as follows:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="ejemplo1">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="a" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element ref="b"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ejemplo2">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="a"/>
                <xs:element ref="b" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ejemplo3">
        <xs:complexType>
            <xs:choice>
                <xs:element ref="a"/>
                <xs:element ref="b"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:element name="b">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="a">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
    
answered by 13.06.2017 / 15:00
source