命名空间

命名空间概述

标记中出现了同名不同义的情况,极其容易造成含义混乱。命名空间就是由W3C制定的用于解决这类问题的。

【命名空间的作用】出现标记同名不同义情况时,避免含义混乱

<?xml version="1.0" encoding="UTF-8"?>
<book xmlns:bk="http://www.dlut.edu.cn/xml/book"
xmlns:au="http://www.dlut.edu.cn/xml/author">
<bk:name>XML技术及应用</bk:name>
<author>
<au:name>唐琳</au:name>
<age>34</age>
</author>
</book>

命名空间语法

命名空间的语法格式是: xmlns[:prefix]="命名空间字符串"

xmlns :是XML namespace的缩写即XML命名空间,这个字符串是固定的。

prefix : 表示前缀名称也称为命名空间别名,可以随意指定,通常是一个简短的名字。

注:命名空间别名中不能包括冒号,因为在使用时是采用“命名空间别名:本地标记名”的方式

如果增加冒号就无法区别命名空间别名和本地标记名。

命名空间别名不能使用xml和xmlns。

xml只能用于XML1.0规范定义的xml:space和xml:lang属性

别名xml被定义与名称空间名字http://www.w3.org/XML/1998/namespace绑定

前缀xmlns仅仅用于声明名称空间的绑定,它被定义为与名称空间名字http://www.w3.org/2000/xmlns/绑定。

命名空间的声明

命名空间声明主要包括两种形式:

1.没有前缀限定的命名空间

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.dlut.edu.cn/xml/nonamespace">
<sub>abc</sub>
</root>

2.有前缀限定的命名空间。

<?xml version="1.0" encoding="UTF-8"?>
<dlut:root xmlns:dlut="http://www.dlut.edu.cn/xml/nonamespace">
<dlut:sub>abc</dlut:sub>
</dlut:root>

命名空间作用域

命名空间能够作用于声明该命名空间的元素及其子元素中,除非被子元素中其它同别名的命名空间所覆盖

但并不表示作用域内的元素属于该命名空间。

对命名空间的使用

元素对命名空间的使用

虽然在元素中声明了命名空间,命名空间也可以作用于相应的元素,但是并不表示该元素位于所声明的命名空间中。

如果要表示某元素位于某命名空间时,需为该元素指定命名空间。

指定命名空间的语法为:命名空间别名:标记名

属性对命名空间的使用

实际应用中属性很少使用命名空间,但需要读者注意的是如果在属性上没有使用任何命名空间别名,则表示该属性不属于任何命名空间。

注:属性的命名空间是独立的,即无论属性所属的元素属于任何命名空间与属性的命名空间无关。

DTD对命名空间的支持

