我意识到它不优雅或不合适,但允许(在格式良好的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.... " />
但我们有自己的XML解析器,我想知道第一个例子是否在格式良好的XML中被允许。
答案 0 :(得分:96)
http://www.w3.org/TR/REC-xml/#NT-AttValue
似乎说除<
,&
以及您的分隔符('
或"
)之外的所有内容都可以。所以新行也应该是。
答案 1 :(得分:47)
但是根据W3C的建议,你的XML解析器应该将所有空格字符规范化为空格(0x20) - 所以你的例子的输出会有所不同(你应该在输出上有一个新行“&amp;#13 ;&amp;#10;“,但在第一种情况下只有空格。”
答案 2 :(得分:3)
仅限.NET: 如果您不确定目标字符串是否为有效的xml属性(并通过代码提供此属性的值),则始终可以使用SecurityElement.Escape函数来转义无效字符。
根据此功能的描述,唯一无效的字符是:
<
,>
,&
,'
,"
这意味着(正如我的前任所写),新的一行应该没问题。
答案 3 :(得分:2)
是的,第一个例子是有效的。