属性 [XML 标准]

通过属性可以使用名值对添加与元素有关的信息。属性经常用于为不属于元素内容的元素定义属性,尽管在某些情况下(例如 HTML img 元素),元素内容由属性值确定。

属性可以出现在开始标记中,也可以出现在空标记中,但是不能出现在结束标记中。语法类似如下所示:

<elementName att1Name="att1Value" att2Name="att2Value"...>

或:

<elementName att1Name="att1Value" att2Name="att2Value".../>

属性必须有名称和值。不允许没有值的属性名。元素不能包含两个同名的属性。因为 XML 认为属性在元素中出现的顺序并不重要,所以,XML 分析器可能会保留该顺序。

与元素名一样,属性名区分大小写,并且必须以字母或下划线开头。名称的其他部分可以包含字母、数字、连字符、下划线和句点。

备注

保留冒号供命名空间使用。有关哪些 Unicode 字符是可接受的字母和数字的更多信息,请参见 XML 规范的附录 B。

属性值必须遵循与正常文本内容相同的规则,并增加了一些限制。属性值只能包含文本,不能包含元素标记。属性值中允许包含实体引用和字符引用,但是不允许包含 CDATA 节。

最后,引号可能必须转义。XML 规范允许使用单引号或双引号指示属性,尽管属性值两侧所使用的引号类型必须相同。但是,属性值两侧必须使用引号。XML 分析器将简单地拒绝属性值两侧未使用引号的文档,并报告错误。

如果使用单引号指示属性值,必须在属性值内使用 &apos; 实体引用来表示单引号。

<myElement contraction='isn&apos;t' />

如果使用双引号指示属性值,必须在属性值内使用 &quot; 实体引用来表示双引号。

<myElement question="They asked &quot;Why?&quot;" />

但是,在加单引号的属性值中可以使用双引号,反之亦然,如下面的示例所示。

<myElement contraction="isn't" />
<myElement question='They asked "Why?"' />

也可以在同一元素中不同的属性值上使用不同类型的引号。

<myElement contraction="isn't" question='They asked "Why?"' />

与保留元素文本内容中的空白不同,XML 分析器不保留属性值中的空白。在可访问 DTD 的验证分析器中,任何非 CDATA 类型的特性值中的所有空白都将替换为单个空格;开始和结尾的空白将被去除。