Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > XSD -> XML с последовательностью разных элементов


Автор: Aldegid 22.3.2012, 13:45
Мне нужно получить xml вроде следующего
Код

    <BalloonSequence>
      <Balloon name="Straight simpy" count="1"/>
      <BalloonGroup name="BalloonGroup1" count="5"/>
      <Balloon name="Straight simpy" count="2"/>
      <Balloon name="Straight fast" count="1"/>
      <BalloonGroup name="BalloonGroup2" count="3"/>
      <Balloon name="FirstBoss" count="1"/>
    </BalloonSequence>


то есть элементы <Balloon> и <BalloonGroup> внутри элемента <BallonSequence> могут встречаться в любой последовательности сколько угодно раз. 
Вопрос простой: как написать XSD схему, описывающую такую возможность?

Автор: LSD 22.3.2012, 14:12
Как-то так
Код

<xs:complexType name="BallonSequence">
    <xs:sequence>
        <xs:element name="Balloon" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
                <xs:attribute name="name" type="xs:string"/>
                <xs:attribute name="count" type="xs:int"/>
            </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>

Автор: Aldegid 22.3.2012, 20:35
Так в элементе <BalloonSequence> будут только элементы <Balloon>, а мне нужно, чтобы вдобавок к ним ещё и элементы <BalloonGroup>, в произвольном порядке с произвольным количеством.
Или так невозможно?

Автор: LSD 23.3.2012, 14:28
Код

<xs:complexType name="BallonSequence">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="BalloonGroup">
            <xs:complexType>
                <xs:attribute name="name" type="xs:string"/>
                <xs:attribute name="count" type="xs:int"/>
            </xs:complexType>
        </xs:element>
        <xs:element name="Balloon">
            <xs:complexType>
                <xs:attribute name="name" type="xs:string"/>
                <xs:attribute name="count" type="xs:int"/>
            </xs:complexType>
        </xs:element>
    </xs:choice>
</xs:complexType>

Автор: Aldegid 23.3.2012, 18:52
Да, спасибо. Заработало.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)