我正在检查我是否可以在名称属性中安全地使用空格而且压倒性的共识(除了社区认为不正确的一个答案之外)是它很好,因为Name属性使用CDATA令牌而不是名称标记,或沿着这些行的东西。问题是我似乎无法找到实际意味着什么的信息。
什么是名称标记?如果name属性不使用,那么重点是什么?到底是什么令牌?我找到了一些关于这个问题的信息,但这一切似乎都在我的头上。
谢谢!
答案 0 :(得分:3)
可以将标记粗略地定义为表示某些内容并遵循特定模式的字符序列。您可能会在编程语言语法中找到此overview作为基本定义的良好开端。可以在the w3 site找到各种类型的受支持令牌,并列出如下:
CDATA是文档字符集和字符序列 可以包括字符实体。用户代理应该解释属性 值如下:用字符替换字符实体,忽略 换行,用一个空格替换每个回车或制表符。 用户代理可能会忽略CDATA中的前导和尾随空格 属性值(例如,“myval”可以被解释为“myval”)。 作者不应声明具有前导或尾随的属性值 白色空间。
对于某些带有CDATA属性值的HTML 4属性, 规范对法律价值观的集合施加了进一步的限制 对于可能无法由DTD表达的属性。
虽然STYLE和SCRIPT元素使用CDATA作为其数据模型, 对于这些元素,用户代理必须以不同方式处理CDATA。 必须将标记和实体视为原始文本并传递给 按原样申请。第一次出现的字符序列“
ID和NAME令牌必须以字母([A-Za-z])开头,可能是 后跟任意数量的字母,数字([0-9]),连字符(“ - ”), 下划线(“_”),冒号(“:”)和句点(“。”)。 IDREF和IDREFS 是对其他属性定义的ID令牌的引用。 IDREF是一个 单个标记和IDREFS是以空格分隔的标记列表。数 令牌必须包含至少一个数字([0-9])。
仅仅因为令牌被称为NAME并不一定意味着它是针对name属性的。这只是类似术语的巧合,name属性是与NAME SGML令牌分开的概念。如果查看Index of Attributes表,可以看到每个属性应该使用的标记类型。