Xml命名空间浅析
XML实例
在介绍xml命名空间之前,我们先来看段xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
<property name="scopes">
<map>
<entry>
<bean class="org.springframework.context.support.SimpleThreadScope"/>
</entry>
</map>
</property>
</bean>
<bean id="bar" class="x.y.Bar" scope="thread">
<property name="name" value="Rick"/>
<aop:scoped-proxy/>
</bean>
</beans>
这段代码摘自spring框架的某段配置代码。
稍微分析一下:该段xml代码中的诸多元素没有使用任何前缀,因为它们的默认命名空间是 “http://www.springframework.org/schema/beans”, 该命名空间所对应的schema的地址:http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
这段代码还有另外一个以aop为前缀的命名空间"http://www.springframework.org/schema/aop", 该命名空间对应的schema地址:http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
<aop:scoped-proxy/> 这段代码就使用了以aop为前缀的scoped-proxy元素。
其他元素包括beans,bean,property,map等元素都是通过schema来定义的,下面我们就简单看下schema的知识。
XML schema介绍
XML Schema 是基于 XML 的 DTD 替代者。
XML Schema 描述 XML 文档的结构。
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。
上面文字摘自W3C中对Schema的介绍。 没错,XML Schema就是用来描述XML文档结构的。
下面我们就来简单写个schema文件:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.gogogo.com"
xmlns="http://www.gogogo.com"
elementFormDefault="qualified">
<xs:element name="name" type="xs:string"/>
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element ref="name"/>
<xs:element name="age" type="xs:int"/>
<xs:element name="birth" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
这个简单的schema表示的意思就是定义一个名字为Employee的复杂类型。 该元素分别拥有顺序为id,name,age,birth这4个元素子元素。
XML 命名空间介绍
XML 命名空间提供避免元素命名冲突的方法。
上面文字摘自W3C中对XML 命名空间的介绍。
怎么理解呢。其实这个命名空间跟.Net中的命名空间或Java中的package的概念是一样的,就是用来解决一些命名冲突的。
举个例子:
比如在A.xsd和B.xsd这2个Schema文件中都定义了Employee这个类型的元素。 那么如何区别这2个不用类型相同名字的Employee元素? 答案就是使用命名空间进行区分。
下面我们来分析一下本文定义的schema中的代码:

下面我们通过另外一种方式重新写下这段schema代码:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.gogogo.com"
xmlns:my="http://www.gogogo.com"
elementFormDefault="qualified">
<xs:element name="name" type="xs:string"/>
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element ref="my:name"/>
<xs:element name="age" type="xs:int"/>
<xs:element name="birth" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
代码没什么变化,只是不使用默认的命名空间了。将该schema对外的命名空间地址用在my前缀下。这样ref name的时候就必须使用my前缀了,因为已经没有了默认的命名空间,schema不知道怎么去找 "name" 这个元素。
看了2段代码,总结一下schema中命名空间的使用:
xml:你的前缀="你的命名空间地址"
examples:
xml:my="http://www.my.org", xml:omg="http://www.omg.org", xml:java="http://www.java.org" ........
参考资料
http://www.w3school.com.cn/schema/index.asp
http://www.w3school.com.cn/xml/xml_namespaces.asp
Xml命名空间浅析的更多相关文章
- Atitit xml命名空间机制
Atitit xml命名空间机制 命名冲突1 使用前缀来避免命名冲突2 使用命名空间(Namespaces)2 XML Namespace (xmlns) 属性2 默认的命名空间(Default Na ...
- BizTalk开发系列(十六) XML命名空间
BizTalk开发过程中如果有对XML进行开发操作,比如在自定义代码里操作XML消息或者在Mapping的时候使用Xpath对XML进行操 作.则有机会遇到XML命名空间的问题.常见的是使用Xpath ...
- XML 命名空间(XML Namespaces)
XML 应用程序 XML CDATA XML 命名空间提供避免元素命名冲突的方法. 命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突. 这个 X ...
- XML 命名空间
XML 命名空间 一.XML命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突. 这个 XML 文档携带着某个表格中的信息: <table& ...
- 雷林鹏分享:XML 命名空间
XML 命名空间 XML 命名空间提供避免元素命名冲突的方法. 命名冲突 在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突. 这个 XML 携带 HTML ...
- xml命名空间
https://yq.aliyun.com/articles/40353 ************************************* 摘要: 相信很多人和我一样,在编写Spring或者 ...
- XML命名空间详解
http://happylongnv.blog.hexun.com/48859954_d.html 目的:解决同一个元素在相同文件中代表不同含义的问题.因为XML文档中使用的元素不是固定的,那么两个不 ...
- 全栈JavaScript之路( 二十四 )DOM2、DOM3, 不涉及XML命名空间的扩展
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/hatmore/article/details/37658167 (一)DocumentType 类型 ...
- python通过LXML库读取xml命名空间
xml实例版本: <a> <city:table xmlns:city="city"> <heilongjiang name="citys& ...
随机推荐
- openstack 上床镜像, 创建网络, 创建虚拟机 命令
==================================================================================================== ...
- Spring-2-J Goblin Wars(SPOJ AMR11J)解题报告及测试数据
Goblin Wars Time Limit:432MS Memory Limit:0KB 64bit IO Format:%lld & %llu Description Th ...
- Hadoop从伪分布式到真正的分布式
对这两天学习hadoop的一个总结,概念就不提了.直接说部署的事,关于如何部署hadoop网上的资料很多, 比较经典的还是Tim在IBM developworks上的系列文章 http://www.i ...
- Memcache修改端口
修改端口 网上很多的说法都无法起作用(像下面这样) D:\.......memcached -p 10000 -d start 现在有两种解决方法 ①直接修改注册表 HKEY_LOCAL_MACHIN ...
- 在VS2010中使用Outlook工具栏
参考资料:微软MSDN.VS2010示例代码 一开始上段子总是能活跃气氛,等哪天我再打开自己的这篇博客,总是能够让自己傻傻的乐一下. 我一女同学,毕业去一大公司应聘,竞争很激烈,最后剩下她和一位女士. ...
- P2P行业专业术语(最全)
网贷:P2P网络借款,指个体与个体之间通过网站实现借贷,中间网站称为网贷平台,简称平台. 角色类 投资者:在网站上把钱借出去的用户,年龄必须是18周岁以上具有中国国籍的公民. 借款者(贷款者):是指有 ...
- linux中如何查看进程对应的cpu使用情况?
使用ps aux | grep <进程名>即可查看指定进程的cpu使用情况.
- 虚拟机Linux----Ubuntu1204----安装jdk1.8
1.介绍 这里主要讲一下,如何在Ubuntu1204下通过压缩包的方式安装jdk1.8,rpm的直接运行就行了. 2.步骤 2.1 下载 地址:http://www.oracle.com/techne ...
- db2 常用命令(二)
1. 打开命令行窗口 #db2cmd 2. 打开控制中心 # db2cmd db2cc 3. 打开命令编辑器 db2cmd db2ce ======脚本文件操作命令======= -- 执行脚本 ...
- JavaScript的函数重载
java语言中函数的重载和重写可谓是很重要的概念,所以在写js的时候时不时的会想到这种用法,重写先不说,这里只说重载.. <script language="JavaScript&qu ...