命名空间

命名空间概述

标记中出现了同名不同义的情况,极其容易造成含义混乱。命名空间就是由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. git工具:sourcetree使用中的部分问题

    这段时间经常用到这个工具.就当记个笔记,记录一下我的一些问题. 问题一: 如果想要拉取远端更新: 第一步:先登陆sourcetree,点击"抓取". 第二步:在终端输入:git s ...

  2. 三步搞定 ARM64 离线部署 Kubernetess + KubeSphere

    背景 随着我国对信息安全的愈发重视,国产化的趋势也越来越浓,包括国产操作系统.国产 CPU 等.由于 ARM 架构国产 CPU 在维持创新可信和先进性方面的潜在优势,其应用也将会越来越广泛. Kube ...

  3. 云原生爱好者周刊:Dapr 成为 CNCF 孵化项目

    云原生一周动态要闻: Dapr 加入 CNCF 孵化器 Knative 1.0 发布 Canonical 开始提供针对 Intel CPU 优化的 Ubuntu 图像 Longhorn 为 CNCF ...

  4. python多线程应用-批量下载视频课程(宠医堂)

    #!/usr/bin/env python # -*- coding: UTF-8 -*- ''' @Name: cyt_record_download @IDE:PyCharm @Author:qt ...

  5. redis的主从复制master/slaver

    什么是Redis的复制 ​ 就是我们常说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主. 复制原理 Slave启动成 ...

  6. go高并发之路——本地缓存

    一.使用场景 试想一个场景,有一个配置服务系统,里面存储着各种各样的配置,比如直播间的直播信息.点赞.签到.红包.带货等等.这些配置信息有两个特点: 1.并发量可能会特别特别大,试想一下,一个几十万人 ...

  7. Selenium测试form表单之下拉列表

    处理form表单中的下拉列表,需要用到一个Selenium工具类-Select 一.Select工具类常用属性和方法 方法/属性 描述 1 select_by_value() 根据值选择 2 sele ...

  8. Java面试题中高级进阶(JVM篇Java内存)

    前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Java内存结构?说说对象分配规则?描述一下JVM加载class文件的原理机制?似乎有点模糊了,那就大概看一下面试题吧.好记性不如烂键 ...

  9. TCP-UDP-Socket调试工具以及使用教程(亲测好用!)

    前言 TCP-UDP老程序都不陌生吧,面试常问.所以在网络编程与网络应用开发的过程中,调试是一个至关重要的环节,它帮助开发者确保数据能够准确无误地在不同节点之间传输.尤其当涉及到TCP/IP.UDP等 ...

  10. js实现浏览器后退页面刷新

    最近在开发中遇到一个问题: 在一个列表页面,点击进入详情,详情页面对其状态操作,其详情页面有做修改,然后点击浏览器后退,返回到列表页,在列表页面状态还是操作之前的,为解决状态统一需要手动刷新改列表页. ...