一、XML 命名空间(XML Namespaces)XML 命名空间提供避免元素命名冲突的方法。 命名冲突在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。 假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的 元素,就会发生命名冲突。XML 解析器无法确定如何处理这类冲突。 使用前缀来避免命名冲突
table> 通过使用前缀,创建了两种不同类型的 元素。使用命名空间(Namespaces)来避免命名冲突这个 XML 文档携带着某个表格中的信息: 为 标签添加一个 xmlns 属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。xmlns:h="http://www./TR/表格">> xmlns:f="http://www./家具">> XML Namespace (xmlns) 属性XML 命名空间属性被放置于元素的开始标签之中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。 xmlns:namespace-prefix="namespaceURI" 注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。 统一资源标识符(Uniform Resource Identifier (URI))一串可以标识因特网资源的字符。 最常用的 URI 是用来标示因特网域名地址的统一资源定位器(URL)。 另一个不那么常用的 URI 是统一资源命名(URN)。 默认的命名空间(Default Namespaces)为元素定义默认的命名空间可以省去在所有的子元素中使用前缀的工作。 命名空间的实际应用XSL 样式表用于将 XML 文档转换为其他格式,比如 HTML。 XSL 文档中,非 HTML 的标签都有前缀 xsl,并由某命名空间标示。
二、XML CDATA所有 XML 文档中的文本均会被解析器解析。 只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。 PCDATAPCDATA 指的是被解析的字符数据(Parsed Character Data)。 当某个 XML 元素被解析时,其标签之间的文本也会被解析: 此文本也会被解析 因为 XML 元素可包含其他元素,就像 元素包含着另外的两个元素(first 和 last): BillGates 而解析器会把它分解为像这样的子元素: Bill Gates CDATACDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。 CDATA 部分由 "" 开始,由 "" 结束: CDATA 部分中的所有内容都会被解析器忽略 在 XML 元素中,"<" 和 "&" 是非法的。 "<" 会产生错误,因为解析器会把该字符解释为新元素的开始。 "&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。 某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。
上例中,解析器会忽略 CDATA 部分中的所有内容。 关于 CDATA 部分的注释:CDATA 部分不能包含字符串 "]]>"。 也不允许嵌套的 CDATA 部分。 标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。
三、XML 编码XML 文档可以包含非 ASCII 字符,比如法语。 为了避免错误,需要规定 XML 编码,或者将 XML 文档存为 Unicode。 Windows 记事本Windows 记事本默认会将文件保存为单字节的 ANSI (ASCII)。 可以“另存为”规定双字节 Unicode (UTF-16)。 1>将不包含任何 encoding 属性的 XML 文件保存为 Unicode : (若规定了单字节就会出错.) <?xml version="1.0"?> <note> <from>John</from> <to>George</to> <message>French: êèé</message> </note> 下面的编码,不会报错: <?xml version="1.0" encoding="windows-1252"?> <?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-16"?> 错误消息如果试图向 IE 中载入 XML 文档,可能会得到两种指示编码问题的错误: 在文本内容中发现非法字符XML 文档中的某个字符与编码属性不匹配。 1.XML 文件中含有外国字符,且当文件使用类似记事本的单字节编码编辑器保存,以及没有指定编码属性时,就会得到这个错误消息。 将当前编码切换为不被支持的指定编码编码属性与保存编码不匹配. 1.文件被保存为 Unicode/UTF-16,但是编码属性被指定为单字节编码(比如 Windows-1252、ISO-8859-1 或者 UTF-8)。 2.文档被保存为单字节编码,但编码属性被指定为双字节编码(比如 UTF-16)。 结论编码属性应当被指定为文档被保存时所使用的编码。 最好的避免错误的建议是: 使用支持编码的编辑器 确定编辑器使用的编码 在 XML 文档中使用相同的编码属性
|
|
来自: herowuking > 《XML》