0

さて、XML スキーマを使用して、次の種類の xml ファイルを検証しています: (かっこが実際には山かっこであると仮定してください)。

<root>
   <A>
      <B></B>
      <C></C>
   </A>
</root>

非常に単純です->キャッチを除いて、コメント要素も必要です。これは、任意の順序で無制限に発生する可能性があります(別のコメント内のコメントではない場合)。したがって、次のコード サンプルも有効です。

<root>
   <comment />
   <A>
      <comment />
      <B>
         <comment />
      </B>
      <comment />
      <C></C>
      <comment />
   </A>
      <comment />
</root>

最初に、最初のツリーに課せられた厳密な構造がありました。つまり、B と C は一度出現しなければならず、B が最初に来なければなりません。より複雑な例に取り組むためにこのスケールを実行する方法を思いつくことはできません。何か案は?

どうもありがとう

4

1 に答える 1

0

次の例のように拡張機能を使用できますが、それでは各要素の先頭にのみコメントを追加できます。どこにでもコメントが必要な場合は、スキーマ内のすべてのシーケンスのコメントを参照せずにシーケンスの順序を保持する方法がわかりません...

<xs:element name="comment" type="xs:string"/>
<xs:complexType name="commentable">
    <xs:sequence>
        <xs:element maxOccurs="unbounded" minOccurs="0" ref="comment"/>
    </xs:sequence>
</xs:complexType>
<xs:element name="root">
    <xs:complexType>
        <xs:complexContent>
            <xs:extension base="commentable">
                <xs:sequence>
                    <xs:element ref="A"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
</xs:element>
<xs:element name="A">
    <xs:complexType>
        <xs:complexContent>
            <xs:extension base="commentable">
                <xs:sequence>
                    <xs:element ref="B"/>
                    <xs:element ref="C"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
</xs:element>
<xs:element name="B">
    <xs:complexType mixed="true">
        <xs:complexContent>
            <xs:extension base="commentable"/>
        </xs:complexContent>
    </xs:complexType>
</xs:element>
<xs:element name="C">
    <xs:complexType mixed="true">
        <xs:complexContent>
            <xs:extension base="commentable"/>
        </xs:complexContent>
    </xs:complexType>
</xs:element>
于 2010-09-09T13:54:42.883 に答える