xml-dtd
dtd用于校验XML的语法。 
	dtd步骤:
		1、看XML中有多少个元素,有几个元素,在dtd文件中写几个<!ELEMENT>
		2、判断元素是简单元素还是复杂元素
			-复杂元素:有子元素的元素
				<!ELEMENT 元素名称 (子元素)>
			-简单元素:没有子元素
				<!ELEMENT 元素名称 (#PCDATA)>
		3、需要在XML文件中引入dtd文件
			<!DOCTYPE 根元素名称  	SYSTEM "dtd文件的路径">
dtd的三种引入方式:
		1、引入外部的dtd文件
			<!DOCTYPE 根元素名称  SYSTEM "dtd路径">
		2、使用内部的dtd文件
			-<!ELEMENT  根元素名称[
				<!ELEMENT 根元素名称(子元素1,子元素2)>
				<!ELEMENT  子元素1 (#PCDATA)>
				<!ELEMENT 子元素2 (#PCDATA)>
			 ]>
			-<!ELEMENT  person[
				<!ELEMENT person(name,age)>
				<!ELEMENT  name (#PCDATA)>
				<!ELEMENT age (#PCDATA)>
			 ]>
		3、使用外部的dtd文件(网络上的dtd文件)
			-<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">
			-框架Struts2使用的是外部的dtd文件
使用dtd定义元素
		语法:<!ELEMENT  元素名    约束>
		简单元素:没有子元素的元素
		约束简单元素   
			(#PCDATA):约束子元素是字符串类型
			EMPTY:元素为空(不能有内容)
			ANY:任意类型
		复杂元素:
			<!ELEMENT person (name,age)>
			<!ELEMENT 根元素名称 (子元素1,子元素2)>
				-子元素只能出现一次
				-表示子元素出现的次数
					+:表示一次或者多次  例:<!ELEMENT person (name+,age)>
					?:0次或者一次          例:<!ELEMENT person (name,age?)>
					*:0次或者多次          例:<!ELEMENT person (name,age*)>
				-子元素直接使用逗号进行隔开
					表示元素出现的顺序	例:<!ELEMENT person (name,age)>
				-子元素直接使用竖线进行隔开
					表示元素只能出现其中一个  例:<!ELEMENT person (name|age)>
使用dtd定义属性
		语法:在子元素上面加属性约束:<!ATTLIST 元素名称
									   属性名称 属性类型   属性的约束 
							   >
		属性类型:
			-CDATA:字符串
			例:  <!ATTLIST name
			    	ID2 CDATA #REQUIRED
			    >
			-枚举:表示只能在一定的范围内出现值,但是只能每次出现其中的一个
			例:<!ELEMENT  person[
				<!ELEMENT person(name,age)>
				<!ELEMENT  name (#PCDATA)>
				<!ELEMENT age (#PCDATA)>
<!ATTLIST age
			    	ID1 (AA|BB|CC) #REQUIRED
			    >
			   ]>
			   <person>
			   		<name>zhangsan</name>
			   		<age ID1="AA" >20</age>
			   </person>
			-ID:表示属性只能是字母或者下划线开头
				例: <!ATTLIST name
			    		ID1 ID #REQUIRED
			    	>
		-属性的约束:
			-#REQUIRED:表示属性必须出现
			-#IMPLIED:表示属性可有可无
			-#FIXED:表示一个固定值    #FIXED “ABC”;
			-直接值: 不写属性,使用直接值
					写属性值,使用设置那个值
				例:<!ATTLIST name
			    		ID1 CDATA "aaa";
			    	>
定义引用实体
		语法:<!ENTITY 实体名称   "实体的值">
		使用实体 &实体名称;区分大小写      例:&TEST;
注意:
			定义实体需要写在内部dtd里面;
			如果写在外部的dtd里面,有某些浏览器,内容得不到
xml的解析简介(写到Java代码)
		-xml是标记型文档
		-js使用dom解析标记型文档?
			-根据html的层级结构,在内存中分配一个树形结构,把html的标签,属性和文本都封装成对象
			-document对象、element对象、属性对象、文本对象、Node节点对象
-xml的解析方式(技术):dom和sax(重点中重点)
			-使用dom解析:根据xml的层级结构在内存中分配一个树形结构,把xml的标签,属性和文本都封装成对象。
					优点:很方便实现增删改操作
					缺点:如果文件过大,造成内存溢出
			-sax解析:采用事件驱动,边读边解析从上到下,一行一行的解析,解析到某一个对象,把对象名称返回
					优点:如果文件过大不会造成内存溢出,方便查询操作
					缺点:不能实现增删改操作
解析xml,首先需要解析器
			-不同的公司和组织提供了 针对dom和sax方式的解析器,通过API方式提供
			 --sun公司提供了针对dom和sax解析器    jaxp
			 --dom4j组织,针对dom和sax解析器  dom4j(--实际开发中---)
			 --jdom组织,针对dom和sax解析器    jdom
jaxp的API的查看(JDK API 1.6.0帮助文档)
		jaxp是javase的一部分
		javax.xml.parsers包中,
			四个类:分别是针对dom和sax解析使用的类
			dom:DocumentBuilder:解析器类
					这个类是一个抽象类,不能new
					可以使用DocumentBuilderFactory.newDocumentBuilder()方法获取
一个方法,可以解析xml parse("xml路径") 返回是Document整个文档
					返回的document是一个接口,父节点是Node,如果在document里面找不到想要的方法,到Node里面去找
					在document里面方法
DocumentBuilderFactory:解析器工厂
					newInstance()获取,DocumentBuilderFactory的实例。
sax:
				SAXParser:解析器类
				SAXParser
xml的简介
		extensible Markup Language:可扩展标记型语言
				-标记型语言:html是标记型语言
					-也是使用标签来操作
				-可扩展:
					-html里面的标签是固定,每个标签都有特定的含义<h1><br/>
					-标签可以自己定义,可以写中文的标签<person></person>、<猫></猫>
		xml用途
				-html是用于显示数据,xml也可以显示数据(不是主要功能)
				-xml主要功能,为了存储数据
		xml是w3c组织发布的技术
		xml有两个版本 1.0 1.1 
				-使用都是1.0版本(1.1版本不能向下兼容)
	xml的应用
		不同的系统之间传输数据
				-qq之间数据的传输
		用来表示生活中有关系的数据 例:国家和城市
		经常用在文件配置
			-比如现在链接数据库 肯定知道数据库的用户名和密码,数据名称
xml的语法
		1、xml的文档声明
			-创建一个文件,后缀名是.xml
			-如果写xml,第一步 必须有一个文档声明(写了文档声明之后,表示写XML文件的内容)
			-<?xml version="1.0" encoding="gbk">
			-文档声明必须写在第一行第一列
-属性
				-version:xml的版本1.0
				-encoding:xml编码 gbk utf-8  ISO8859-1(不包含中文)
				-standalone:是否需要依赖其他文件   yes/no
-xml的中文乱码问题解决
				-保存时候的编码和设置打开时候的编码一致,不会出现乱码
		2、定义元素(标签)
		3、定义属性
		4、注释
		5、特殊字符
		6、CDATA区
		7、PI指令
xml的元素定义
		-标签定义
		-标签定义有开始必须要有结束:<person></person>
		-标签没有内容,可以在标签内结束<aa/>
		-标签可以嵌套,必须要合理嵌套
			-合理嵌套<aa><bb></bb></aa>
		-一个xml中,只能有一个根标签,其他标签都是这个标签下面的标签
-在xml中 把空格和换行都当成内容来解析
			-下面这两段代码含义是不一样的,把空格原样输出
				<aa>111</aa>
				<aa>  
				    111
				</aa>
		-xml标签可以是中文
		-xml中标签的名称规则
			1)xml代码区分大小写
				<a><A>:这两个标签是不一样的
			2)xml标签不能以数字和下划线(_)开头
			3)xml的标签不能以xml、XML、Xml等开头
			4)xml的标签不能包含空格和冒号
xml中属性的定义
		-html是标记型文档,可以由属性
		-xml也是标记型文档,可以有属性
属性定义的要求
			!)一个标签上可以有多个属性
			2)属性名称不能相同
			3)属性名称和属性值之间使用= ,属性值使用引号包起来(单引号,双引号都可以)
			4)xml属性的名称规范和元素的名称规范一致
