none
请教一xml schema写法 RRS feed

  • 问题

  • 我需要为一xml节点写schema文档,这个节点带一个属性,节点的为受限的简单内容,如下:

    <bookMark category="1">Mark1</bookMark> 

    其中category为必须有的属性,属性内容为大于1小于10的值。Mark1为节点内容,节点内容限定为Mark1、Mark2、Mark3这三项之一,不能填其它内容。

    我试着用如下写法:

    <xs:element name="bookMark">
      <xs:complexType>
        <xs:simpleContent>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Mark1" />
            <xs:enumeration value="Mark2" />
            <xs:enumeration value="Mark3" />
            <xs:attribute name="category">
              <xs:simpleType>
                <xs:restriction base="xs:int">
                  <xs:minInclusive value="1" />
                  <xs:maxInclusive value="10" />
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
          </xs:restriction>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>

    但会收到一个错误:xs:string是简单类型,不能去限定复杂类型。

    请教各位大侠,怎么写才能完成我的需求?

    Wantal

    2013年6月13日 9:01

答案

  • 找到写法了:

    <xs:simpleType name="contentType">
      <xs:restriction base="xs:string">
        <xs:enumeration value="Mark1" />
        <xs:enumeration value="Mark2" />
        <xs:enumeration value="Mark3" />
      </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="attributeType">
      <xs:restriction base="xs:int">
        <xs:minInclusive value="1" />
        <xs:maxInclusive value="10" />
      </xs:restriction>
    </xs:simpleType>
      
    <xs:element name="bookMark">
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="contentType" >
            <xs:attribute name="category" type="attributeType" />
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>

    写在这儿吧,希望能帮到遇到相似问题的人。

    Wantal

    • 已标记为答案 Wantal 2013年6月14日 6:21
    2013年6月14日 6:20