在specification by W3c我似乎无法找到允许在XML文档中的属性值内出现的字符集的定义。XML属性中允许使用哪些字符?
- 是否与元素的文字内容相同?
- 或者它只是一个子集(不包括例如\ n)?
请引用规范中回答我的问题的部分。
在specification by W3c我似乎无法找到允许在XML文档中的属性值内出现的字符集的定义。XML属性中允许使用哪些字符?
请引用规范中回答我的问题的部分。
XML属性允许char data(即CDATA)。 See。
它们可以包含\n
,它必须编码为

(或等效的,
)。通常,当您设置属性值时,XML API会为您执行此操作。
There are non-compliant APIs不属于属性值中的换行符。这些API使得不可能保留换行符,因为它们直接插入它们。
如果属性包含文字换行符,像这样:
<elem attr="a
linebreak">
则该值是在分析阶段normalized,在该点,换行被转换成一个空间。
选项卡(	
)发生的情况也是如此 - 它可能存在于属性值中,但必须进行编码或在解析时进行标准化。
为了完整起见:由于一个相当短视的决定(恕我直言),文字>
字符允许在属性值(<
不是,但是)。我建议不要这样做。无论如何,大多数API都会插入转义表格>
。
谢谢你的伟大回答。关于< and >角色 - 我相信你在那里有一个错字。根据规范,<禁止>是允许的。 –
@Dušan当然,我错误地记得那一个。感谢指针,这是固定的。 – Tomalak
Section 2.3定义了常见的句法结构。特别是有一个AttValue
规则:
AttValue ::= '"' ([^<&"] | Reference)* '"'
| "'" ([^<&'] | Reference)* "'"
http://www.w3.org/TR/xml/#NT-AttValue是您正在寻找的产品,实际上它表示属性值可能包含任何字符,除了小于号,和号(除非是有效字符或实体引用的一部分)或者引号字符值(单引号属性可以包含双引号,双引号属性可以包含单引号,但反之亦然)。
Tomalamala指出,允许换行符为,但它们不会被解析器报告为换行符。
看看'Attribute'的产物,然后'AttValue',你应该有答案。 –
相关问题:[XML属性值中的换行符是否有效?](http://stackoverflow.com/questions/449627/are-line-breaks-in-xml-attribute-values-valid) – poke