Xml的dtd约束

墨蓝 2022-06-04 05:23 409阅读 0赞

xml的约束

*为什么需要约束?
** 比如现在定义一个person的xml文件,只想要这个文件里面保存人的信息,比如name age等,但是如果在xml文件中
写了一个标签<猫>,发现可以正常显示,因为符合语法规范。但是猫肯定不是人的信息,
xml的标签是自定义的,需要技术来规定xml中只能出现的元素,这个时候需要约束。
* xml的约束的技术 : dtd约束 和 schema约束

W3C教程

dtd的快速入门

*创建一个文件 后缀名 .dtd

步骤:
(1)看xml中有多少个元素 ,有几个元素,在dtd文件中写几个 <!ELEMENT>
(2)判断元素是简单元素还是复杂元素
- 复杂元素:有子元素的元素
<!ELEMENT 元素名称 (子元素)>
这里写图片描述
- 简单元素:没有子元素
<!ELEMENT 元素名称 (#PCDATA)>
这里写图片描述
(3)需要在xml文件中引入dtd文件
<!DOCTYPE 根元素名称 SYSTEM “dtd文件的路径”>
这里写图片描述

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

** 如果想要校验xml的约束,需要使用工具(myeclipse工具)
** 打开myeclipse开发工具
** 创建一个项目 day05 * 在day05的src目录下面创建一个xml文件和一个dtd文件
**\
*当xml中引入dtd文件之后,比如只能出现name age,多写了一个a,会提示出错**

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”>
- 后面学到框架 struts2 使用配置文件 使用 外部的dtd文件
- <!DOCTYPE struts PUBLIC “-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“http://struts.apache.org/dtds/struts-2.0.dtd“>;

使用dtd定义元素

*语法: <!ELEMENT 元素名 约束>

*简单元素:没有子元素的元素
<!ELEMENT name (#PCDATA)>
**(#PCDATA): 约束name是字符串类型
**EMPTY : 元素为空(没有内容)
-
**ANY:任意

* 复杂元素:
<!ELEMENT person (name,age,sex,school)>
- 子元素只能出现一次
* <!ELEMENT 元素名称 (子元素)>

*表示子元素出现的次数
+ : 表示一次或者多次
? :表示零次或者一次
* :表示零次或者多次
* 子元素直接使用逗号进行隔开 ,
** 表示元素出现的顺序
这里写图片描述

*子元素直接使用|隔开
** 表示元素只能出现其中的任意一个

这里写图片描述

使用dtd定义属性

*语法:
<!ATTLIST 元素名称
属性名称 属性类型 属性的约束
>

*重点内容属性类型
- CDATA: 字符串
- <!ATTLIST birthday
ID1 CDATA #REQUIRED

- 枚举 : 表示只能在一定的范围内出现值,但是只能每次出现其中的一个
** 红绿灯效果
** (aa|bb|cc)
- <!ATTLIST age
ID2 (AA|BB|CC) #REQUIRED

- ID: 值只能是字母或者下划线开头
- <!ATTLIST name
ID3 ID #REQUIRED

*属性的约束
- #REQUIRED:属性必须存在
- #IMPLIED:属性可有可无
- #FIXED: 表示一个固定值 #FIXED “AAA”
- 属性的值必须是设置的这个固定值
- <!ATTLIST sex
ID4 CDATA #FIXED “ABC”
>

-直接值
* 不写属性,使用直接值
* 写了属性,使用设置那个值
- <!ATTLIST school
ID5 CDATA “WWW” //WWW直接值
>

这里写图片描述

实体的定义

*语法:
<!ENTITY 实体名称 “实体的值”>
* <!ENTITY TEST “HAHAHEHE”>
*\
使用实体 &实体名称;**
比如 &TEST;
&TEST;

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

发表评论

表情:
评论列表 (有 0 条评论,409人围观)

还没有评论,来说两句吧...

相关阅读

    相关 XML解析,DTD约束,Schema约束,反射

    XML XML就是一种数据的描述语言,虽然它是语言,但是通常情况下,它并不具备常见语言的基本功能——被计算机识别并运行。只有依靠另一种语言,来解释它,使它达到你想要的效果或

    相关 XML约束DTD

    1 引入: XML语法: 规范的xml文件的基本编写规则。(由w3c组织制定的) XML约束: 规范XML文件数据内容格式的编写规则。(由开发者自行定义) XML约束

    相关 Xmldtd约束

    xml的约束 \为什么需要约束? \\ 比如现在定义一个person的xml文件,只想要这个文件里面保存人的信息,比如name age等,但是如果在xml文件中

    相关 JavaWeb学习-XML系列-2-XML约束DTD

    前面一篇文章,我们会这个books的xml结构就行。这看起来xml语法也很随意,什么都可以写,那么有时候,我们需要的xml文件内容是有一定要求和约束的,这个时候我们就需要对xm