XML学习笔记2 命名空间 CDATA 编码

水深无声 2022-05-27 08:08 236阅读 0赞

XML高级

XML命名空间
提供避免元素命名冲突的方法,XML命名空间放置在元素的开始标签中,并遵循以下语法

  1. xmlns:namespace-prefix="namespaceURI"

当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。

例如:

  1. <h:table xmlns:h="http://www.w3.org/TR/html4/">
  2. <h:tr>
  3. <h:td>Apples</h:td>
  4. <h:td>Bananas</h:td>
  5. </h:tr>
  6. </h:table>
  7. <f:table xmlns:f="http://www.w3school.com.cn/furniture">
  8. <f:name>African Coffee Table</f:name>
  9. <f:width>80</f:width>
  10. <f:length>120</f:length>
  11. </f:table>

以上两个XML文档使用了相同的table元素,但由于使用了命名空间,因此同时使用两个文档时,不会造成解析冲突

为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。

  1. <table xmlns="http://www.w3.org/TR/html4/">
  2. <tr>
  3. <td>Apples</td>
  4. <td>Bananas</td>
  5. </tr>
  6. </table>

XML CDATA
所有 XML 文档中的文本均会被解析器解析,只有 CDATA 区段(CDATA section)中的文本会被解析器忽略
CDATA 部分由 “<![CDATA[” 开始,由 “]]>” 结束:

  1. <script> <![CDATA[ function matchwo(a,b){ if (a < b && a < 0) then { return 1; } else { return 0; } } ]]> </script>
  • CDATA 部分不能包含字符串 “]]>”。也不允许嵌套的 CDATA 部分。
  • 标记 CDATA 部分结尾的 “]]>” 不能包含空格或折行

XML编码
XML 文档可以包含非 ASCII 字符,比如法语。为了避免错误,需要规定 XML 编码,或者将 XML 文档存为 Unicode

  1. <?xml version="1.0" encoding="UTF-8"?> //单字节编码
  2. <?xml version="1.0" encoding="UTF-16"?> //双字节编码
  • 如果您的文件被保存为 Unicode/UTF-16,但是编码属性被指定为单字节编码(比如 Windows-1252、ISO-8859-1 或者 UTF-8)时,那么您就会得到将当前编码切换为不被支持的指定编码的错误消息。或者当您的文档被保存为单字节编码,但编码属性被指定为双字节编码(比如 UTF-16)时,也会得到这个错误消息。
  • 如果 XML 文档中的某个字符与编码属性不匹配,您就会得到在文本内容中发现非法字符的错误消息。通常,当 XML 文件中含有外国字符,且当文件使用类似记事本的单字节编码编辑器保存,以及没有指定编码属性时,您就会得到这个错误消息。

发表评论

表情:
评论列表 (有 0 条评论,236人围观)

还没有评论,来说两句吧...

相关阅读