XML模式中的数字ID类型

时间:2015-01-08 15:54:25

标签: xml xsd

我需要使用XML模式定义具有给定模式的ID类型。到目前为止我所拥有的是:

  <xs:simpleType name="myid">
    <xs:restriction base="xs:ID">
      <xs:pattern value="[A-Za-z0-9_-]+"/>
    </xs:restriction>
  </xs:simpleType>

除了例如, <myid>00123_45678<myid>未验证。显然,基类型xs:ID要求其值为XML非限定名称(xs:NCName)。特别是,ID可能不以数字开头。

是否有另一种方法可以使用允许数字第一个字符的XML模式定义文档范围的标识符?

1 个答案:

答案 0 :(得分:3)

从xsd:string或xsd:token或xsd:NMTOKEN派生你的类型,而不是ID。 xsd:ID类型强制执行XML名称规则,因此要求值以namestart字符开头。

通过向适当的祖先元素添加xs:unique声明来恢复唯一性约束。