`
北极的。鱼
  • 浏览: 150627 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

xml命名空间详解

    博客分类:
  • XML
 
阅读更多

转自:http://www.360doc.com/content/12/0625/18/10042054_220381194.shtml

 

在研究spring security的时候,里面提到了一个重要的感念就是命名空间,当时以为是spring的一个什么特殊功能,后来研究后才发现是xml的一个知识点,顺便又研究了一下这个知识,找到一篇文章感觉挺好,在此做个记录。

 

关于命名空间有很多人回避。认为太难。其实命名空间使用很普遍,在xml中也大量存在。初学者搞不清楚是因为关于这方面的教程少且帮助文件中也没有从基础讲起。而从一本厚厚的xml书籍中查询或者看官方网站的介绍又是一种非常苦的事情。这里我把我学习和理解的过程总结下,尽量用通俗的语言写出来。希望能够帮助初学者过这个难关,利益他人。

 

什么是XML的命名空间:
为了避免XML的标签同名。XML也拥有命名空间。标签可以放入命名空间中,不同的命名空间中的相同名称标签是不同的标签。

xml文件中,命名空间的定义如下:
<d:student xmlns:d=”http://www.develop.com/student;
其中student 是命名空间的标签。

http://www.develop.com是命名空间的标识。

d是命名空间的前缀。

命名空间标签:
由于命名空间采取元素属性的定义方式,所以需要一个标签。

命名空间标识:
命名空间标识是命名空间最重要的属性,重要到当输出一个命名空间时就直接转换为它的标识。标识有个规范的称呼:URI(统一资源定位符)URI的最大特点是唯一性。如果不唯一就失去了辨识的意义。实际上相同URI不同的命名空间被看成同一个命名空间。URI分为两种类型:


URL(统一资源定位器):
通俗的说URL就是网页地址。因为每个网页在internat上都是唯一的。

URN(统一资源名称)
可以不使用网页地址而使用唯一名称来定义。如:
urn:2007-12-9/workgrop/xin/projiectname
 urn:E7f73B13-05FE-44ec-81CE-F898C4A6CDB4
这个编号是在系统中注册的控件编号,因此是唯一的。


前缀:
前缀用于在XML中作为URI的简化引用。因为URI太长了。如:
<d:student xmlns:d="http://www.develop.com/student">

<d:id>3235329</d:id>


<d:name>Jeff Smith</d:name>

</d:student>
使用前缀把标签放入对应的命名空间中。


有了命名空间区分后相同标签名可以不会被错误解析。实际上命名空间加上元素名叫做QNameQName有两个属性:urilocalName,分别获取命名空间名和本地名称。这个QName可以使用xmlname()方法得到。如上例子中的xml文件可以使用如下代码访问:

  1. var ns:Namespace=xml.namespace();
  2. var node:XMLList=xml.ns::id;
  3. var qNameName=node.name();
  4. trace(qName.uri);
  5. trace(qName.localName);




命名空间不一点要定义在根节点。可以在任何标签中定义,但只有定义了后才能使用。命名空间还可以嵌套或者被重定义。但这样会增加复杂性。一般用的比较少。一个xml文件中可以拥有多个命名空间。使用命名空间前缀可以轻松处理它们。如:

  1. <x:transform version=”1.0” xmlns:x=http://www.w3.org/1999/XSL/Transform
  2. xmlns:d=”urn:dm:student”>
  3. <x:template match=”student”/>
  4. <d:template match=”name”/>
  5. </x:transform>


使用默认命名空间:
xml文档中,可以使用以下语句定义默认命名空间:
xmlns=<namespace identifier>
使用默认命名空间后,如果不加前缀则引用默认命名空间。使用默认命名空间会降低xml结构的清晰度。要慎用。

分享到:
评论

相关推荐

    thinkPHP5.0框架命名空间详解

    本文实例讲述了thinkPHP5.0框架命名空间。分享给大家供大家参考,具体如下: 命名空间 ThinkPHP采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd 43 2.4 小结 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd 43 2.4 小结 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd 43 2.4 小结 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd 43 2.4 小结 ...

    深入分析XmlSerializer对象的Xml序列化与反序列化的示例详解

    这篇随笔对应的.Net命名空间是System.Xml.Serialization;文中的示例代码需要引用这个命名空间。为什么要做序列化和反序列化?.Net程序执行时,对象都驻留在内存中;内存中的对象如果需要传递给其他系统使用;或者在...

    .net读写xml文档详解

    一 .Net框架中与XML有关的命名空间 System.Xml包含了一些和XML文档的读写操作相关的类,它们分别是:XmlReader、XmlTextReader、XmlValidatingReader、XmlNodeReader、XmlWriter、XmlTextWriter 以及 XmlNode(它的...

    详解C#借助.NET框架中的XmlTextReader类读取XML的方法

    此类实现 XmlReader 并符合 W3C 可扩展标记语言 (XML) 1.0 和“XML 中的命名空间”建议。XmlTextReader 提供以下功能: 执行格式良好的 XML 的规则。 XmlTextReader 不提供数据验证。 检查 DocumentType 节点是否...

    DOM4J从基础到精通

    感谢“雪飘寒”原创与分享 目录 dom4j实例详解 1 目录 1 一、dom4j介绍 2 二、使用dom4j创建xml文档 3 三、使用dom4j解析xml文件 5 ...3. 命名空间(Namespace)操作 8 六、Qname介绍 10 七、Visitor模式 11

    J2EE应用开发详解

    259 15.3.2 Setter注入 261 15.3.3 Method注入 263 15.4 Spring AOP技术 266 15.4.1 装备(advices) 267 15.4.2 Spring AOP的传统用法 275 15.4.3 基于@AspectJ注释的AOP 277 15.4.4 基于aop命名空间的AOP 279 ...

    TCPIP协议详解(4-1)

    命名和寻址 第4章 IP网络中的名字和地址 29 4.1 IP寻址 29 4.1.1 二进制和十进制数 30 4.1.2 IPv4地址格式 30 4.2 子网的出现 34 4.2.1 分子网 35 4.2.2 可变长子网掩码(VLSM) 37 4.3 无类...

    c#对象反序列化与对象序列化示例详解

    (1).NET支持对象序列化的几种方式二进制序列化:对象序列化之后是二进制形式的,通过BinaryFormatter类来实现的,这个类位于System.Runtime.Serialization.Formatters.Binary命名空间下。SOAP序列化:对象序列化之后...

    Android xmlns 的作用及其自定义实例详解

    这个是xml的命名空间,有了他,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么是对的,什么是错的,也可以理解为语法文件。或者语法判断器什么的 这个主要作用是在运行的时候那些控件的属性都是通过它...

    TCP/IP详解

    4.3.5 公共地址空间 40 4.3.6 RFC 1597和1918 40 4.4 小结 40 第5章 ARP和RARP 41 5.1 使用地址 41 5.1.1 子网寻址 41 5.1.2 IP地址 43 5.2 使用地址解析协议 44 5.2.1 ARP cache 45 5.2.2 代理ARP 47 5.2.3 反向...

    解决在Web.config或App.config中添加自定义配置的方法详解

    .Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持。最近看到一些项目中还在自定义xml文件做程序的配置,所以忍不住写一篇用系统自定义配置的随笔了。如果你已经...

    亮剑.NET深入体验与实战精要2

    1.3.2 命名空间 10 1.3.3 C#语法格式要点 10 1.3.4 变量 12 1.3.5 类型推断 12 1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 1.3.9 字符串常见操作 21 1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象...

    亮剑.NET深入体验与实战精要3

    1.3.2 命名空间 10 1.3.3 C#语法格式要点 10 1.3.4 变量 12 1.3.5 类型推断 12 1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 1.3.9 字符串常见操作 21 1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象...

    Silverlight2.0功能展示Demo源码

    通过 System.Xml.Linq 命名空间下的类(LINQ to XML)处理 XML 数据 通过 System.ServiceModel.Syndication 命名空间下的类处理 RSS/ATOM 数据 18、Silverlight(20) - 2.0通信之WebClient, 以字符串的形式上传/下载...

Global site tag (gtag.js) - Google Analytics