XML 命名空间

不念不忘少年蓝@ 2022-04-14 03:49 339阅读 0赞
  • 目录

命名空间的作用


  • 命名空间的作用是避免xml中元素命名的冲突。举例来说我们都可以定义自己的元素名,元素在一个xml文件里面它的含义是表格,在另一个xml文件里可以把它定义为桌子。示例如下代码:表格里可以有、标签,桌子里可以有 椅子标签。如果这两个同名的不同意的含义放在一起使用,我们如何知道table 究竟是表格还是桌子?如果应用程序解析xml时,解析到table元素,要解析它是桌子还是表格?由命名空间来告诉你。

    1. --表格
    2. <table>
    3. <tr>
    4. <td>name</td>
    5. <td>age</td>
    6. </tr>
    7. </table>
    8. --桌子
    9. <table>
    10. <chair>4</chair>
    11. </table>

    命名空间的使用


    • 命名空间定义格式( XML Namespace (xmlns) 属性)

      • namespace-prefix: 定义的前缀标识
      • namespaceURI: 用于标示命名空间的地址

    xmlns:namespace-prefix=“namespaceURI”

    • 示例

      <?xml version=”1.0” encoding=”UTF-8”?>

      1. <h:td>name</h:td>
      2. <h:td>age</h:td>


    • namespaceURI是唯一的,两个xml文件中如果定义了相同的namespaceURI,代表了定义这个命名空间的元素及其子元素带有namespace-prefix前缀的元素是拥有相同含义的。

    • namespaceURI没有要求能够被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。
    • 所以如上只有table及table下的子元素含有h前缀的才是属于该命名空间下的元素,如果没有h前缀元素,则不属于该命名空间,不能按该命名空间的定义去解析该标签。
    • 通过这种方式,两个xml文件只需要为 table 定义各自的命名空间,程序就能根据命名空间“分辨”出这两个table不同的含义,按不同的算法去解析它们。
    默认的命名空间(Default Namespaces)

    • 默认命名空间格式

    xmlns=“namespaceURI”

    • 示例

      <?xml version=”1.0” encoding=”UTF-8”?>







      name age
    • 很明显我们看出了不同,少了前缀。定义了默认命名空间格式,定义该命名空间的元素及其子元素都归属于该命名空间之下。这样主要是为了方便xml书写。

    定义多个命名空间

    • 示例

      <?xml version=”1.0” encoding=”UTF-8”?>

      1. <h:td>
      2. <s:table xmlns:s="http://www.w3.org/SW/html4/">
      3. <s:chair>4</s:chair>
      4. </s:table>
      5. </h:td>


    • 如上我定义了两个命名空间,一个是前缀h的,另一个是前缀s的。虽然两个table嵌套使用,但应用程序根据命名空间依旧能正确的解析。

    • 所以理论上你可以在一个xml文件中定义无数多个标识地址不同的命名空间。
    • 如果两个及两个以上的命名空间,且它们两两嵌套使用时,至多只有一个命名空间可以设置为默认的命名空间。

    参考


    • http://www.w3school.com.cn/xml/xml_namespaces.asp

发表评论

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

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

相关阅读

    相关 XML和Schema命名空间详解

     XML和Schema具有无关平台,技术厂商,简单,规范统一等特点,极具开放性,所以使用极为广泛,而且使用简单,在XML和Schema和,个人认为比较不好理解的一点是其命名空间