我需要使用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模式定义文档范围的标识符?
答案 0 :(得分:3)
从xsd:string或xsd:token或xsd:NMTOKEN派生你的类型,而不是ID。 xsd:ID类型强制执行XML名称规则,因此要求值以namestart字符开头。
通过向适当的祖先元素添加xs:unique声明来恢复唯一性约束。