xml中的注释
		-写法<!--xml的注释 -->
		-注意的地方
			-注释不能嵌套
			-注释也不能放到第一行,第一行第一列必须放文档声明
xml中的特殊字符
		-如果想要在xml中现在a<b,不能正常显示,因为把<当做标签
		-如果就想要显示,需要对特殊字符<进行转义
			< <
			> >
CDATA区--了解
		-可以解决多个字符都需要转义的操作 
		-if(a<b && B<c  && d>f){}把这些内容放到CDATA区里面,不需要转义了
		-写法:
			<![CDATA [ 内容 ]>
			-代码
			<![CDATA [<b>  if(a<b && B<c  && d>f){}  </b>]]>
			把特殊字符,当做文本内容,而不是标签
	PI指令(处理指令)--了解
		-可以在xml中设置样式
		-写法:<?xml-stylesheet type="text/css" href="CSS路径" ?>
xml的约束
		为什么需要约束?
			比如现在定义一个person的xml文件,只想要这个文件里面保存人多信息,比如name age等,但是如果在xml文件中
			写了一个标签<猫>,发现可以正常显示,因为符合语法规范,但是猫肯定不是人的信息,xml的标签是自定义的,需要技术来规定xml
			中只能出现的元素,这个时候需要约束。
xml的约束技术:dtd约束 和schema约束 ---看懂
xml-dtd的更多相关文章
- XML DTD验证
		
XML DTD验证 一.什么是DTD 文档类型定义(DTD:Document Type Definition)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. DTD 可被成行 ...
 - JavaScripts学习日记——XML  DTD  Schema
		
今日关键词: XML DTD Schema 1.XML 1 XML的概述 1.1 什么是XML XML全称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和 ...
 - XML Dtd Schema
		
在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 整体比较: XML Schema符合XML语法结构. DOM.SAX等XML API很容易解析出XML Schem ...
 - XML DTD详解(转)
		
前情提要与本文内容介绍 前面的两篇XML相关博文: 第一篇是介绍格式正规的XML: 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节 第二篇介绍DTD,引入有效的XML的概念(符合语 ...
 - XML——DTD
		
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
 - 通过实例来学习XML DTD
		
使用DTD的原因: 注意:由于它自身的一些缺点,DTD终将被淘汰,但是它还是要学习的.学习完DTD后,后面继续学习XML Schema. 1,通过 DTD,您的每一个 XML 文件均可携带一个有关其自 ...
 - XML DTD语法详解
		
XML DTD详解 XML DTD详解 前情提要与本文内容介绍 前面的两篇XML相关博文: 第一篇是介绍格式正规的XML: 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节 第二 ...
 - XML DTD详解
		
XML DTD详解 一个有效的XML文档必然是结构正规的,结构正规的XML文档不一定是有效的,即有效的是格式正规的一个子集. 本文详细介绍DTD,包括其对元素的定义,属性的定义,以及实体的定义. 元素 ...
 - xml dtd 定义元素
		
ANY 如果需要定义某个元素的值可以是任意类型,可采用如下语法 <!ELEMENT 元素名 ANY> DTD必须定义XML文档中允许出现的所有元素,所以下面这样是不行的,因为<hel ...
 - xml dtd 内部dtd 外部DTD 公共DTD
		
(一个可以用来校验xml有效性的网站:http://www.xmlvalidation.com/) (经测试 eclipse neon 对于dtd的校验并不严格,比如DOCTYPE后面的根元素名与实际 ...
 
随机推荐
- Go web编程学习笔记——未完待续
			
1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...
 - 逆元-P3811 【模板】乘法逆元-洛谷luogu
			
https://www.cnblogs.com/zjp-shadow/p/7773566.html -------------------------------------------------- ...
 - 记一次 OutOfMemoryError: Java heap space 的排错
			
1.情况概述 公司以前的某报名系统,项目启动后,在经过用户一段时间的使用之后,项目响应便开始变得极其缓慢,最后几乎毫无反应.日志里输出了一些似乎无关痛痒的异常,逐步修复,项目仍然出现这种情况,且 &q ...
 - 还是要习惯在linux环境下作Java开发
			
要FQ 怎么在ubuntu上安装jdk 网址: https://www.youtube.com/watch?v=NZB3Iy7Lve4 需要网站:http://p.web.umkc.edu/pv6xc ...
 - 深入理解[Future模式]原理与技术
			
1.Future模式 Future模式和多线程技术密切相关,可以说是利用多线程技术优化程序的一个实例. 在程序设计中,当某一段程序提交了一个请求,期望得到一个答复.但非常不幸的是,服务程序对这个请求的 ...
 - Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍
			
作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载. 萌芽阶段 很久之前就开始打算整理一下自己的技术博客了,由于各种原因(借口 ...
 - xampp 使用过程中刚遇到的问题记录
			
开始使用XAMPP的时候,都是可以正常连接的,但是过一段时间后,在用它创建表或其他操作,会报错,提示如下错误 Access denied for user ''@'localhost' to data ...
 - OO博客作业1:第1-3周作业总结
			
(1)基于度量来分析自己的程序结构 注:UML图中每个划分了的圆角矩形代表一个类或接口,箭头可代表创建.访问数据等行为.类的图形内部分为3个部分,从上到下依次是类的名称.类包含的实例变量(属性).类实 ...
 - Technical Development Guide---for Google
			
Technical Development Guide This guide provides tips and resources to help you develop your technica ...
 - CodeForces 550E	Brackets in Implications 推理
			
给出一个四个规则 0->0=1 0->1=1 1->0=0 1->1=0 我自己当时一味的去找规律,没有把式子好好推一推. 当然每个人都能想到a[n]=0是必须的 当a[n ...