XML我们并不陌生,在企业级应用中有很广的用途。具体就不再说,下面介绍一下DTD,XSD的区别并以XSD为例看spring中定义与使用。
1.DTD(Documnet Type Definition)
DTD即文档类型定义,是一种XML约束模式语言,是XML文件的验证机制,属于XML文件组成的一部分。
DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。 一个 DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。

DTD和XSD相比:DTD 是使用非 XML 语法编写的。
DTD 不可扩展,不支持命名空间,只提供非常有限的数据类型 .

2.XSD(XML Schemas Definition)
XML Schema语言也就是XSD。XML Schema描述了XML文档的结构。
可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。
一个XML Schema会定义:文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认 和固定值。
XSD是DTD替代者的原因,一是据将来的条件可扩展,二是比DTD丰富和有用,三是用XML书写,四是支持数据类型,五是支持命名空间。
XML Schema的优点:
1) XML Schema基于XML,没有专门的语法
2) XML Schema可以象其他XML文件一样解析和处理
3) XML Schema比DTD提供了更丰富的数据类型.
4) XML Schema提供可扩充的数据模型。
5) XML Schema支持综合命名空间
6) XML Schema支持属性组。

3.spring中spring-beans-2.5.xsd

Java代码  
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <xsd:schema xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  4. targetNamespace="http://www.springframework.org/schema/beans">
  5. <!-- base types -->
  6. <xsd:complexType name="identifiedType" abstract="true">
  7. <xsd:attribute name="id" type="xsd:ID">
  8. </xsd:attribute>
  9. </xsd:complexType>
  10. </xsd:schema>

(1)schema元素为所有XML Schema模式文档的根元素,它用于声明该XML文档是一个XML Schema文档。该模式文档本身也一个XML文档,自己的名称空间为xmlns:xsd="http://www.w3.org/2001/XMLSchema",其中xsd为其前缀。
(2)Schema中targetNamespace定义了Schema定义出的新元素与属性的名称空间。也就是它是对所定义的XML模型进行限制:限制定义出的元素,或者属性的名称空间.

4.Spring中配置文件对XSD文件的使用

Java代码  
  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd>

</beans>
在使用XML Schema 文档对XML实例文档进行检验,除了要声明名称空间外(xmlns="http://www.springframework.org/schema/beans"),还必须指定该名称空间所对应的XML Schema文档的存储位置.
通过schemaLocation属性来指定名称空间所对应的XML Schema文档的存储位置,它包含两个部分,一部分是名称空间的URI,第二部分就是该名称空间所标识的XML Schema文件位置或URL地址
(xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd)

XML中DTD,XSD的区别与应用相关推荐

  1. 深入理解web.xml中配置/和/*的区别

    在用SpringMVC进行web开发的时候,如果将DispathcerServlet对外访问的虚拟路径配置成/时,需要在Spring的配置文件中配置<mvc:default-servlet-ha ...

  2. XML中DTD的介绍及使用

    DTD介绍: DTD英文为(Document Type Definition),中文意思为"文档类型定义". 每个XML文件可以携带一个自身格式的描述,所谓格式描述就是我的XML文 ...

  3. xsd java引用_web.xml文件的 xsd引用(或dtd引用)学习

    1. 为什么web.xml会有不同版本的xsd引用: JDK依赖变化: 或 servlet(JAVA EE)自身API的改变: 2. 为什么会有dtd和xsd两个版本的区别 我是在这篇文章中看到的,作 ...

  4. xml中xsd/xsi/xsl/xmlns的区别和联系

    (2023.01.13Fri才明白,具体解析xml文件的不是xml文件本身,xsi也不是在解析xml文件,只是检验xml文件是否符合标准,xsd是在限制xml文件的内容.而具体解析某个element究 ...

  5. 在XML里的XSD和DTD以及standalone的使用

    有关XML结构中的XSD和DTD以及standalone的使用 XmlDeclaration declare= document.CreateXmlDeclaration("1.0" ...

  6. DTD和XSD的区别

    在结构化文档中,定义文档类型有两种技术:DTD和XSD.今天来讨论什么是DTD,什么又是XSD,以及他们之间的区别. 虽然DTD(Document Type Definition)和XSD(XML S ...

  7. Eclipse中配置约束(DTD,XSD)

    在Eclipse中本地配置schema约束(xsd): 1.比如配置spring的applicationContext.xml中的约束条件: 复制applicationContext.xml中如图: ...

  8. web.xml中filter,servlet和listener区别

    2019独角兽企业重金招聘Python工程师标准>>> 1.Filter与Servlet的区别和联系,点击查看详情 2.Filter的执行顺序与实例,点击查看详情 Filter 实现 ...

  9. web.xml中的ContextLoaderListener和DispatcherServlet区别

    web.xml中的ContextLoaderListener和DispatcherServlet区别 ContextLoaderListener和DispatcherServlet都会在Web容器启动 ...

最新文章

  1. 分治策略解决幂乘问题
  2. 你可能不知道的Shell
  3. 原子变量、volatile、synchronized的可见性和原子性比较
  4. Java 技术之垃圾回收机制
  5. MYsql:net start mysql 失败 发生系统错误5
  6. 如何攻破容器持久化存储挑战?
  7. [Database] 数据库完整性
  8. mysql使用某一列的内容赋值给另外一列,concat()函数
  9. redis的各种数据集的列举功能
  10. 声明为指针,定义为数组,声明为数组,定义为指针
  11. pdn阻抗测试_信号线的特征阻抗和PDN的阻抗区别
  12. android 数据存储之 读写文件
  13. 阿里云容器服务Kubernetes之Jenkins X(1)-安装部署实践篇
  14. PAIP.vs2010打开某个FORM窗体设计视图时崩溃时
  15. CRM如何管理企业销售流程
  16. 【安全牛学习笔记】拒绝服务攻击工具-NMAP、匿名者拒绝服务工具包(匿名者发布的DoS工具)、其他拒绝服务工具-XOIC、HULK、DDOSIM、GoldenEye
  17. python 读写pcd
  18. 侯世达:为什么人工智能还远远谈不上「智能」?
  19. Java实现Zip压缩包解压
  20. 深度学习端到端的优缺点和网络泛化性

热门文章

  1. 【STM32F429开发板用户手册】第18章 STM32F429的GPIO应用之跑马灯
  2. android 手机分区失败怎么办,一种Android系统Data分区自修复方法及系统专利_专利查询 - 天眼查...
  3. redis数据库的设计实例
  4. Visual Studio 2019 (VS2019)安装Spy++工具
  5. 同步 fork(Syncing a fork)
  6. 在不停业务的情况下重启ES集群中的节点
  7. ElasticSearch搭建集群
  8. 数据分析课设(SPSS,EVIEWS,R)【理论】
  9. Mysql技术内幕innodb引擎笔记
  10. 第二章:如何撰写学术论文(文科)