XML(二)

本文介绍了XML的约束机制——DTD(Document Type Definition),包括DTD的约束作用、验证方式,如通过浏览器和专业工具进行校验。同时,详细阐述了DTD的三种引入方式:外部、内部和网络上的DTD文件。接着,讲解了如何使用DTD定义元素和属性,以及属性的约束。此外,还提到了实体的定义和使用,并简要提及了XML解析,包括DOM和SAX解析的区别以及解析器的重要角色。
xml的一个约束dtd:

十二.dtd约束

步骤:

1)创建一个文件 后缀名  .dtd
2)看xml中有多少个元素,有几个元素,在dtd文件中写几个<!EELEMENT>
3)判断元素是简单元素还是复杂元素
	-复杂元素:有子元素的元素
		<!ELEMENT 元素名称 (子元素)>
	-简单元素:没有子元素
		<!ELEMENT 元素名称 (#PCDATA)>
4)需要在xml文件中引入dtd文件
	<!DOCTYPE 根元素名称 SYSTEM “dtd文件的路径”>

** 使用浏览器 打开xml文件,浏览器只负责校验xml的语法,不负责校验约束。

** 如果想要校验xml的约束,需要使用工具(例myeclipse)。

十三.dtd的三种引入方式

(1)引入外部的dtd文件

(2)使用内部的dtd文件

<!DOCTYPE 根元素名称[
	<!ELEMENT person (name,age)>
	<!ELEMENT name (#PCDATA)>
	<!ELEMENT person (#PCDATA)>
]>

(3)使用外部的dtd文件(网络上的dtd文件)

十四.使用dtd定义元素

语法:

<!ELEMENT 元素名 约束>

约束的操作:

简单元素
	<!ELEMENT name(#PCDATA)>
	***(#PCDATA):约束name是符串类型(PC表示字符串)
	***EMPTY:元素为空(没有内容)
	***ANY:任意
复杂元素
	*<!ELEMENT 元素名称(子元素)>
		-子元素只能出现一次
	*表示子元素出现的次数
		+:表示一次或者多次
		?:表示0次或者1次
		*:表示0次或者多次

  *子元素之间用逗号隔开:表示元素出现的顺序
   子元素之间用竖线隔开:表示元素只能出现其中的任意一个(枚举)

十五.使用dtd定义属性

语法:

<!ATTLIST 元素名称
			属性名称 属性类型 属性的约束
		>

属性类型:

-CDATA:字符串
-枚举:表示只能在一定的范围内出现值,但是只能每次出现其中的一个
	**红绿灯效果
	**(aa|bb|cc)
-ID:值只能是字母或者下划线开头

属性的约束:

-#REQUIRED:属性必须存在
-#IMPLIED:属性可有可无
-#FIXED:表示一个固定值 #FIXED“AAA”
		属性的值必须是设置的这个固定值
		<!ATTLIST sex
			ID4 CDATA #FIXED “ABC”
		>
-直接值:
		不写属性,使用直接值
		写了属性,使用设置那个值
		<!ATTLIST school
			IDS CDATA “WWW”

十六.实体的定义

语法:

<!ENTITY 实体名称 “实体的值”>

例:<!ENTITY TSET “HAHAHA”>

使用实体 :

&实体名称; 

例:&TEST;

注意:

定义实体需要写在内部dtd里面
	如果写在外部的dtd里面,有些浏览器下,内容得不到

十七.XML的解析的简介

1.xml是标记型文档。

2.js使用dom解析标记型文档?

-根据HTML的层级结构,在内存中分配一个树形结构,把HTML的标签,属性和文本都分装成对象
-document对象,element对象,属性对象,文本对象,node结点对象

3.xml的解析方式(技术):

dom和sax

4.dom解析和sax解析区别:

 dom方式解析:
	*根据xml的层级结构在内存中分配一个树形结构,把xml的标签,属性和文本都封装成对象。
	*缺点:如果文件过大,造成内存溢出。
	*优点:很方便实现增删改操作。
sax方式解析:
	*采用事件驱动,边读边解析。
		-从上到下,一行一行的解析,解析到某一对象,返回对象名称。
	*缺点:不能实现增删改操作
	*优点:如果文件过大,不会造成内存的溢出,方便实现查询操作

5.想要解析xml,首先需要解析器

不同公司和组织提供了 针对dom和sax方式的解析器,通过API方式提供。

*sun公司提供了针对dom和sax解析器	jaxp
*jdom组织,针对dom和sax解析器	jdom
*dom4j组织,针对dom和sax解析器	dom4j(实际开发中用)
*JSOUP:jsoup是一款Java的HTML解析器,可直接解析某个URL地址,HTML文本内容。他提供一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。
*PULL:Android操作系统内置的解析器,sax方式的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值