例一:重点理解名称空间的相关概念。

下面的例子是一个XML Schema文件,名为"note.xsd"

[html] view plaincopy

1.  <?xml version="1.0"?>

2.  <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

3.  targetNamespace="http://www.w3schools.com"

4.  xmlns="http://www.w3schools.com"

5.  elementFormDefault="qualified">

6.  <xsd:element name="note">

7.       <xsd:complexType>

8.          <xsd:sequence>

9.            <xsd:element name="to" type="xs:string"/>

10.            <xsd:element name="from" type="xs:string"/>

11.            <xsd:element name="heading" type="xs:string"/>

12.            <xsd:element name="body" type="xs:string"/>

13.         </xsd:sequence>

14.       </xsd:complexType>

15. </xsd:element>

16. </xsd:schema>

下面的XML文档和上文给出的XML Schema相关联,名为"note.xml"。并且下文的讨论将围绕这两个文档展开。

[html] view plaincopy

1.  <?xml version="1.0"?>

2.  <note xmlns="http://www.w3schools.com"

3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

4.  xsi:schemaLocation="http://www.w3schools.com note.xsd">

5.  <to>Tove</to>

6.  <from>Jani</from>

7.  <heading>Reminder</heading>

8.  <body>Don't forget me this weekend!</body>

9.  </note>

此片段:xmlns:xsd="http://www.w3.org/2001/XMLSchema",表明此schema中使用的元素和数据类型来自于"http://www.w3.org/2001/XMLSchema"名称空间(namespace)。它同样指出来自于"http://www.w3.org/2001/XMLSchema"名称空间的元素和数据类型必须使用带"xsd: "前缀。作为名称空间的标识符(在声明中作为元素或属性的前缀),你也可以不使用xsd或xsi。这个 xmlns属性包含了基本的XML schema元素,比如element, attribute,complexType, group, simpleType等。

对于任何一个XML Schema定义文档(XSD)都有一个最顶层的schema (XSD)元素。而且该schema (XSD)元素定义必须包含这个名称空间:http://www.w3.org/2001/XMLSchema。即此名称空间是由XML模式规范定义的标准名称空间-所有XML模式元素必须属于该名称空间。
     此片段:targetNamespace="http://www.w3schools.com",表明此schema (note, to, from, heading, body)定义的元素来自于"http://www.w3schools.com"名称空间。这个targetNamespace属性表示了该schema所对应的名称空间的URI。也就是说在引用该Schema的其它文档(包括自身文档)中要声明名称空间,其URI应该是targetNamespace的属性值。例如在这里因为要用到note.xsd自己定义的扩展数据类型(note, to, from,heading, body),所以也声明了名称空间xmlns="http://www.w3schools.com"。而且该名称空间是默认名称空间(没有前缀)。targetNamespace属性为在模式中显式创建的所有新类型均声明了XML名称空间。

我们再来看由该schema规定的XML文档note.xml的开头将是什么样子:

[html] view plaincopy

1.  <note xmlns="http://www.w3schools.com"

2.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

3.  xsi:schemaLocation="http://www.w3schools.com note.xsd">

其中缺省名称空间声明xmlns="http://www.w3schools.com"就是和刚刚声明的XML Schema的名称空间相结合来规定该XML文档。(即该文档用到了此名称空间中定义的数据)xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"是任何XML实例文档固有的XML模式实例名称空间,它由XML模式规范定义。而xsi:schemaLocation="http://www.w3schools.com note.xsd"则规定了该名称空间所对应的schema的位置,即在相同路径的note.xsd文件。

例二:重点理解Schema文档使用自身定义类型

xsd文件中定义了一个targetNameSpace后,其内部定义的元素,属性,类型等都属于该targetNameSpace,其自身或外部xsd文件使用这些元素,属性等都必须从定义的targetNameSpace中找。修改一下note.xsd,去除默认名称空间的声明,并添加一个复杂类型:

[html] view plaincopy

1.  <?xml version="1.0"?>

2.  <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

3.  targetNamespace="http://www.w3schools.com"

4.  elementFormDefault="qualified">

5.  <xsd:element name="note">

6.       <xsd:complexType>

7.         <xsd:sequence>

8.        <xsd:element name="to" type="xs:string"/>

9.        <xsd:element name="from" type="xs:string"/>

10. <xsd:element name="heading" type="xs:string"/>

11.        <xsd:element name="body" type="xs:string"/>

12.        </xsd:sequence>

13.       </xsd:complexType>

14. </xsd:element>

15. <xsd:element name="Student" type="stu"/>

16.   <xsd:complexType name="stu">

17.   <xsd:sequence>

18.    <xsd:element name="Name" type="xs:string"/>

19.    <xsd:element name="Class" type="xs:string"/>

20.   </xsd:sequence>

21.  </xsd:complexType>

22. </xsd:schema>

上述代码中,复杂类型stu是找不到的,因为你定义了一个名称空间"http://www.w3schools.com",该复杂类型存在于"http://www.w3schools.com"中,因此应该修改代码如下:

[html] view plaincopy

1.  <?xml version="1.0"?>

2.  <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

3.  targetNamespace="http://www.w3schools.com"

4.  xmlns:student="http://www.w3schools.com"

5.  elementFormDefault="qualified">

6.  <xsd:element name="note">

7.       <xsd:complexType>

8.         <xsd:sequence>

9.        <xsd:element name="to" type="xs:string"/>

10.        <xsd:element name="from" type="xs:string"/>

