xsd игнорирует порядок элементов и maxOccurs unbound - PullRequest
0 голосов
/ 16 января 2020

Я хочу, чтобы мой xsd-файл совпадал с тегом xml внутри элементов, которые могут быть неограниченными и в другом порядке. Вот пример xml:

            <Root>                
                <List Name="ListNode">
                    <FirstNode Name="Test" />
                    <SecondNode />
                    <SecondNode />
                    <FirstNode Name="Test2" />
                    <ThirdNode />
                </List>

                <FirstNode Name="Test3" />
                <ThirdNode />
            </Root>

Вот мой xsd-файл:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <xsd:element name="Root">
        <xsd:complexType>
            <xsd:all>
                <xsd:element name="List">
                    <xsd:complexType>
                        <xsd:all>
                            <xsd:element name="FirstNode" >
                                <xsd:complexType>
                                    <xsd:attribute name="Name" type="xsd:string" use="required" />
                                </xsd:complexType>
                            </xsd:element>
                            <xsd:element name="SecondNode" />
                            <xsd:element name="ThirdNode" />
                        </xsd:all>
                        <xsd:attribute name="Name" />
                    </xsd:complexType>
                </xsd:element>
                <xsd:element name="FirstNode" >
                    <xsd:complexType>
                        <xsd:attribute name="Name" type="xsd:string" use="required" />
                    </xsd:complexType>
                </xsd:element>
                <xsd:element name="SecondNode" />
                <xsd:element name="ThirdNode" />
            </xsd:all>
    </xsd:complexType>
    </xsd:element>
</xsd:schema>

Я думаю, что xsd: все не является тегом rigth. Кто-нибудь мне поможет?

1 Ответ

1 голос
/ 16 января 2020

Использование

<xs:choice maxOccurs="unbounded">
  <xsd:element name="FirstNode"/>
  <xsd:element name="SecondNode" />
  <xsd:element name="ThirdNode" />
</xs:choice>
...