转自:http://www.jk1123.com/?p=124
以前写spring的配置文件的时候 一直搞不清楚在xml引入的xsd文件到底是怎么回事,只会从官方文档拷贝一份用,今天细细地研究了一下,原来也不难,就那么回事,记录下来

我们写下如下的示例的xml文件

<?xml version="1.0" encoding="UTF-8"?> 这里添加一些描述信息 c++从入门到放弃 329.0 小笨蛋 javaweb开发实战 212.09 小笨蛋 接下来我们要求对上面的xml文件中的元素和属性加上限制

description元素可以有 也可以没有 而且必须出现在book元素前面

id必须有 且 值是int类型

name必须有 名字是字符串类型

price必须有 价格是double类型

author必须有 作者是字符串

一个books元素中可以有多个book元素

但是我们知道xml是可扩展的标记语言 根本是无限制的 那么我们就要引入books.xsd文件 对他进行限制

写下来如下规则:

<xs:schema xmlns=“http://xml.jk1123.com/books”
xmlns:xs=“http://www.w3.org/2001/XMLSchema”
targetNamespace=“http://xml.jk1123.com/books”
elementFormDefault=“qualified”
version=“0.0.1”>
<!–
xmlns=“http://xml.jk1123.com/books”
这里格式是 xmlns:前缀
但是我们这里为啥没写前缀呢 因为我们决定将此命名空间作为默认命名空间 所以省略不写了
这也是为啥在下方代码中: 我们可以直接写book元素
<xs:element ref=“book” minOccurs=“1” maxOccurs=“unbounded”></xs:element>
如果这里我们没有默认 比方说这里写成
xmlns:books=“http://xml.jk1123.com/books”
也即是说我们将使用该命名空间 前缀是books
那么那段代码应该写成
<xs:element ref=“books:book” minOccurs=“1” maxOccurs=“unbounded”></xs:element>
所以一般情况下,我们都会有一个默认命名空间

   xmlns:xs="http://www.w3.org/2001/XMLSchema"这里的格式是  xmlns:前缀这里表示引入了   w3中xmlSchema官方命名空间 正式由于引入了这个命名空间 所以我们才可以使用下方那些<xs:element> <xs:documentation>  等等一些标签  这个元素都被定义在官方的命名空间中一个schema文件 必定会应用该官方命名空间targetNamespace="http://xml.jk1123.com/books"表示此约束文件的命名空间的名字 这个名字可以随便自定义,但是一般情况下我们都会写成 http://公司域名/根元素的名字 比如这个例子中http://xml.jk1123.com 表示的jk1123我的一个个人域名  books表示该约束文件中根元素elementFormDefault="qualified"表示该约束文件约束的xml 所有的元素都必须有命名空间前缀version="0.0.1"表示此约束文件的版本-->
<xs:element name="books"><!--表示使用该命名空间的根元素是books--><xs:annotation><xs:documentation><!--该xsd的描述信息 -->该xsd文件是对books命名空间的一些约束信息</xs:documentation></xs:annotation><xs:complexType><!--表示该类型是一个复合类型也就是还说在books元素下可以包含子元素和属性--><xs:sequence><!--表示队列 也就是说books元素中可以有以下元素  而且必须是有序的出现 顺序不对也不行 --><xs:element name="description" maxOccurs="1" minOccurs="0"></xs:element><!--上面表示books元素可以包含子标签description 而且最多出现一次 必须出现在book子元素之前 --><xs:element ref="book" minOccurs="1" maxOccurs="unbounded"></xs:element><!--上面表示books元素可以包含子标签book 而且最少出现一次 必须出现在description子元素之后 最多无限制 --></xs:sequence></xs:complexType>
</xs:element>
<xs:element name="book"><xs:complexType><xs:sequence><xs:element type="xs:string"  name="name" minOccurs="1" ></xs:element><xs:element type="xs:double" name="price" minOccurs="1"></xs:element><xs:element type="xs:string" name="author" minOccurs="1"></xs:element></xs:sequence><xs:attribute name="id" use="required" type="xs:int"></xs:attribute></xs:complexType>
</xs:element>

</xs:schema>
如上的books.xsd文件就是对上面books.xml的限制

接下来我们的任务就是将xsd引入 books.xml代码修改如下

<?xml version="1.0" encoding="UTF-8"?>

<books xmlns=“http://xml.jk1123.com/books”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation="
http://xml.jk1123.com/books http://xml.jk1123.com/xsd/books.xsd

">
<!--http://xml.jk1123.com/books http://xml.jk1123.com/xsd/books.xsdxmlns="http://xml.jk1123.com/books"表示引入books命名空间 并且作为默认命名空间xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"表示引入官方的命名空间XMLSchema-instance 并且前缀是xsi 约定俗成xsi当然你可以写 xyz一个xml文件必然会引入该命名空间 因为看下面xsi:schemaLocation="http://xml.jk1123.com/books http://xml.jk1123.com/xsd/books.xsd"使用xsi前缀  使用官方命名空间中schemaLocation元素 该元素的作用是告知命名空间对应xsd位置语法如下xsi:schemaLocation="namespace名字 location地址"http://xml.jk1123.com/books http://xml.jk1123.com/xsd/books.xsd表示该命名空间对应的xsd文件 在http://xml.jk1123.com/xsd/books.xsd网络地址上 xml校验器会去该位置下载xsd文件当然如果你的xsd文件在本地 你可以写相对地址 或者绝对地址 例如http://xml.jk1123.com/books books.xsd表示该xsd跟xml文件在同一个目录下http://xml.jk1123.com/books file://E:\interllijworkspace\beike\xml\src\resource\books.xsd表示该xsd文件在本地磁盘的哪个目录
-->
<description>这里添加一些描述信息
</description>
<book id="1"><name>c++从入门到放弃</name><price>329.0</price><author>小笨蛋</author>
</book>
<book id="2"><name>javaweb开发实战</name><price>212.09</price><author>小笨蛋</author>
</book>

