命名空间

命名空间概述

标记中出现了同名不同义的情况,极其容易造成含义混乱。命名空间就是由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. USB协议详解第4讲(USB描述符-标准配置描述符)

    1.USB描述符 USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符.字符串描述符,HID设备有HID描述符.报告描述符和物理描述符.今天主要是学习USB标准配置描述符的组成. 2.标准 ...

  2. unable to find sdk 'iphoneos XX' 报错

    解决方法: Build Setting->Base SDK->修改为iOS

  3. 通过脚手架 npx 创建 react 项目

    npx create-react-app create-react --template typescript 使用 ts 模板

  4. text-align的对齐方式

    text-align的6种取值 left:左对齐 right:右对齐 center:居中 start:如果内容方向是左至右,则等于left,反之则为right. end:如果内容方向是左至右,则等于r ...

  5. 后台管理系统tabs栏切换思路

    页面内容: 使用 element-ui 实现 tabs 标签页 :https://element.eleme.cn/#/zh-CN/component/tabs#tab-pane-attributes ...

  6. 云原生爱好者周刊:GitHub 官方文档终于开源了!

    云原生一周动态要闻: API 在 Kubernetes 1.22 中被删除 ContainIQ 公开发布 - Kubernetes 本地实时监控! Sophos 收购 Capsule8 开源项目推荐 ...

  7. Java高并发Lock接口讲解,精准通知线程间的执行顺序

    题目:两个线程操作一个变量,实现两个线程对同一个资源一个进行加1操作,另外一个进行减1操作,且需要交替实现,变量的初始值为0.即两个线程对同一个资源进行加一减一交替操作. Lock接口与Conditi ...

  8. 鸿蒙NEXT应用上架与分发步骤详解

    大家好,我是 V 哥.今天的文章来聊一聊HarmonyOS NEXT应用上架.当你开发.调试完HarmonyOS应用/元服务,就可以前往AppGallery Connect申请上架,华为审核通过后,用 ...

  9. Python比较2个json数据是否相等

    1.json数据转换成字典 dict1 = json.load(load_f1) dict2 = json.load(load_f2) 2.将两个字典按key排好序,然后使用zip()函数将两个字典对 ...

  10. 一文解秘Rust如何与Java互操作

    本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议.转载请注明来自 唯你 使用场景 JAVA 与 Rust 互操作让 Rust 可以背靠 Java 大生态来做更多事情,而 Jav ...