[英]Docbook / XML restrictions for ID / IDREF
在我的(生成的)docbook 文件中,我得到了一个以数字015_code
的 ID / IDREF 对(比如015_code
具有 xml:id / linkend 属性,因此发出了警告(在这种情况下为 XMLMind):
bad value for attribute "id" from namespace "http://www.w3.org/XML/1998/namespace"
在“XML in a nutshell”一书中,我读到:
ID 编号很棘手,因为编号不是 XML 名称,因此不是合法的 XML ID。 正常的解决方案使用下划线或普通字母作为值的前缀。
这个解决方案对我015_code
,但是在查看我的示例015_code
这不是一个数字,所以我的问题是:
你的第一个要点是正确的; ID/IDREF 不能以数字开头。 该值必须是有效的Name ...
Names and Tokens
[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[5] Name ::= NameStartChar (NameChar)*
[6] Names ::= Name (#x20 Name)*
[7] Nmtoken ::= (NameChar)+
[8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*
从https://www.w3.org/TR/REC-xml/#sec-attribute-types ...
有效性约束:ID
类型 ID 的值必须与名称产生式匹配。 一个名称在 XML 文档中不能作为这种类型的值出现多次; 即,ID 值必须唯一标识承载它们的元素。
和
有效性约束:IDREF
IDREF 类型的值必须匹配 Name 产生式,IDREFS 类型的值必须匹配 Names ; 每个 Name 必须匹配 XML 文档中某个元素的 ID 属性值; 即 IDREF 值必须匹配某些 ID 属性的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.