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

被折叠的 条评论
为什么被折叠?



