Frage

Ich habe versucht, alle <xs:all>, <xs:choice>, and <xs:sequence>

Beides hilft meinem Fall zufriedenstellend.

Weiß jemand, wie man so etwas wie dies bestätigen würde.

<Menu>  
   <SubMenu>
      <MenuItem .. />  
      <MenuItem .. />  
      <MenuItem .. />  
   </SubMenu>  
   <MenuItem .. >  
   <MenuItem .. >  
</Menu>

Dabei gilt, Unter dem <Menu> Tag <SubMenu> und / oder <MenuItem> kann beliebig oft auftreten (0-n) in beliebiger Reihenfolge. Aber atleast einer von ihnen muss mindestens einmal vorkommen.

Das Ignorieren Validierungen innerhalb SubMenu Tags.

ist dankbar für jede Hilfe in dieser Angelegenheit.

War es hilfreich?

Lösung

Wenn ich Ihre Anforderung verstanden habe richtig dann könnte man Phrase das Modell als „eine der SubMenu oder MenuItem, gefolgt von null oder mehr SubMenu oder MenuItem Elemente“. Das kann als eine Abfolge von zwei Möglichkeiten ganz einfach ausgedrückt werden:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <!-- whatever your element needs to be modelled as here -->
    <xs:element name="MenuItem">
        <xs:complexType>
            <xs:attribute name="text"/>
        </xs:complexType>
    </xs:element>

   <!-- only modelling the structure of the child elements here -->
    <xs:element name="SubMenu">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="1" maxOccurs="1">
                    <xs:element ref="MenuItem"/>
                    <xs:element ref="SubMenu"/>
                </xs:choice>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                    <xs:element ref="MenuItem"/>
                    <xs:element ref="SubMenu"/>
                </xs:choice>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="Menu">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="1" maxOccurs="1">
                    <xs:element ref="MenuItem"/>
                    <xs:element ref="SubMenu"/>
                </xs:choice>
                <xs:choice minOccurs="1" maxOccurs="unbounded">
                    <xs:element ref="MenuItem"/>
                    <xs:element ref="SubMenu"/>
                </xs:choice>
            </xs:sequence>          
        </xs:complexType>
    </xs:element>
</xs:schema>

Sie können diese mehr modellieren sauber mit einem gemeinsamen globalen Typ für Menüs und Untermenüs, aber diese Art und Weise ist relativ offensichtlich, dass ich Hoffnung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top