2011-05-17 112 views
3

我讀在W3C XML規範,並在attribute value normalization的部分,這部分引起了我的注意:XML屬性值規範化

如果屬性類型不是CDATA,那麼XML處理器必須進一步處理通過丟棄任何前導和尾隨空格(#x20)字符,並通過用一個空格(#x20)字符替換空格序列(#x20)字符來標準化屬性值。

這是否意味着

<tag attr=" a  b " /> 

相當於

<tag attr="a b" /> 

還是我誤解了規範說什麼?

回答

2

下面是一個例子,以補充@Per Norrman正確答案(+1),你在你的問題中使用的例子:

註釋的XML規範審議的細節時,對我幫助很大。

<!DOCTYPE tag [ 
<!ELEMENT tag EMPTY> 
<!ATTLIST tag 
      attr NMTOKENS #IMPLIED> 
]> 
<tag attr=" a  b "/> 

相當於

<!DOCTYPE tag [ 
<!ELEMENT tag EMPTY> 
<!ATTLIST tag 
      attr NMTOKENS #IMPLIED> 
]> 
<tag attr="a b"/> 

由於attr屬性類型爲NMTOKENS(複數)。

<!DOCTYPE tag [ 
<!ELEMENT tag EMPTY> 
<!ATTLIST tag 
      attr CDATA #IMPLIED> 
]> 
<tag attr=" a  b "/> 

這是因attr屬性類型爲CDATA:

然而因爲attr是文字文本(CDATA =字符數據)下面將不等同於NMTOKEN例子。