我讀在W3C XML規範,並在attribute value normalization的部分,這部分引起了我的注意:XML屬性值規範化
如果屬性類型不是CDATA,那麼XML處理器必須進一步處理通過丟棄任何前導和尾隨空格(#x20)字符,並通過用一個空格(#x20)字符替換空格序列(#x20)字符來標準化屬性值。
這是否意味着
<tag attr=" a b " />
相當於
<tag attr="a b" />
還是我誤解了規範說什麼?
我讀在W3C XML規範,並在attribute value normalization的部分,這部分引起了我的注意:XML屬性值規範化
如果屬性類型不是CDATA,那麼XML處理器必須進一步處理通過丟棄任何前導和尾隨空格(#x20)字符,並通過用一個空格(#x20)字符替換空格序列(#x20)字符來標準化屬性值。
這是否意味着
<tag attr=" a b " />
相當於
<tag attr="a b" />
還是我誤解了規範說什麼?
您的解釋是正確的,因爲'attr'類型是而不是 CDATA,但最有可能的是。 http://www.xml.com/axml/testaxml.htm
下面是一個例子,以補充@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
例子。