接下来我们再尝试写一些不合法的值 ![在这里插入图片描述](http://img.jk1123.com/blog/2018/04/18/05.png)

xml引用xsd文件规则相关推荐

  1. xml生成xsd文件的方法

    下载trang.jar  地址:http://download.csdn.net/detail/luoww1/8957991 将下载的包放在d:\xmlToxsd 第三步  生成XSD 假设在 d:\ ...

  2. android xml引用系统资源文件,android开发教程之系统资源的使用方法 android资源文件...

    一.颜色资源 1.颜色XML文件格式 //resources根元素 #000000 //color子元素 2.引用格式: java代码中:R.color.color_name  (这是一个int型的数 ...

  3. build.xml引用其它文件的任务

    如我的build.xml中的一个任务: <target name="product.deploy">                 <echo>      ...

  4. 【XML和Java】手写Java程序引用xsd验证xml

    一.首先要有一个xml文件和xsd文件 (1) database.conf.xml <?xml version="1.0" encoding="UTF-8" ...

  5. Java解析XML的一些个人总结及感悟。(webService、xml、xsd)

    1. 个人总结 使用SpringBoot搭建的Soap webService与webClient项目可以参看我写的另外两篇文章: (1)webService (2)webClient 但是对于上面两篇 ...

  6. 如何使用MonoXSD / xsd.exe使用xsd文件生成C#类?

    文章目录 引言 什么是MonoXSD/xsd.exe 如何使用 xsd.exe的参数解析 引言 之前写了这两篇,对OpenDRIVE文件的读写有了一点认识. [C#]读写XML文件总结 OpenDRI ...

  7. org.xml.sax.SAXParseException: Failed to read schema document错误的完美解决方法 以及 Spring如何加载XSD文件

    有时候你会发现过去一直启动正常的系统,某天启动时会报出形如下面的错误: org.xml.sax.SAXParseException: schema_reference.4: Failed to rea ...

  8. XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式

    XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合法构建模块,类似 DTD,但更加强大. 作用有: ①定义 ...

  9. xml文件中引入xsd文件问题解决

    今天在学习log4j2的时候,在进行配置文件编写的时候出现了个小问题,在引入xsd文件后时,eclipse没有提示信息,于是又在网上查阅了一些资料,最后顺利解决 (1)在要编写的xml文件中,首先要写 ...

  10. java xml设置xsd_Eclipse引用XSD实现XML配置文件提示标签的方法

    对于SpringMVC的下载包,XSD文件存放在压缩包里的Schema文件夹里,而且各功能的XSD存放在各自文件夹内,把最新版本的XSD文件取出. Eclipse软件,依次选择Window--Pref ...

最新文章

  1. 【机器学习基本理论】详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解
  2. (五十九)自动存储、静态存储、动态存储
  3. 64位 atol c linux_C 库函数
  4. Synchronized 天天用,实现原理你懂吗?
  5. 首次摆脱对梯度的依赖,CMU等开源Score-CAM:基于置信分数的视觉可解释性
  6. Windows创建类似.project只有后缀名的文件的方法
  7. [汇编语言]实验:更灵活的寻址方式 -应用si和di
  8. MySQL之流程控制结构(分支,循环)
  9. VS2008下改变项目的默认属性
  10. CentOS7安装配置svn及svn hook实战
  11. python+opencv中最近出现的一些变化( OpenCV 官方的 Python tutorial目前好像还没有改过来?) 记一次全景图像的拼接...
  12. 微软开源网络攻防模拟工具CyberBattleSim介绍及源码分析
  13. 计算机病毒的危害有,电脑病毒有什么危害
  14. php计算macd,MT4里的MACD和平常所用的MACD计算公式是什么?
  15. 《黑匣子思维:我们如何更理性地犯错》ipad部分
  16. 为知笔记 | 3 分钟创建格式美美的笔记
  17. 【NOIP2015 DAY1 T3 】斗地主(landlords)
  18. 依照ILSVRC2012在matconvnet-1.0-beta23 中用imagenet训练的情况,训练自己的数据
  19. SecureCRT连接开发板
  20. matlab_app实现一个简单的色彩分析可视化程序

热门文章

  1. MockingBrid(AI拟声)教程
  2. php mysql完全自学手册 smarty_PHPSmarty完全开发手册.pdf
  3. abap捕获当前功能键sy_abap 当前用户 sy
  4. 画出典型计算机控制系统的方框图,计算机控制系统作业参考答案
  5. 水经注地图下载器注册机机器码过长_微图影像下载参数说明
  6. 百度网盘之我的应用数据文件夹删除(保姆版)
  7. oracle数据库行转列(含例子表结构及查询sql)
  8. edius裁剪快捷键_edius常用快捷键
  9. 天刀帐号角色服务器查询系统,天涯明月刀手游角色交易介绍-角色转移系统
  10. fanuc系统md和mf区别_法兰克FANUC加工中心MF系统如何调取机床程序?