2

xsd スキーマで xml を検証したいのですが、変更可能な名前を持つ要素の正しい xsd スキーマを作成する方法がわかりません。私のxml文書:

<Settings xmlns="main">
  <Object>
    <Rules>
      <Rule0>
        <Range>0 to 0</Range>
        <String>SomeString</String>
        <Integer>80</Integer>
        <Enabled>No</Enabled>
      </Rule0>
      <Rule0>
        <Range>0 to 0</Range>
        <String>SomeString</String>
        <Integer>80</Integer>
        <Enabled>No</Enabled>
      </Rule0>
    </Rules>
    <ObjectEnabled>No</ObjectEnabled>
  </Object>
</Settings

そして私のxsdドキュメント:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"           targetNamespace="main" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Settings">
<xs:complexType>
  <xs:sequence>
    <xs:element name="Object">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="Rules">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="?" maxOccurs="unbounded" minOccurs="0">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element type="xs:string" name="Range"/>
                      <xs:element type="xs:string" name="String"/>
                      <xs:element type="xs:byte" name="Integer"/>
                      <xs:element type="xs:string" name="Enabled"/>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element type="xs:string" name="ObjectEnabled"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
</xs:complexType>

もちろん、「Rule1」の代わりに「Blablabla」にすることもできます。名前のワイルドカードやクエスチョン マークを入力できないことは承知しておりますので、よろしくお願いいたします。

4

1 に答える 1

1

要素を少し再編成する必要があると思います。

異なる要素を持つ代わりに...

<Rule0 />
<Rule1 />

あなたは書くことができます...

<Rule name="rule0" />
<Rule name="rule1" />

要素は、単一のルールのプロパティを記述するオブジェクトではなく、すべてのルールのプロパティを記述するクラスと考えてください。

于 2013-02-08T11:56:09.910 に答える