文档章节

XML的DTD和Schema约束

Lunqi
 Lunqi
发布于 2015/08/11 22:13
字数 677
阅读 776
收藏 3

为什么要使用约束?

XML是自定义的标签,有时候标签太多,记不住,所以就需要有约束来告诉我能写哪些标签,哪些标签写错了不能识别


XML中有哪几种约束?

有很多约束,其中DTD和Schema约束最为常见。


约束本质上是什么?

约束本质上也是一种xml文件。


DTD约束和Schema约束的区别

特点的区别:

DTD约束较为古老,简单,一些老框架使用DTD作为约束:Struts2和Hibernate都使用DTD作为其XML配置文件的约束

Schema约束功能更为强大,用的更为广泛,Tomcat和Spring都使用Schema作为其xml配置文件的约束。


文件的区别:

DTD约束是已.dtd为后缀命名

Schema约束已.xsd为后缀命名


语法上的区别:

DTD约束的基本语法:

定义元素:<!ELEMENT 元素名称 使用规则>

定义属性:<!ATTLIST 元素名称 属性名称 属性值类型 设置说明>

Schema约束的基本语法:

书写规范跟一个XML文件一样是包含关系

根节点是:<xs:schema xmlns:xs="名称空间">

后面的属性节点和元素节点以及文本节点根据使用的需要进行嵌套,也就是说实际使用的时候怎么嵌套在写Schema文件的时候就怎么嵌套

元素节点:<xs:element name="名称"></xs:element>

属性节点:<xs:attribute name="名称" type="类型" use="使用要求"/>




为什么要学习DTD和Schema约束?

不是为了写.dtd或者.xsd文件!

而是为了知道约束这个概念,到时候能够在写XML的时候更顺手!


XML中如何引入DTD约束?

dtd文档在本地: <!DOCTYPE 根元素 SYSTEM "DTD文档路径">

dtd文档不在本地: <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">

Demo:(来自Struts2的struts.xml)

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">


XML如何引入Schema约束?

1、查看schema文档,找到根元素,在xml中写出来

2、根元素来自哪个名称空间。使用xmlns指令来声明

3、引入的名称空间跟哪个xsd文件对应?使用schemaLocation来指定:两个取值:第一个为名称空间 第二个为xsd文件的路径

Demo:(来自Tomcat的web.xml)

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">



开发过程中如果无法连接到英特网,如何使用约束?

在IDE中给将约束的URI映射到本地即可


© 著作权归作者所有

上一篇: 转:快速排序
下一篇: JUnit单元测试
Lunqi

Lunqi

粉丝 40
博文 35
码字总数 29786
作品 1
杭州
程序员
私信 提问
XML Schema 简介

XML Schema 与DTD(DTD语法概述)一样,也是对一类XML文档进行约束、确定其结构,元素、属性、及数据类型。及XML文档中所使用的元素,实体,元素的属性,元素与实体之间的关系的约束。XML S...

小步2013
2008/03/29
0
0
javaWeb 之 XML基础(二)

一、XML约束模式->纲要 ● 格式良好的(Well-formed)XML ● XML的约束模式 ● XML约束模式语言 ● 有效的(Valid)XML 1、格式良好的(Well-formed)XML ● 计算机程序在处理XML文档之前,首...

oYo字节
2014/03/10
0
0
第三天:XML&反射

一、XML 1 什么是XML XML全称为Extensible Markup Language,意思是可扩展的标记语言。XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的 2、应用常见 <1...

孤魂1996
2017/10/27
0
0
Java程序员从笨鸟到菜鸟之(二十五)XML之Schema验证

XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。XML Schema规定XML文档实例的结构和每个元素/属性的数据类型。 为什么要用Schema DTD 的局...

长平狐
2012/11/12
87
0
XML技术-Schema约束-Dom4j-Xpath详解

这辈子没办法做太多事情所以每一件都要做到精彩绝伦 People can't do too many things in my life,so everything will be wonderful 本文档参考资料w3cschool.CHM API教程文档免费下载地址h...

wyait
2017/04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JWT学习总结

官方 https://jwt.io 英文原版 https://www.ietf.org/rfc/rfc7519.txt 或 https://tools.ietf.org/html/rfc7519 中文翻译 https://www.jianshu.com/p/10f5161dd9df 1. 概述 JSON Web Token(......

冷基
今天
4
0
AOP的学习(1)

AOP 理解AOP编程思想(面向方法、面向切面) spring AOP的概念 方面 -- 功能 目标 -- 原有方法 通知 -- 对原有方法增强的方法 连接点 -- 可以用来连接通知的地方(方法) 切入点 -- 将用来插入...

太猪-YJ
今天
4
0
一张图看懂亮度、明度、光度、光亮度、明亮度

亮度、明度、光亮度,Luminance和Brightness、lightness其实都是一个意思,只是起名字太难了。 提出一个颜色模型后,由于明度的取值与别人的不同,为了表示区别所以就另想一个词而已。 因此在...

linsk1998
昨天
11
0
Python应用:python链表示例

前言 python链表应用源码示例,需要用到python os模块方法、函数和类的应用。 首先,先简单的来了解下什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是...

python小白1
昨天
5
0
Source Insight加载源码

Source Insight是一个图形化的源代码查看工具(当然也可以作为编译工具)。如果一个项目的源代码较多,此工具可以很方便地查找到源代码自建的依赖关系。 1.创建工程 下图为Snort源代码的文件...

天王盖地虎626
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部