如何对XML Schema Complex类型进行限制?

时间:2010-05-02 23:55:40

标签: xml xsd

我正在阅读有关w3cschools(http://www.w3schools.com/schema/schema_complex.asp)的教程,但他们似乎没有提及如何在复杂类型上添加限制。

比如我有这个架构。

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

现在我想确保名字长度不超过10个字符。我该怎么做?

我试图为firstname添加简单类型,但它说我不能这样做,因为我使用的是复杂类型。

那么我如何在文件中加上这样的限制,以便我给模式的人不要尝试将名字设为100个字符。

2 个答案:

答案 0 :(得分:5)

XSD可以有一些限制:

假设您想要firstName不超过10个字符。你将使用类似的东西:

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="10"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

对于更复杂的约束,我猜你必须做一些基于代码的检查。

答案 1 :(得分:3)

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="10"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

这解决了你的问题吗?