目录


发展历史

XML和HTML对比之可扩展

XML和HTML对比之语法细节

XML验证之DTD

XML名称空间

XML语法结构

DOM4J读写配置文件

关于SLT

XML名称空间



一个XML文档中可以包含许多元素与属性,当我们使用他人的XML文档或者使用多个校验文件(DTD或者Schema)时很有可能出现相同的元素或属性名称,而这些元素或属性的意义是不一样的,类似于java当中很多类的类名是相同的而这些类的具体作用却是不尽相同的,于是在Java领域人们就引入了包的概念,不同包下的相同名称的类的作用是不一样的,这样就有效的区分了同名的类。相类似的在XML中引入名称空间也是为了解决名称重复的问题。先看下面的例子

<?xml version="1.0" encoding="gb2312" ?><books><book><title>JSP深入编程</title><author><name>张三</name><title>作家</title></author></book><book><title>XML从入门到精通</title><author><name>李四</name><title>教师</title></author></book></books>



这是一个关于图书的格式良好的XML文档,但是其中元素有冲突,title元素即表示书名又用于表示作者的头衔,两个相同名称的元素却具有不同的含义。这使得XML解析器阅读起来非常费解,也无法正确的进行XML验证。为解决这个问题我们采用名称空间的方式区分相同的元素。在此之前我们首先介绍关于XML名称空间的定义方式:

<元素名 xmlns:prefixname="URI">

元素名是指在该元素上声明命名空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素内容中的所有元素及属性prefixname是名称空间的前缀,往往URI比较长所以可以用prefixname来代替URI比如下面的例子

<hr xmlns:hr="http://blog.csdn.net/beijiguangyong">


上面的句子声明了一个名称空间,它的名字是http://www.php.cn/。一般而言这个名称很长,于是就用了hr来表示,作为该名称空间下的元素或者属性可以其在前面加上前缀hr。例如<hr:employee>就表示employee元素属于此命名空间下。所以上面的那个拥有title重复属性的xml为了区分歧义可以写成下面这样

<?xml version="1.0" encoding="utf-8" ?><books xmlns:people="http://blog.csdn.net/beijiguangyong"><book><title>JSP深入编程</title><author><name>张三</name><title>作家</title></author></book><book><title>XML从入门到精通</title><author><people:name>李四</name><people:title>教师</title></author></book></books>



其中people是名称空间http://www.php.cn/的前缀,用于表示相应的元素是属于该命名空间下的。对于上面的XML而言解析器就很容易区分people:titletitle的不同。

还有另一种定义名称空间的方式:

<元素名 xmlns="URI">

这种声明形式没有给出名称空间的前缀名,我们可以认为URI所标识的是一个默认的名称空间。例如<hr xmlns="http://blog.csdn.net/beijiguangyong">表明了一个默认的名称空间,除非元素中有其他的命名空间进行覆盖,否则hr元素及其内容中所有的没有前缀的元素都属于http://www.php.cn/所标识的名称空间

了解了名称空间之后就可以更加轻松的学习用Schema验证XML的正确性了。

以上就是XML简明教程(5) 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

更多相关文章

  1. 从xml中获取城市,省份名称
  2. XML中的标签与元素的使用具体介绍
  3. XML入门教程-XML名称空间详细介绍
  4. XML学习(一)元素,属性,读取详解
  5. 关于XML中的名称空间的示例代码分享
  6. 详解在XML文档中替换元素名称的方法(图)
  7. XML开发基础-XML元素
  8. 详解使用XML Schema定义元素的基本知识(图文)
  9. 应用名称访问XML文档的代码案例详解

随机推荐

  1. android 获取应用程序占用的内存大小
  2. Android 杂记
  3. Java建造者模式,Android建造者模式的Alert
  4. Android中的ClassLoader与dex文件加密实
  5. Android高手进阶教程(十七)之---Android
  6. android 跳转到应用通知设置界面
  7. Android(安卓)处理空列表的方法(必看篇)
  8. Android(安卓)无需申请key直接调用微信/Q
  9. Android Service相关
  10. android 蓝牙打印程序源代码