1

これに似たxmlのスキーマを作成しようとしています

<?xml version="1.0" encoding="ISO-8859-1"?>
<store>
    <book>title1</book>
    <poster>some text</poster>
    <poster>some text</poster>
    <book>title1</book>
    <poster>some text</poster>
</store>

「book」タグと「poster」タグを最小 0 回、最大回数無制限で表示できるようにする complexType がスキーマにあるかどうかを知りたいです。本、ポスター、本のポスター、ポスターのようなカジュアルな順序で表示できるようにする必要があります。

私は単にシーケンスを入れて、このようなスキーマを書くことはできませんでしたが

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

    <xs:element name="store" type="TStore"/>

    <xs:complexType name="TStore">
        <xs:element name="book" type="xs:string" maxOccurs="unbounded"/>
        <xs:element name="poster" type="xs:string" maxOccurs="unbounded"/>
    </xs:complexType>
</xs:schema>

しかし、これは有効なスキーマではありません。"xs:all" は、本とポスターのタグがカジュアルな順序で表示される場合に適していますが、1 回だけです。どうすれば修正できますか?編集: maxOccurs="unbounded" を指定した xs:choice はうまく機能します。

また、このような単純な繰り返しにシーケンスが必要な理由もわかりません。いくつかのチュートリアルを参照しましたが、この単純なケースのリファレンスが見つかりません。

<?xml version="1.0" encoding="ISO-8859-1"?>
<tags>
    <tag>text1</tag>
    <tag>text2</tag>
    <tag>text3</tag>
</tags>

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="tags" type="complexType">
        <xs:sequence>
            <xs:element name="tag" type="xs:string" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:element>
</xs:schema>
4

1 に答える 1

1

また、このような単純な繰り返しにシーケンスが必要な理由もわかりません

これはあなたの実際の質問ですか? 簡単な答えは、仕様がそれを要求しているということです。

より詳細な答えは、バリデーターが探すべきものの明確な仕様を望んでいるということです。は、その<xs:sequence>コンテンツがインスタンス ドキュメント内の期待される要素のシーケンスを表していることをバリデーターに明確に伝えます。like<xs:choice>は、含まれている要素の 1 つだけを表示する必要があることをバリデーターに伝えます。

于 2012-08-31T18:28:33.287 に答える