支持但不推荐使用。但支持太差,就如同不支持一样。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book[
<!ELEMENT book (bk:name,author)>
<!ELEMENT bk:name (#PCDATA)>
<!ELEMENT author (au:name,age)>
<!ELEMENT au:name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ATTLIST book xmlns:bk CDATA #IMPLIED
xmlns:au CDATA #IMPLIED
xmln CDATA #IMPLIED>
<!ATTLIST age xmln CDATA #IMPLIED>
]>
<book xmlns:bk="http://www.dlut.edu.cn/xml/book"
xmlns:au="http://www.dlut.edu.cn/xml/author"
xmln="http://www.dlut.edu.cn/xml"
>
<bk:name>XML技术及应用</bk:name>
<author>
<au:name>唐琳</au:name>
<age xmln="">34</age>
</author>
</book>

【XML】学习笔记第三章-namesapce的更多相关文章

  1. 《DOM Scripting》学习笔记-——第三章 DOM

    <Dom Scripting>学习笔记 第三章 DOM 本章内容: 1.节点的概念. 2.四个DOM方法:getElementById, getElementsByTagName, get ...

  2. Spring学习笔记 - 第三章 - AOP与Spring事务

    原文地址:Spring学习笔记 - 第三章 - AOP与Spring事务 Spring 学习笔记全系列传送门: Spring学习笔记 - 第一章 - IoC(控制反转).IoC容器.Bean的实例化与 ...

  3. Qt 学习笔记 - 第三章 - Qt的三驾马车之一 - 串口编程 + 程序打包成Windows软件

    Qt 学习笔记全系列传送门: Qt 学习笔记 - 第一章 - 快速开始.信号与槽 Qt 学习笔记 - 第二章 - 添加图片.布局.界面切换 [本章]Qt 学习笔记 - 第三章 - Qt的三驾马车之一 ...

  4. The Road to learn React书籍学习笔记(第三章)

    The Road to learn React书籍学习笔记(第三章) 代码详情 声明周期方法 通过之前的学习,可以了解到ES6 类组件中的生命周期方法 constructor() 和 render() ...

  5. [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设

    [HeadFrist-HTMLCSS学习笔记]第三章构建模块:Web页面建设 敲黑板!! <q>元素添加短引用,<blockquote>添加长引用 在段落里添加引用就使用< ...

  6. JVM学习笔记-第三章-垃圾收集器与内存分配策略

    JVM学习笔记-第三章-垃圾收集器与内存分配策略 tips:对于3.4之前的章节可见博客:https://blog.csdn.net/sanhewuyang/article/details/95380 ...

  7. XML学习笔记(三) -- Schema

    标签(空格分隔): 学习笔记 Schema的格式 XML Schema文档是由元素.属性.命名空间和XML文档中的其他节点构成的. XML Schema有两种重要的Schema模型:Microsoft ...

  8. [HeadFirst-JSPServlet学习笔记][第三章:实战MVC]

    第三章 实战MVC J2EE如何集成一切 Java2企业版(Java 2 Enterprise Editon,J2EE)是一种超级规范.规定了servlets2.4,JSP2.0,EJB2.1(Ent ...

  9. python学习笔记——第三章 串

    第三章 字符串学习 1.字符串不灵活, 它不能被分割符值 >>> format = "hello, %s. %s enough for ya?" >> ...

  10. JavaScript高级编程学习笔记(第三章之一)

    继续记笔记,JavaScript越来越有意思了. 继续... 第三章:JavaScript基础 ECMAScript语法在很大程度上借鉴了C和其它类似于C的语言,比如Java和Perl. 大小写敏感: ...

随机推荐

  1. Windows下使用Wireshark分析USB通信

    WireShark中对USB数据捕获 可以监视与主机连接的usb数据. usb设备是三段地址描述,例如1.15.1,第一个是总线,第二个是设备地址,第三个是端口. USB数据抓包分析 这些是鼠标的数据 ...

  2. VM Ware 安装mac OS xxx 系统

    1. unlock 文件破解Vm Ware 默认不能安装苹果系统 :https://drive.google.com/file/d/1_AUeYh5JYltqjnuztQh-5UTomAIVBcLZ/ ...

  3. 使用 OpenFunction 在任何基础设施上运行 Serverless 工作负载

    作者: 霍秉杰:KubeSphere 可观测性.边缘计算和 Serverless 团队负责人,Fluent Operator 和 OpenFunction 项目的创始人,还是多个可观测性开源项目包括 ...

  4. 可重入锁ReentrantLock

    ReentrantLock 重入锁,是实现Lock 接口 的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源重复加锁,即当前线程获取该锁后再次获取不会被阻塞. 要想支持重入 ...

  5. 史上最全ThreadLocal 详解

    概述 线程本地变量.当使用 ThreadLocal 维护变量时, ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程. 每个 ...

  6. PHP mysql 大量批量insert或update数据出错问题

    UPDATE users SET age = 30 WHERE name = 'Alice'; UPDATE users SET age = 25 WHERE name = 'Bob'; UPDATE ...

  7. 模算术 modular arithmetic

    https://en.wikipedia.org/wiki/Modular_arithmetic#Integers_modulo_n 模算术: 整数达到特定值时会' 折返 ' 回来-- 模数 modu ...

  8. Apache Shiro 721反序列化漏洞复现

    目录 漏洞原理 复现 修复方式 漏洞原理 Shiro 的RememberMe Cookie使用的是 AES-128-CBC 模式加密.其中 128 表示密钥长度为128位,CBC 代表Cipher B ...

  9. Windows远程登录到VirtualBox安装的Ubuntu11.10

    一.环境 本地:Windows xp 虚拟机:VirtualBox 虚拟机的操作系统:Linux-Ubuntu11.10 二.目的 在Windows下通过SecureCRT(putty也可)远程登录到 ...

  10. JVM中的Hello World是如何运行的?

    每一个Java开发者都是通过Hello World敲开面向对象世界的大门.但是在一开始,我们考虑的只是这个语言是什么样的,我们如何更好的编码,却很少有人关心他内部是怎么运行的.看下面一个简单的hell ...