在我(生成的)文档文件中,我获得了一个以数字开头的ID / IDREF对(例如,015_code
具有xml:id / linkend属性,因此发出了警告(在这种情况下为XMLMind):
bad value for attribute "id" from namespace "http://www.w3.org/XML/1998/namespace"
在《简而言之XML》一书中,我读到:
ID号很棘手,因为数字不是XML名称,因此 不是合法的XML ID。普通解决方案在值之前加上一个 下划线或普通字母。
此解决方案对我有用,但是在查看示例015_code
时,这不是一个数字,所以我的问题是
答案 0 :(得分:1)
您的第一个要点是正确的; 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类型的值必须与Name产生的匹配。 Name不能 在XML文档中多次出现这种类型的值; 也就是说,ID值必须唯一标识承载它们的元素。
和
有效期约束:IDREF
IDREF类型的值必须与Name产生的值匹配,并且 类型IDREFS必须与名称匹配;每个名称必须与ID的值匹配 XML文档中某些元素的属性;即IDREF值必须 匹配某些ID属性的值。