是否允许XML属性值中的换行符?

时间:2009-01-16 05:57:13

标签: xml xml-parsing

我意识到它不优雅或不合适,但允许(在格式良好的XML中)XML元素中的属性值跨越多行吗?

e.g。

<some-xml-element value="this value goes over....
multiple lines!" />

是的,我意识到有更好的写作方式。我个人会这样写:

<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>

或:

<some-xml-element value="this value goes over....&#13;&#10;" />

但我们有自己的XML解析器,我想知道第一个例子是否在格式良好的XML中被允许。

4 个答案:

答案 0 :(得分:96)

http://www.w3.org/TR/REC-xml/#NT-AttValue

似乎说除<&以及您的分隔符('")之外的所有内容都可以。所以新行也应该是。

答案 1 :(得分:47)

但是根据W3C的建议,你的XML解析器应该将所有空格字符规范化为空格(0x20) - 所以你的例子的输出会有所不同(你应该在输出上有一个新行“&amp;#13 ;&amp;#10;“,但在第一种情况下只有空格。”

http://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize

答案 2 :(得分:3)

仅限.NET: 如果您不确定目标字符串是否为有效的xml属性(并通过代码提供此属性的值),则始终可以使用SecurityElement.Escape函数来转义无效字符。

根据此功能的描述,唯一无效的字符是:

<>&'"

这意味着(正如我的前任所写),新的一行应该没问题。

答案 3 :(得分:2)

是的,第一个例子是有效的。