2009-01-16 41 views
81

我意識到它不是優雅或想要的,但它允許(在格式良好的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....&#13;&#10;" /> 

但是我們有我們自己的XML解析器,我想知道的第一個例子是否允許格式良好的XML。

+0

的.NET的XDocument解析器接受這種預期,但屬性值與空間,而不是換行返回,因爲這將是文本你第二個例子。 (您的問題不是特定於.NET,但是我的示例數據是。我不知道這是否是通用標準或.NET功能的一部分。) – 2011-03-02 06:40:28

+1

參見http://stackoverflow.com/q/2004386/55452 – 2013-01-03 15:04:55

回答

2

是的第一個例子是有效的。

3

僅限.NET: 如果您不確定目標字符串是否爲有效xml屬性(並通過代碼提供此屬性的值),則始終可以使用SecurityElement.Escape函數來轉義無效字符。

根據該功能的描述,唯一的無效字符:

<>&'"

,這意味着(我的前輩寫的),新行應好。

45

但是,根據W3C的建議,您的XML解析器應該將所有空白字符標準化爲空格(0x20) - 因此您示例的輸出將有所不同(您應該在輸出上爲「&#13」 ; &#10;「,但在第一種情況下只有空格)。

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

相關問題