XML命名空间提供了避免元素命名冲突的方法。而XML CDATA允许我们在XML中添加不被XML解析器解析的数据。
2.1 XML命名空间
一般情况下,我们编写的XML文档都是:
XML文档1:
<table> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table>
XML文档2:
<table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table>
这样看好像不会有什么错误,但是如果在同一页面中同时引用这两个XML文档时,那么XML就无法分辨出两个XML文档中的<table>元素了,这样在用JS读取XML⽂档的时候就会出现错误。而XML命名控件(xmlns属性)可以作为元素的前缀避免元素冲突。当加上了命名空间后,XM文档就是这样的:
XML文档1:
<table xmlns="http://www.w3.org/TR/html4/"> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table>
XML文档2:
<table xmlns="http://www.w3school.com.cn/furniture"> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table>
xmlns属性仅仅作为一个表示,而没有什么实际的意义。不过,很多公司常常将xmlns作为指针来使用,将其指向实际存在的网页,这个网页包含关于命名空间的信息。
2.2 XML CDATA
当浏览器加载XML的时候,XML解析器对XML文档中的所有内容进行解析。但有时候我们有有些内容不希望被XML解析器解析,此时我们可以将这部分内容包含在由"<![CDATA[" 开始,由"]]>" 结束的文本内。
<script> <![CDATA[ ....... function matchwo(a,b) { if (a < b && a < 0) then { return 1; } else { return 0; } } ]]>....... </script>
我们将上面这部分不应由XML 解析器进行解析的文本数据(Unparsed Character Data)叫做:CDATA。相反,没有被包含在这里面的内容就叫做:PCDATA, 指的是被解析的字符数据(Parsed Character Data)。
总结:
· XML命名空间提供了避免元素命名冲突的方法,如:<table xmlns="http://www.w3.org/TR/html4/">。
· 而XML CDATA允许我们在XML中添加不被XML解析器解析的数据,使用"<![CDATA[" 开始,由"]]>" 包围起来即可。