是否允许XML属性值中的换行符?
问题描述:
我意识到它不是优雅或想要的,但它允许(在格式良好的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.... " />
但是我们有我们自己的XML解析器,我想知道的第一个例子是否允许格式良好的XML。
答
是的第一个例子是有效的。
答
仅限.NET: 如果您不确定目标字符串是否为有效xml属性(并通过代码提供此属性的值),则始终可以使用SecurityElement.Escape函数来转义无效字符。
根据该功能的描述,唯一的无效字符:
<
,>
,&
,'
,"
,这意味着(我的前辈写的),新行应好。
答
但是,根据W3C的建议,您的XML解析器应该将所有空白字符标准化为空格(0x20) - 因此您示例的输出将有所不同(您应该在输出上为“&#13” ; &#10;“,但在第一种情况下只有空格)。
的.NET的XDocument解析器接受这种预期,但属性值与空间,而不是换行返回,因为这将是文本你第二个例子。 (您的问题不是特定于.NET,但是我的示例数据是。我不知道这是否是通用标准或.NET功能的一部分。) –
2011-03-02 06:40:28
参见http://*.com/q/2004386/55452 – 2013-01-03 15:04:55