繁体   English   中英

ID / IDREF 的 Docbook / XML 限制

[英]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 不能以数字开头
  • 这可能是 XMLMind 中的错误吗

你的第一个要点是正确的; 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM