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

Cod*_*ats 88 xml xml-parsing

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

例如

<some-xml-element value="this value goes over....
multiple lines!" />
Run Code Online (Sandbox Code Playgroud)

是的,我意识到有更好的写作方式.我个人会写它:

<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>
Run Code Online (Sandbox Code Playgroud)

要么:

<some-xml-element value="this value goes over....&#13;&#10;" />
Run Code Online (Sandbox Code Playgroud)

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

der*_*ert 98

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

似乎说除了<,&和你的分隔符('")之外的一切都没问题.所以换行也应该如此.

  • 在属性中新行是个好主意的一个例子是Spring配置中的xsi:schemaLocation属性,它可以包含由空格分隔的多个URL,因此比屏幕宽度长得多. (6认同)
  • 它是有效的,但是解析器会将它们标准化为空间,[正如Jan Cetkovsky所说](http://stackoverflow.com/a/8188290/611007). (3认同)

小智 49

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

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