Xml 使用限制定义元素和属性

Xml 使用限制定义元素和属性,xml,xsd,Xml,Xsd,我需要定义XSD,它具有带有可选属性的元素序列。我还需要限制元素和属性的字符串长度。使用以下代码,我似乎无法定义“限制”: <xs:element name="PeopleMentioned" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Person" minOccurs="1" maxOccurs="unbounded">

我需要定义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>

我需要限制“Person”和“PersonTopic”的长度,就像通常对简单类型所做的那样:

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

定义具有限制的元素和属性,即
Person
PersonTopic
是最大长度为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>


谢谢@kjhughes。我需要两个单独的长度,但根据你的回答,我定义了两个简单的类型(String18和String50)。我编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。