11. <xsd:element name="heading" type="xs:string"/>

12.        <xsd:element name="body" type="xs:string"/>

13.        </xsd:sequence>

14.       </xsd:complexType>

15. </xsd:element>

16. <xsd:element name="Student" type="student:stu"/>

17.   <xsd:complexType name="stu">

18.   <xsd:sequence>

19.    <xsd:element name="Name" type="xs:string"/>

20.    <xsd:element name="Class" type="xs:string"/>

21.   </xsd:sequence>

22.  </xsd:complexType>

23. </xsd:schema>

若自身并不使用重用组件,仅供外部使用的话,则只定义targetNameSpace就可以,不用指定别名。
        通过上面的例子,我们可以很深刻的理解targetNameSpace。targetNamespace定义了Schema定义的新元素与属性的名称空间。而"http://www.w3.org/2001/XMLSchema"名称空间则定义了element, attribute, complexType, group,simpleType等元素。

理解了上面的两个例子,Schema的命名空间的内容应该就明了了。

XML和Schema命名空间详解---实例篇相关推荐

  1. React Native Animated 动画详解 - 实例篇 (这篇就够了)

    之前已经更新过Animated动画基础篇相关知识点,今天讲解Animated.Value,Animated.ValueXY以及相关动画库使用实例.学习完 本篇相信大家对于动画库的基本使用应该是没有问题 ...

  2. 【JAVA秘籍心法篇-Spring】Spring XML解析源码详解

    [JAVA秘籍心法篇-Spring]Spring XML解析源码详解 所谓天下武功,无坚不摧,唯快不破.但有又太极拳法以快制慢,以柔克刚.武功外式有拳打脚踢,刀剑棍棒,又有内功易筋经九阳神功.所有外功 ...

  3. Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇

    Oracle11g安装教程.配置实例.监听.客户端程序详解_Windows篇 文章目录 Oracle11g安装教程.配置实例.监听.客户端程序详解_Windows篇 前言 一.数据库的安装前准备,前提 ...

  4. Message,MessageQueue,Looper,Handler详解+实例

    Message,MessageQueue,Looper,Handler详解+实例 原文地址 Android的Handler使用(这篇简单介绍Handler的使用) 一.几个关键概念 1.Message ...

  5. java 配置jmstemplate_SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解...

    1.导入jar包: org.springframework.boot spring-boot-starter-activemq org.apache.activemq activemq-pool 2. ...

  6. pythonxml库_对python 生成拼接xml报文的示例详解

    最近临时工作要生成xml报名,通过MQ接口发送.简单小程序. 自增长拼成xml报文 Test_001.py # encoding=utf-8 import time orderId = '' s1= ...

  7. Linux使用详解(进阶篇)

    文章目录 Linux使用详解(进阶篇) 1.Linux目录说明 2.操作防火墙 3.ulimit命令和history命令 4.RPM和Yum的使用 5.设置系统字符集 6.vi & vim编辑 ...

  8. Openharmony应用NAPI详解--基础篇

    NAPI是什么? 简单点理解就是在Openharmony里,实现上层js或ets应用与底层C/C++之间交互的框架. Openharmony里的官方解释:NAPI(Native API)组件是一套对外 ...

  9. MSTP详解- 原理篇

    MSTP详解-原理篇 一. MSTP产生背景 二. MSTP基本概念 三.MSTP端口角色 四.MSTP的端口状态与收敛机制 五. MSTP 拓扑计算原理 5.1 MSTP 向量优先级 5.2 CIS ...

最新文章

  1. Pycharm中使用github
  2. thinkphp 5数据库操作
  3. 2.Redis数据操作
  4. dnf会修改跨区服务器吗,dnf新跨区系统上线之后,整个游戏只有9个大区
  5. 线程的基本状态 java 1615477073
  6. [HTTP] HTTP的缓存机制
  7. scrapy爬取汽车之家宝马5系图片
  8. python提取txt字符串,教你一招!Python读取文件内容为字符串的方法
  9. RIP-OSPF-EIGRP 相互再发布
  10. 【动态规划笔记】背包问题:搬寝室
  11. 聊天机器人5步重塑酒店业
  12. 机器学习实战——3.4 示例:使用决策树预测隐形眼镜类型
  13. 时间复杂度与空间复杂度-o(1)、o(n)、o(logn)、o(nlogn)、斐波那契
  14. 腾讯云租用CentOS 7.2 64
  15. Unrecognized Windows Sockets error: 10106: create 的解决
  16. 学历学籍系统-Web服务开发实验(REST API)
  17. 哈希表与哈希(Hash)算法
  18. 博客项目——登录功能实现
  19. NAS存储的定义和优势介绍
  20. android 六棱形分析图,Android自定义View_菱形图片

热门文章

  1. P17安全领袖圆桌:安全市场迎来千亿发展机遇,腾讯携手产业链伙伴共建安全生态
  2. 大数据可视化(八)数据可视化中的交互
  3. MacBook Pro 15寸 Late 2013 更换2TB NVME硬盘利用Big Sur完美修复睡眠唤醒及开机时长问题
  4. JGG:肠道菌群与COVID-19重症风险密切关联
  5. 集合长度可变的实现原理(解析为什么集合长度可变)
  6. Java设计模式超级详细分析(包含代码)
  7. Linux service之自定义服务
  8. 20190605学习日记
  9. java面向对象三大特性难吗_JAVA面向对象的三大特性
  10. 大数据高级开发工程师——Spark学习笔记(9)