XML Schema,用于验证具有任何名称的元素,并具有任何名称和受限属性值的嵌套元素

时间:2017-12-30 19:07:59

标签: xml xsd

给定XML数据:

<MyRootNode>
  <NodeY>
    <MyYNode Category="SomeCategory" />
    <AnotherYNode Category="AnotherCategory" />
    <YetAnotherYNode Category="NodeX" />
  </NodeY>
  <NodeX>
    <MyXNode Category="SomeCategory" />
    <AnotherXNode Category="AnotherCategory" />
    <YetAnotherXNode Category="NodeY" />
  </NodeX>
</MyRootNode>

我想定义暗示的XML模式:

  • MyRootNode是固定名称
  • NodeYNodeX等是1 st -level嵌套元素的变量/任何名称
  • MyYNodeAnotherYNodeMyXNodeAnotherXNode等也是2 nd -level嵌套元素的变量/任何名称
  • 2个 nd -level元素中属性Category的值是SomeCategoryAnotherCategoryNodeXNodeY之一,但不能在元素中具有递归引用,例如在NodeX下,不能有<Name>.Category的节点本身具有值NodeX,但可以有NodeY或任何其他1 st -level节点名称

我尝试过:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="CategoryTypes" final="restriction" >
    <xs:restriction base="xs:string">
      <xs:enumeration value="SomeCategory" />
      <xs:enumeration value="AnotherCategory" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="MyRootNode">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="???" maxOccurs="unbounded" minOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="???" maxOccurs="unbounded" minOccurs="1"/>
            </xs:sequence>
            <xs:attribute type="CategoryTypes" name="Category"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

但不确定如何使名称变量值为???并在CategoryTypes中包含1个 st 级别的节点名称。

0 个答案:

没有答案