我需要为一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="9" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>
但会收到一个错误:xs:string是简单类型,不能去限定复杂类型。请教各位大侠,怎么写才能完成我的需求?

解决方案 »

  1.   

    找到答案了。<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>写在这儿吧,希望能帮到遇到相似问题的人。