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

我意识到这不是优雅或想要的,但它允许(在格式良好的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....
" /> 

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

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

似乎说除了<& ,和你的分隔符( '" )都可以,所以换行符也应该是。

这是允许的,但根据W3C的build议,你的XMLparsing器应该规范化所有的空格字符到空格(0x20) – 所以你的例子的输出将有所不同(你应该在“&#13;&#10 ;“,但在第一种情况下只有空间)。

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

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

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

<>&'"

这意味着(正如我的前任写的),新的路线应该是可以的。

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