3.2命名空间的运行机制

###XML命名空间的运行机制

  • 命名空间为XML的元素和属性分派URI,以消除相同名称产生的歧义

  • 命名空间属性被放置于元素的开始标签中

  • 命名空间的声明:

  • 规范:http://www.w3.org/TR/REC-xml-names/

  • 直接命名:xmlns:[命名空间前缀]=[命名空间名URI]

  • 默认命名:xmlns=[命名空间名URI]

<pers:personxmlns:pers=”http://www.lzu.edu.cn/pers”>
 <person xmlns=”http://www.lzu.edu.cn/pers”>

**xmlns(xml namespace)是专门用于声明命名空间的关键字XML命名空间的运行机制 **

  • 使用XML命名空间,元素名就成为了限定名(Qualified Names, QName)

  • 本地部分:元素名

  • 命名空间前缀:确定了名称所在的命名空间XML命名空间的运行机制。

  • 声明了pers命名空间前缀及其代表的URI (http://www.lzu.edu.cn/pers)

  • 命名空间前缀用在元素名前面:pers:personnn前缀pers的唯一作用是代表一个命名空间的名称,没有任何含义,可用其他前缀代替。

  • 前缀名也要遵循元素名命名规则,pers:person的任何子元素或属性都可以使用该前缀,表示都属于http://www.lzu.edu.cn/pers命名空间 <pers:personxmlns:pers=”http://www.lzu.edu.cn/pers”>

  • 元素的开始标签和结束标签都要有前缀

<pers:person xmlns:pers=”http://www.lzu.edu.cn/pers”>     
    <pers:name>
        <pers:title>Sir</pers:title>
    </pers:name>
</pers:person>
  • 只有有前缀的元素才是命名空间的一部分

  • XML解析器使用命名空间代替所有的命名空间前缀 <pers:person> ==<{http://www.lzu.edu.cn/pers\ person}>(完全限定名)

  • pers前缀表示属于pers命名空间的元素

  • html前缀表示属于XHTML命名空间的元素

  • 前缀本身没有实际意义,前缀表示的命名空间才是解析器关心的XML命名空间的运行机制

  • 默认的命名空间

  • 一个不含前缀的元素及其所有子元素都属于同一个命名空间

  • 不需要在默认的命名空间所有元素前面插入前缀

  • 元素名不是限定名,用全域名称(Universal Name)表示一个命名空间里面的任何元素,不管是有前缀的限定名,还是默认命名空间中的名称

  • 一个元素可声明多个命名空间,只有一个默认的命名空间,默认的命名空间对属性无效XML命名空间的运行机制

  • XML命名空间的运行机制

  • 默认的命名空间

  • 可以在文档的任何一个元素里声明命名空间前缀

  • 在离使用命名空间最近的位置定义命名空间

  • xhtml前缀只作用与

    元素及其子元素

  • 对元素不起作用,也对非

    子元素的元素不起作用

  • 在文档的任何地方使用默认命名空间

  • 在离使用命名空间最近的位置声明 XML命名空间的运行机制

  • 取消默认命名空间

  • 通过编程方法从XML读取信息

  • DOM和SAX

Last updated