XML 命名空间

  • 目录

命名空间的作用


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

    命名空间的使用


    • 命名空间定义格式( XML Namespace (xmlns) 属性)
      • namespace-prefix: 定义的前缀标识
      • namespaceURI: 用于标示命名空间的地址

    xmlns:namespace-prefix=“namespaceURI”

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

    • 默认命名空间格式

    xmlns=“namespaceURI”

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

    • 示例
    
    
       
    	   
    		
    			4
    		
    	
       
    
    
    • 如上我定义了两个命名空间,一个是前缀h的,另一个是前缀s的。虽然两个table嵌套使用,但应用程序根据命名空间依旧能正确的解析。
    • 所以理论上你可以在一个xml文件中定义无数多个标识地址不同的命名空间。
    • 如果两个及两个以上的命名空间,且它们两两嵌套使用时,至多只有一个命名空间可以设置为默认的命名空间。

    参考


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

你可能感兴趣的:(xml格式)