场景

项目专栏:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37726

实现

XML Schema

XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性
XML Schema VS DTD:
XML Schema符合XML语法结构。
DOM、SAX等XML API很容易解析出XML Schema文档中的内容。
XML Schema对名称空间支持得非常好。
XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。
XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。
XML Schema不能像DTD一样定义实体,比DTD更复杂,但Xml Schema现在已是w3c组织的标准,它正逐步取代DTD。

名称空间的概念

在XML Schema中,每个约束模式文档都可以被赋以一个唯一的名称空间,名称空间用一个唯一的URI(Uniform Resource Identifier,统一资源标识符)表示。 在Xml文件中书写标签时,可以通过名称空间声明(xmlns),来声明当前编写的标签来自哪个Schema约束文档。

targetNamespace用于指定schema文档中声明的元素关联到哪个名称空间。
elementFormDefault用于指定,是否将所有声明的元素和属性都关联到指定的命名空间, qualified代表是,unqualified代表只关联根元素

举例:

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.badao.cn"elementFormDefault="qualified"><element name="书架"><complexType><sequence maxOccurs="unbounded"><element name="书"><complexType><sequence><element name="书名" type="string" /><element name="作者" type="string" /><element name="售价" type="string" /></sequence></complexType></element></sequence></complexType></element>
</schema>

注意:名称空间的名字语法容易让人混淆,尽管以 http:// 开始,那个 URL 并不指向一个包含模式定义的文件。事实上,这个 URL:http://www.badao.cn根本没有指向任何文件,只是一个分配的名字。

使用命名空间引入Schema

为了在一个XML文档中声明它所遵循的Schema文件的具体位置,通常需要在Xml文档中的根结点中使用schemaLocation属性来指定。

比如:

<?xml version="1.0" encoding="UTF-8"?><书架 xmlns="http://www.badao.cn"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.badao.cn book.xsd"><书><书名>WebService学习</书名><作者>霸道</作者><售价>128.00元</售价></书>
</书架>

1.schemaLocation此属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置,两者之间用空格分隔。

2.xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"这是固定的。

3.如何引入一个Schema约束:

属性:用xmls属性

属性值:对应的schema文件的id(namespace值)

4.如果引入的schema不是w3c组织定义,必须指定schema文件的位置。

5.schema文件的位置由什么属性来指定

属性:schemaLocation

属性值:namespace path

搭建示例项目

新建项目,项目下新建包,包下新建文件book.xsd

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.badao.cn"elementFormDefault="qualified"><element name="书架"><complexType><sequence maxOccurs="unbounded"><element name="书"><complexType><sequence><element name="书名" type="string" /><element name="作者" type="string" /><element name="售价" type="string" /></sequence></complexType></element></sequence></complexType></element>
</schema>

包下再新建book.xml

<?xml version="1.0" encoding= "UTF-8"?><书架 xmlns="http://www.badao.cn"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.badao.cn book.xsd"><书><书名>WebService学习</书名><作者>霸道</作者><售价>128.00元</售价></书>
</书架>

示例代码下载

https://download.csdn.net/download/badao_liumang_qizhi/11150336

WebService入门教程_Schema学习相关推荐

  1. Webservice入门教程_教程目录以及地址

    场景 项目专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37726 实现 1.WebService入门简介教程 https://b ...

  2. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

     深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening 主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通 ...

  3. 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器

     深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器 UFLDL即(unsupervised feature learning & deep learning).这是斯坦福网站上的一篇 ...

  4. Webservice入门教程_用Eclipse的TCP_IP工具监听请求实现端口转接

    场景 项目专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37726 Webservice入门教程_用JDK开发Webservice ...

  5. ps如何修改图片大小尺寸_PS新手入门教程:学习如何修改画布的大小

    PS新手入门教程:学习如何修改画布的大小.在photoshop中,可以把画布理解为一张白纸,而我们要处理的图像可以理解为这张白纸表面上的画.我们修改画布的大小时,图像并不会随着画布的大小而整体变大或缩 ...

  6. MongoDB 入门教程实战学习笔记-31-mongo 聚合查询管道 Aggregation Pipieline

    aggregation 聚合操作处理数据记录并返回计算结果. 聚合操作将多个文档中的值组合在一起, 并且可以对分组数据执行各种操作以返回单个结果. mongodb 提供了三种执行聚合的方法: 聚合管道 ...

  7. ps怎么一下选中多个图层_ps怎么一下选中多个图层_PS入门教程:学习怎么新建图层,创意图层的相关技巧知识......

    PS入门教程:学习怎么新建图层,创意图层的相关技巧知识.下面我们就一起来学习一下吧,单击"图层"面板底部的"创建新图层"按钮或者按ps新建图层快捷键:Ctrl+ ...

  8. python自学入门教程-Python学习教程(一)自学资源分享

    在我看来,基本上可以不负责任地认为,Python 可以做任何事情.无论是从入门级选手到专业级选手都在做的爬虫,还是Web 程序开发.桌面程序开发还是科学计算.图像处理,Python都可以胜任. 或许是 ...

  9. Python入门教程 | Python学习的必经阶段

    很多小伙伴在学习Python之前会犹犹豫豫,生怕自己学了半天之后白费力气.然而Python学习并不能一蹴而就,有些入门教程只讲究快速,却忽略了一些小白进阶中必备的阶段努力.  阶段一:前辈领进门. 第 ...

最新文章

  1. 如何成为一个好的测试工程师(转载,大意)
  2. java jpasswordfield_JAVA中JPasswordField实现密码的确认
  3. 【2016年第2期】大数据背景下的治理现代化:何以可能与何以可为(上)
  4. 【数字逻辑设计】Logisim构建全加器
  5. 2015/7/24 (等待回调,结果是盘中回调,盘末拉升,错过了进仓机会吗?详情进入...
  6. python3笔记-文件操作
  7. OPPO R9sPlus怎么刷机 OPPO R9sPlus的刷机教程 OPPO R9sPlus完美解除账号锁
  8. cocos2dx 3.16 VS+BabeLua lua环境配置与代码调试
  9. IDEA如何设置author头注解
  10. fgetc getc函数
  11. 领导力21法则 非常不错
  12. Android:根据日期计算星期几
  13. 批量下载网页图片,python只需23行代码
  14. 基于javaweb+mysql的农产品水果店销售管理系统
  15. linux 内网gcc版本安装,linux下手动安装/升级GCC到较高版本
  16. vm14下centos7配置NAT模式
  17. 大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 21
  18. Hyper-V虚拟化
  19. Mysql有四种事务隔离级别,详解脏读、不可重复读、幻读
  20. Error: Unable to access jarfile xxx.jar

热门文章

  1. in python_数学 in python
  2. python汽车仿真_汽车山羊问题的分析以及Python和MATLAB仿真实验
  3. linux 无线 网桥,基于Linux无线网桥及无线网络设备驱动分析与研究
  4. msp430发送pwm信号_如何采用MSP430单片机实现PWM信号
  5. python 余弦距离_距离公式汇总以及Python实现
  6. JAVA窗口sin值_大厂经典笔试题—LeetCode03无重复字符的最长子串(滑动窗口)
  7. android 数据线读串口数据线,一种串口写频及USB数据二合一数据线的制作方法
  8. js 字符和html和数值拼接,js中substring和substr的用法(获取字符串为整个html页面中的某个数值)...
  9. java要频繁调用容器时_JAVA基础面试题
  10. quad8是matlab中调用那个,Matlab 数值积分