xml 的约束:
*为什么需要约束?
例如:
定义一个person的xml文件,只想要这个文件里面保存人的信息,“name,age”等
但是如果在xml文件中写一个<猫>,也可以正常显示,因为符合语法规范。但是
猫肯定不是人的信息,xml的标签是自定义的,需要技术来规定xml中只能出现的
元素,这个时候需要约束。
xml的约束分类: DTD约束 与 SCHEMA约束。
dtd的快速入门:
创建一个文件 后缀名 .dtd
步骤:
1、看xml中有多少个元素,在dtd文件中写几个<!ELEMENT>
2、判断元素是否为简单元素还是复杂元素
-复杂元素:有子元素的元素
<!ELEMENT 元素名称 (子元素)>
-简单元素:没有子元素
<!ELEMENT 元素名称 (#PCDATA)>
3、需要在xml文件中引入dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd元素路径名称">
*打开xml文件使用浏览器打开,浏览器只负责校验xml语法,不负责校验约束
*如果想要校验xml的约束,需要使用集成工具(myeclipse,idear)
dtd的三种引入方式:
1、引入外部的dtd文件:
<!DOCTYPE 根元素名称 SYSTEM "dtd元素路径名称">
2、使用内部的dtd文件:
<!DOCTYPE 根元素名称 [
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
3、使用外部的dtd文件(网络上的dtd文件):
<!DOCTYPE 根元素 PUBLIC "dtd名称" "DTD文档的URL">
使用dtd定义元素
*语法:<!ELEMENT 元素姓名 约束>
*简单元素:没有子元素的元素
**<!ELEMENT name (#PCDATA)>
**(#PCDATA):约束name时字符串类型
**EMPTY :元素为空 (没有内容)
<sex></sex>
**ANY :任意值
复杂元素:
<!ELEMENT person (name,age,sex)>
-子元素只能出现一次
*<!ELEMENT 元素名称 (子元素)>
*表示子元素出现的次数:
+:表示一次或多次
?:表示零次或一次
*:表示零次或多次
*子元素直接用逗号进行分割:
**表示元素出现的顺序
*子元素直接用| 进行分割:
**表示元素只能出现其中的一个
使用dtd定义属性:
*语法:<!ATTLIST 元素名称
属性名称 属性类型 属性约束
>
属性类型:
-CDATA:字符串
-枚举:表示只能在一定范围内出现值,但每次只能出现其中的一个值
**红绿灯效果
**(aa|bb|cc)
ID:值只能是字母或者下划线开头
-<!ATTLIST name
ID3 ID #REQUIRED
>
属性的约束
-#REQUIRED :表示属性必须出现
-#IMPLIED :表示属性可有可无
-#FIXED :表示一个固定值
*属性值必须是你提前设置好的
-直接值 :
*不写属性,使用直接值
*写了属性,使用写的值
-<!ATTLIST school
IDS CDATA "www"
>
实体的定义:
*语法:<!ENTITY 实体名称 “实体值”>
**<!ELEMENT TEST "HAHAHAS">
**使用实体 &实体名称; 例如:&TEST;
**注意:
*定义实体需要写在内部dtd里面,
如果写在外部dtd里面,在某些浏览器,不容找不到
xml详解二
最新推荐文章于 2024-10-02 06:12:20 发布