属性 [XML 标准]
通过属性可以使用名值对添加与元素有关的信息。属性经常用于为不属于元素内容的元素定义属性,尽管在某些情况下(例如 HTML img 元素),元素内容由属性值确定。
属性可以出现在开始标记中,也可以出现在空标记中,但是不能出现在结束标记中。语法类似如下所示:
<elementName att1Name="att1Value" att2Name="att2Value"...>
或:
<elementName att1Name="att1Value" att2Name="att2Value".../>
属性必须有名称和值。不允许没有值的属性名。元素不能包含两个同名的属性。因为 XML 认为属性在元素中出现的顺序并不重要,所以,XML 分析器可能会保留该顺序。
与元素名一样,属性名区分大小写,并且必须以字母或下划线开头。名称的其他部分可以包含字母、数字、连字符、下划线和句点。
备注
保留冒号供命名空间使用。有关哪些 Unicode 字符是可接受的字母和数字的更多信息,请参见 XML 规范的附录 B。
属性值必须遵循与正常文本内容相同的规则,并增加了一些限制。属性值只能包含文本,不能包含元素标记。属性值中允许包含实体引用和字符引用,但是不允许包含 CDATA 节。
最后,引号可能必须转义。XML 规范允许使用单引号或双引号指示属性,尽管属性值两侧所使用的引号类型必须相同。但是,属性值两侧必须使用引号。XML 分析器将简单地拒绝属性值两侧未使用引号的文档,并报告错误。
如果使用单引号指示属性值,必须在属性值内使用 ' 实体引用来表示单引号。
<myElement contraction='isn't' />
如果使用双引号指示属性值,必须在属性值内使用 " 实体引用来表示双引号。
<myElement question="They asked "Why?"" />
但是,在加单引号的属性值中可以使用双引号,反之亦然,如下面的示例所示。
<myElement contraction="isn't" />
<myElement question='They asked "Why?"' />
也可以在同一元素中不同的属性值上使用不同类型的引号。
<myElement contraction="isn't" question='They asked "Why?"' />
与保留元素文本内容中的空白不同,XML 分析器不保留属性值中的空白。在可访问 DTD 的验证分析器中,任何非 CDATA 类型的特性值中的所有空白都将替换为单个空格;开始和结尾的空白将被去除。