如何使用XML Schema要求元素包含字符数据

时间:2010-08-05 15:40:04

标签: xml xsd

如果我有一个xml文档,例如:

<colors>  
    <color1>1452</color1>  
    <color2></color2>  
    <color3></color3>  
</colors>

我想在XML模式中定义,color1元素必须包含int类型的值,非null和非空。所以上面的例子是有效的,但如果color1像color2和color3那样是空的,那么它就会失败。我已经四处搜索,但似乎无法找到一种干净的方法来要求元素填充值。我错过了一些非常明显的东西吗?

3 个答案:

答案 0 :(得分:1)

您需要在架构中定义元素的类型,如下所示:

<xs:element name="color" type="xs:integer"/>

要约束元素的长度,请使用xs:restriction,如下所示。

<xs:element name="color">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:minLength value="5"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

请注意,我使用了一个字符串来表示类型。在手边,我不确定你是否可以使用minLength整数,但你可以使用xs:pattern的正则表达式。

答案 1 :(得分:0)

以下是进行类型检查的方法:

<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/>

因此,在您的情况下,您需要type="xs:integer"

您可以实际执行的不同限制非常广泛,例如正则表达式以及最小和最大整数值。更多信息here

编辑:here是您可能想要指定的不同数字类型的更多信息,而不仅仅是整数。

答案 2 :(得分:0)

对于属性,架构应具有:

<... use="required" type="..."/>
元素的

<xs:element minOccurs="1"/>