要素が繰り返されたときにXSDファイルの要素のリストを定義するのに問題
-
27-10-2019 - |
質問
XMLを検証するためにXSDファイルを書き込もうとしています。これがXMLのサンプルです
<Record xmlns="http://example.com/FixedBinaryFile.xsd" Name="Clients">
<Padding Size="5">
<RecordEntry Name="Foo1" DataType ="Char"/>
<RecordEntry Name="Foo2" DataType="AnsiString" MaxSize="8"/>
<RecordEntry Name="Foo3" DataType="AnsiString" MaxSize="25"/>
<Padding Size="2"/>
<RecordEntry Name="Foo4" DataType="Byte"/>
<Padding Size="1"/>
<RecordEntry Name="Foo5" DataType="UInt16"/>
<RecordEntry Name="Foo6" DataType="AnsiString" MaxSize="3"/>
<RecordEntry Name="Foo7" DataType="AnsiString" MaxSize ="3"/>
<Padding Size="22"/>
</Record>
そして、ここにそれを定義するXSDがあります
<xs:element name="Record">
<xs:complexType>
<xs:sequence>
<xs:element name="RecordEntry" type="RecordEntry" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="Padding" type ="PaddingEntry" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Name" type="xs:string" use ="required"/>
</xs:complexType>
</xs:element>
私の問題はです sequence
私が好きな場所にパディングエントリを置くことを許可しません(今私は多くのことができます RecordEntry
私が望むと同じくらい多くのエントリが続きます Padding
必要に応じてエントリ)。
私の無邪気な考えは使用することでした all
シーケンスの代わりに。しかし、それは私を使用させません all
と maxOccurs
リストを正しく定義するために何をする必要がありますか?
編集:Freekはそれを正しく持っていました、ここに私がそれを機能させるためにそれを変えなければならなかったものがあります。
<xs:element name="Record">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="Padding" type ="PaddingEntry" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="RecordEntry" type="RecordEntry" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Name" type="xs:string" use ="required"/>
</xs:complexType>
</xs:element>
解決
また、XS:シーケンスにMinoccursとMaxoccursを設定することもできます。適切な値(おそらくMinoccurs = "0" maxoccurs = "unbounded")に設定することもできます。
所属していません StackOverflow