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>

当然,它可能是“Blablabla”而不是“Rule1”。我知道我不能输入通配符或问号,所以我请你帮忙。

4

1 回答 1

1

我认为你将不得不重新组织元素。

而不是拥有不同的元素......

<Rule0 />
<Rule1 />

你可以写...

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

将元素视为描述所有规则属性的类,而不是描述单个规则属性的对象。

于 2013-02-08T11:56:09.910 回答