使用限制定义元素和属性

时间:2014-12-24 13:05:48

标签: xml xsd

我需要定义具有可选属性的元素序列的XSD。我还需要限制元素和属性的字符串长度。使用以下代码我似乎无法定义'限制':

  <xs:element name="PeopleMentioned" minOccurs="0">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Person" minOccurs="1" maxOccurs="unbounded">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute name="PersonTopic" type="xs:string" />
              </xs:extension>
            </xs:simpleContent>                        
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

我需要限制“人物”的长度。和&#39; PersonTopic&#39;,就像通常用于简单类型一样:

  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="18" />
    </xs:restriction>
  </xs:simpleType>

1 个答案:

答案 0 :(得分:1)

要使用限制定义元素和属性,即PersonPersonTopic是最大长度为18的字符串:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            version="1.0">

  <xsd:element name="PeopleMentioned">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Person" minOccurs="1" maxOccurs="unbounded">
          <xsd:complexType>
            <xsd:simpleContent>
              <xsd:extension base="String18">
                <xsd:attribute name="PersonTopic" type="String18"/>
              </xsd:extension>
            </xsd:simpleContent>                        
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <xsd:simpleType name="String18">  
    <xsd:restriction base="xsd:string">  
      <xsd:maxLength value="18" />
    </xsd:restriction>  
  </xsd:simpleType>
</xsd:schema>