天天看点

关于XML中的名称空间

XML中的​名称空间​又被叫做​命名空间。

​名称空间的作用?​

为了解决不同领域的XML词汇的同名冲突和区分识别。(参考底下的示例)

​注意​:名称空间只存在逻辑意义,无法真正实现对URI的引用。

​名称空间的声明:​

放在元素(一般是根元素)的起始标签内,以类似属性的形式声明。

名称空间的声明将名称前缀和URI关联起来。

​名称空间的作用范围:​

只在​声明名称空间的元素​以及该元素所包含的​元素​和​属性​内有效。

(注意:​默认名称空间​不直接作用于属性)

声明名称空间的元素,称为​包容体​(Container)。名称空间和前缀的关联关系在包容体的范围内有效。

​名称空间的两种声明方式:​

1、​显式名称空间声明:​xmlns : 前缀名 = “某URI”

例如:<根元素 xmlns: xg =

           <xg:子元素  attName = “myname” />

2、​默认名称空间声明:​xmlns = “某URI”

它没有前缀名,所以在​包容体​内没有前缀名的XML元素和属性都属于默认名称空间。

例如:<根元素 xmlns

           <子元素 attName =“myname” />

​注意:​尽量只在​根元素​声明​默认​名称空间。若默认名称空间声明在​非根元素​,则容易被用户误解或忽略成没有名称空间的元素。所以,​非根元素​尽量​不使用​默认名称空间声明(推荐使用显式名称空间声明)。

​名称空间的声明注意:​

    * 双引号内必须是一个URI;

    * XML区分大小写,前缀名也不例外;

    * ​前缀名​建议采用英文缩写,也可以用中文(但不推荐用中文);

    * 尽量​避免同名前缀​却对应​不同URI​的名称空间的情况,它将容易误导用户;

    * 尽量在​根元素​中声明所有的名称空间;

    * 如果一个属性所在的元素属于某显式声明的名称空间,一般就不需要为该属性添加前缀。

​URI​ (Uniform Resource Identifier):统一格式资源标识符。

​URI 是 URL 和 URN 的超集。​

​URL​(Uniform Resource Locater,统一格式资源定位器):用于标记网络上某资源的位置,就是通常所说的网址。

​URN​(Uniform Resource Name,统一格式资源名称):表示Internet上某个持久(persistent)的资源,格式相对自由。如:“myURN: IT”表示本示例内部使用的名称。

​示例:​

IT部门使用.xml

<?xml version="1.0" encoding="GB2312" standalone="yes"?>

<资料>

   <设备 编号="联想6515b">

      <生产商>联想集团</生产商>

      <地址>北京市中关村127号</地址>

   </设备>

</资料>

建筑部门使用.xml

<?xml version="1.0" encoding="GB2312" standalone="yes" ?>

<资料>

   <设备 编号="中联F001">

      <生产商>中联重科</生产商>

      <地址>湖南省长沙市新开铺113号</地址>

   </设备>

</资料>

​错误的​部门融合.xml

关于XML中的名称空间
关于XML中的名称空间

<?xml version="1.0" encoding="GB2312" standalone="yes"?>

<资料>

   <设备 编号="联想6515b" 编号="中联F001">

      <设备名>笔记本</设备名>

      <生产商>联想集团</生产商>

      <地址>北京市中关村127号</地址>

      <设备名>起重机</设备名>

      <生产商>中联重科</生产商>

      <地址>湖南省长沙市新开铺113号</地址>

   </设备>

</资料>

​正确的​部门融合.xml

关于XML中的名称空间
关于XML中的名称空间

<?xml version="1.0" encoding="GB2312" standalone="yes"?>

<资料 xmlns:IT="http://www.lenovo.com" xmlns:建筑="myURN:中联">

   <设备 IT:编号="联想6515b" 建筑:编号="中联F001">

      <IT:设备名>笔记本</IT:设备名>

      <IT:生产商>联想集团</IT:生产商>

      <IT:地址>北京市中关村127号</IT:地址>

      <建筑:设备名>起重机</建筑:设备名>

      <建筑:生产商>中联重科</建筑:生产商>

      <建筑:地址>湖南省长沙市新开铺113号</建筑:地址>

   </设备>

</资料>