网站首页 > 技术教程 正文
一个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 词汇表中定义的元素。
猜你喜欢
- 2024-11-01 得分手必看!如何通过跑位制造空间并轻松得分!
- 2024-11-01 什么是免费空间?免费空间要如何使用?
- 2024-11-01 国服榜一女娲深度教学(掌控能量/空间矩阵/打法思路)
- 2024-11-01 技能get/四个零基础DIY教程(零基础制作图片)
- 2024-11-01 作文技术,空间(空间技术指什么)
- 2024-11-01 空间观念的数学教学渗透方法研究(空间概念的数学教育活动)
- 2024-11-01 「照片合成」PS合成超酷立体空间感效果教程
- 2024-11-01 如何画好一张室内设计手绘?从入门到精通,设计师你应该收藏
- 2024-11-01 「绘画教程」日本画师Toshi教你空间表现与服装的区分
- 2024-11-01 弹琴如何掌握自由的空间?怎么把每个乐句有借有还?钢琴教程
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)