我读在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
例子。