XML 架构中的数字 ID 类型

Numeric ID type in XML schema

我需要使用 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 允许数字第一个字符的架构来定义文档范围的标识符?

从 xsd:string 或 xsd:token 或 xsd:NMTOKEN 中获取您的类型,而不是 ID。 xsd:ID 类型强制执行 XML 名称规则,因此要求值以名称开始字符开头。

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