详解XML的名称空间

一个XML文档可以引入多个约束文档,但是,由于约束文档中的元素或属性都是自定义的,因此,在XML文档中,极有可能出现代表不同含义的同名元素或属性,导致名称发生冲突。为此,在XML文档中,提供了名称空间,它可以唯一标识一个元素或者属性。这就好比打车去小营,由于北京有两个地方叫小营,为了避免司机走错,我们总会说去“去亚运村的小营”或者“去清河的小营”。这时的亚运村或者清河就相当于一个名称空间。

在使用名称空间时,首先必须声明名称空间。名称空间的声明就是在XML实例文档中为某个模式文档的名称空间指定一个临时的简写名称,它通过一系列的保留属性来声明,这种属性的名字必须是以“xmlns”或者以“xmlns:”作为前缀。它与其它任何XML属性一样,都可以通过直接或者使用默认的方式给出。名称空间声明的语法格式如下所示:

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

在上述语法格式中,元素名指的是在哪一个元素上声明名称空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素中嵌套的所有元素及其属性。xmlns:prefixname指的是该元素的属性名,它所对应的值是一个URI引用,用来标识该名称空间的名称。需要注意的是,如果有两个URI并且其组成的字符完全相同,就可以认为它们标识的是同一个名称空间。

了解了名称空间的声明方式,接下来,通过一个案例来学习,如例1所示。

例1 book.xml

     <?xml version="1.0" encoding="UTF-8"?>     <it315:书架 xmlns:it315="http://www.it315.org/xmlbook/schema">         <it315:书>             <it315:书名>JavaScript网页开发</it315:书名>             <it315:作者>张孝祥</it315:作者>             <it315:售价>28.00元</it315:售价>         </it315:书>     </it315:书架>

在例1中,it315被作为多个元素名称的前缀部分,必须通过名称空间声明将它关联到唯一标识某个名称空间的URI上,xmlns:it315="http://www.it315.org/xmlbook/schema"语句就是将前缀名it315关联到名称空间"http://www.it315.org/xmlbook/schema"上。由此可见,名称空间的应用就是将一个前缀(如it315)绑定到代表某个名称空间的URI(如http://www.it315.org/xmlbook/schema)上,然后将前缀添加到元素名称的前面(例如,it315:书)来说明该元素属于哪个模式文档。

需要注意的是,在声明名称空间时,有两个前缀是不允许使用的,它们是xml和xmlns。xml前缀被定义为与名称空间名字http://www.w3.org/XML/1998/namespace绑定,只能用于XML1.0规范中定义的xml:space和xml:lang属性。前缀xmlns仅仅用于声明名称空间的绑定,它被定义为与名称空间名字http://www.w3.org/2000/xmlns绑定。

默认名称空间

如果一个文档有很多元素,并且这些元素都在同一个名称空间,这时,给每个元素名称都添加一个前缀将是一件非常繁琐的事情。这时可以使用默认的名称空间,默认名称空间声明的语法格式如下所示:

<元素名 xmls="URI">

在上面的语法格式中,URI所标识的是默认的名称空间。以这种方式声明的空间名称将作为其作用域内所有元素的默认名称空间。接下来,对例1进行修改,将book.xml改为默认名称空间的形式,如例2所示。

例2 book.xml

     <?xml version="1.0"encoding="UTF-8"?>     <书架 xmlns="http://www.it315.org/xmlbook/schema">         <书>             <书名>JavaScript网页开发</书名>             <作者>张孝祥</作者>             <售价>28.00元</售价>         </书>     </书架>

在例2中,虽然“书架”、“书”、“书名”、“作者”、“售价”等元素名称前面没有前缀,但是由于"http://www.it315.org/xmlbook/schema"被设置成了默认的名称空间,所以,它们仍然是"http://www.it315.org/xmlbook/schema"这个URI所标识的名称空间中的元素。虽然使用默认名称空间会减少一些书写工作量,而使用带前缀的非默认名称空间会增加一些书写工作量,但合理地命名前缀却可以为人们浏览 XML文档时提供便利,例如,book:title很容易让人联想到title是book 词汇表中定义的元素。

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/263040.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
黑马程序员黑马程序员订阅用户
上一篇 2023年5月13日 12:50
下一篇 2023年5月13日 12:50

相关推荐

  • 分享网络营销的作用有哪些。

    实践证明,网络营销在网络品牌、网站推广、信息发布、销售推广、销售渠道、客户服务、客户关系、在线调研等八个方面发挥着作用。这八大功能就是网络营销的八大功能。网络营销战略的制定和各种网络营销手段的实施,…

    2023年4月18日
    00
  • 我来分享网站SEO优化没效果的原因有哪些。

    网站SEO优化没效果的原因有哪些? 网站SEO(搜索引擎优化)优化没作用是什么原因?说到网站关键词(KEY)优化,很多人常遇到的一个问题就是优化了好久,却迟迟没有作用,而关键词若是没有排名的话,那么网站的流量就会…

    2022年11月14日
    00
  • 小编分享全网营销中,数据分析的作用巨大。

    全网营销是当下每个企业都必须要做的一件事,那么我们在这个过程中该如何推广网站呢?今天云裂变就为大家分享一下全网营销中数据分析的作用。推广网站如果只是简单的认为就是做外链,内链,内容也是无可厚非的,但…

    2023年4月19日
    00
  • 我来分享CSS+DIV对SEO有什么影响和作用。

    首先使用DIV+CSS设计的网站有助于提升搜索引擎spider提升爬行效率。Div+Css的代码精简是table无法比拟的,即使DIV CSS的html加上对应CSS文件一般都小于table的html文件。 div+css实现了样式和布局完全分离,前台垃…

    2023年6月20日
    00
  • 分享新闻营销:发布新闻稿的作用。

    现在企业做品牌推广,首先想到的就是新闻营销,新闻营销带给企业带来价值和意义不是三言两语描述得清楚,小编觉得成功的新闻稿发布,可以给企业带来如下价值和意义。1、提升品牌形象成功的新闻营销,可以有效的提升…

    2023年6月6日
    01
  • 品销宝有什么作用。

    所谓的品销宝事实上是指的是明星店铺的升级版,在品牌专区中,品销宝能够承受更多的品牌的展示,为观众提供更多的品牌,而这些品牌也会得到更多曝光的机会,其实说白了,品销宝就是一种广告形式,和钻展一样按展现…

    2023年11月1日
    00
  • 我来分享SEO优化有什么优势与作用。

    seo是通过搜索引擎的排名规律,对网站建设进行内部及外部的优化调整,从而提高网站在搜索引擎中自然排名的一种技能,在网络上搜索一个关键词,在搜索结果中排名靠前的,除了广告的,就是靠着seo优化进行的。 1、搜…

    2023年6月28日
    00
  • 我来分享全网营销做好了能给企业起到什么作用。

    现在越来越多的企业接触到互联网,可以说几乎每个行业都需要网络营销去推广自己,全网营销就是其中的一种,但是这一批人对互联网很陌生,比如全网营销是怎么做的啊,全网营销有什么优势与作用啊,全网营销又能给企…

    2023年4月1日
    00

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息