100

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

例如

<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

4 回答 4

109

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

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

于 2009-01-16T06:12:16.853 回答
54

这是允许的,但是根据 W3C 的建议,您的 XML 解析器应将所有空白字符规范化为空格 (0x20) - 因此示例的输出会有所不同(您应该在“ ;",但在第一种情况下只有空格)。

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

于 2011-11-18T19:51:17.570 回答
3

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

根据这个函数的描述,唯一的无效字符是:

<, >, &, ',"

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

于 2011-11-15T09:38:18.300 回答
2

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

于 2009-01-16T06:09:14.253 回答