第3章有效的XML文档与DTD

合集下载

第三章 有效的XML文件

第三章 有效的XML文件
具有独自语法结构的文件
XMLSchema模式 模式
是一个特殊的XML文件 文件, 是一个特殊的 文件 比DTD更复杂 更复杂
简单 早于XMLSchema 早于

XML基础教程 基础教程
什么是有效的XML 什么是有效的XML文件 XML文件
什么是有效的XML文件 文件? 什么是有效的 文件
– 一个规范的 一个规范的 规范的XML文件如果和某个 文件如果和某个DTD文件相 文件如果和某个 文件相 关联,并遵守该DTD文件规定的限制条件就 关联,并遵守该DTD文件规定的限制条件就 称为有效的 有效的XML文件。 文件。 称为有效的 文件
规定标记的子标记 限制标记只有文本数据 规定标记的混合内容 EMPTY和ANY 和
XML基础教程 基础教程
ELEMENT作用 ELEMENT作用 –
约束的内容
规定标记的子标记
– 规定有那些子标记 – 子标记是否允许重复出现 – 子标记出现的顺序
这些约束内容出现在DTD中元素声明的“标记 中元素声明的“ 这些约束内容出现在 中元素声明的 的约束条件”部分。格式如下: 的约束条件”部分。格式如下:
DOM解析器 解析器
– 检查 检查XML文件的规范 文件的规范,DTD文件的语法 文件的语法, 文件的规范 文件的语法 – XML文件的引用 文件的引用,XML文件或 文件或DTD文件不存 文件的引用 文件或 文件不存 在等. 在等
XML基础教程 基础教程

DTD – DTD中的元素 DTD中的元素
XML基础教程 基础教程
<T226次 <T226次> <开车时间> 开车时间> <hour>08点 <hour>08点</hour> <minute>45分 <minute>45分</minute> </开车时间> </开车时间> 开车时间 终到时间> <终到时间> <hour>19点 <hour>19点</hour> <minute>36分 <minute>36分</minute> </终到时间 终到时间> </终到时间> </T226次> </T226次 </列车时刻表 列车时刻表> </列车时刻表>

第3章 文档类型定义(DTD)

第3章 文档类型定义(DTD)

3.6 小结
本章主要学习了DTD的基本概念和语法,包括在XML 中声明DTD的方式,使用DTD声明元素、属性列表和实体等 的方式。如何使用DTD来描述和约束文档结构是本章的主旨 。另外,本章还粗略地讲述了XML Schema开发和XML命 名空间的基础知识。
3.3 实体和外部DTD子集
实体(ENTITY)是一种替代物,用于内容转义,在 XML文档中可以直接用实体名来代替实体值使用。实体可以 定义在文档的前序部分,也可以定义在DTD中。 内部实体完全在文档有效空间内部定义,内部实体的 值在DTD文档内部或DOCTYPE声明中声明;外部实体是在 XML文档外部定义的实体,实体的值在外部资源中声明。 已解析实体的值经过XML解析器解析,成为XML或 DTD的一部分,如字符、数字和文本对象等;未解析实体的 值未经XML解析器解析,可以是二进制数据,如图片、声音 等。
3.5.3 命名空间的使用
声明了命名空间,有了命名空间下的合法名称,就可 以使用命名空间来区别具有相同名称的元素和属性了。命名 空间的使用方法是在属于该名称空间的元素或属性名称前添 加前缀和冒号“:”,表示其所属的名称空间。
3.5.4 DTD与命名空间
在命名空间声明中,命名空间名其目的在于标识特定 的命名空间。XML解析器遇到一个命名空间声明后,就把等 号左边的命名空间前缀和右边的命名空间名绑定在一起,对 于后面使用了该前缀的合法名称,都可以归属于同一个命名 空间中。根据DTD进行有效性检测时,也并不是把这个命名 空间映射到URI所指的DTD文件,而是去找所有在 DOCTYPE中声明的内部和外部的DTD,看其所定义的哪一 个元素或属性名与文档中用到的元素或属性名相同。
3.1.7 在文档间共享通用的DTD
为方便多个文档共享同一个DTD,可以将DTD单独定 义在一个文件中。XML文档只要添加对DTD文件的引用就 可以起到文档内DTD的作用了。这样,多个XML文档就可 共享同一个DTD文件了。

xml 《DTD》模式简介

xml 《DTD》模式简介

DTD 的局限性

由于 DTD 本身并不是专门面向 XML 的数据 模式语言,所以在对 XML 数据进行建模时, 也存在一定的局限性。


DTD 没 有 采 用 XML 的 语 法 形 式 (examples/xslt2/book.dtd)。 DTD 并不能完全满足 XML 自动化处理的要求,例 如不支持 XML 中的命名空间、不能很好实现应用 程序不同模块间的相互协调,缺乏对文档结构、属 性、数据类型等约束的足够描述能力等等。



不受限制的词汇表:可以随意地使用任何元 素、属性名称。 没有任何语法规则:每个元素中都可以包含 任意的内容(混合内容、子元素、文本、或 者为空)。 对于属性没有任何限制:每个元素都可以包 含任意的属性。
数据模式的用途 2


XML 树型模型的表达能力更强,对于相同的 数据可能采取各种不同的表示方式,为信息的 交换和处理带来极大的困难。 需要通过某种方式,定义 XML 数据的词汇表 (可能是针对某个领域),包括元素和属性的 名称、甚至取值,并且需要通过语法规则控制 XML 元素的结构,而实现这项任务的过程, 通常将其称为“XML 文档的数据模式设计”。
(4). 只包含子元素的元素

要声明一个只包含子元素的元素,其语法为:
<!ELEMENT element-name (child1,child2,...)>



其中,(child1,child2,...) 表示一个序列,即内 容模型。 <!ELEMENT student (stu_name, stu_no, stu_bak)> 。这项声明表示 student 元素中必 须包含 stu_name、stu_no、stu_bak 三个子 元素,并且它们的次序不能颠倒。

第3章 DTD规范XML文档(1)

第3章  DTD规范XML文档(1)
8/36
3.1 DTD的基本概念(7/13)
DTD的基本结构(4/4)
文档类型声明-例2
第3章
DTD规范XML文档
文档类型声明
<?xml version="1.0“ standlone=“no”?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
两种外部DTD:私有的外部DTD、公有的外部DTD
12/36
3.1 DTD的基本概念(11/13)
外部DTD(2/4)
第3章
DTD规范XML文档
如果需要在XML文档中使用外部DTD,则必须在X ML文档的文档类型定义部分通过URL引用外部DTD (1)私有的外部DTD 语法格式: <!DOCTYPE
外部DTD:note.dtd
引用外部DTD(私有)
注意
为了让DTD能支持特定字符,应该为外部DTD文 档指定编码方式
14/36
3.1 DTD的基本概念(13/13)
外部DTD(4/4)
(2)公有的外部DTD 语法格式:
第3章
DTD规范XML文档
<!DOCTYPE 根元素名 PUBLIC "DTD-NAME" "DTD-URL">
17/36

使用DTD规范XML文档

使用DTD规范XML文档
例:<!ELEMENT TITLE(#PCDATA)>
Page 11
3.2.2 各种元素的声明
1.基本字符元素的声明 2.含子元素的严格声明 3.包含任意内容的声明 4.子元素出现次数的声明 5.选择性子元素的声明 6.空元素的声明 7.混合型元素的声明 8.实体的声明
Page 12
1.基本字符元素的声明
Page 16
5.选择性子元素的声明
语法:<!ELEMENT 元素名称 使用规则> 语法:<!ELEMENT 元素名称 (子元素)> (子元素):指示元素中包含的子元素 1如果子元素用“|”分开,说明任选其一。
Page 17
6.空元素的声明
语法:<!ELEMENT 元素名称 使用规则> EMPTY:指示元素的不能有主体内容。 <!ELEMENT 元素名称 EMPTY >
语法:<!ELEMENT 元素名称 使用规则> <!ELEMENT 元素名称 (#PCDATA) > 指示元素的主体内容只能是普通的文 本.(Parsed Character Data)
Page 13
2.含子元素的严格声明
语法:<!ELEMENT 元素名称 使用规则> <!ELEMENT 元素名称 (子元素)> (子元素):指示元素中包含的子元素 如果子元素用逗号分开,说明必须按照声明 顺序去编写XML文档 <!ELEMENT 元素名称 (子元素1,子元素2,子 元素3,…)>
Page 19
要宣告混合内容的元素型态,你可以使用下列两 种内容模型格式的任何一种: 1 只有字符数据 。要宣告只包含字符数据的元 素型态,使用内容模型(#PCDATA)。例如, 下面的宣告让SUBTITLE 元素只能包含字符数据: <!ELEMENT SUBTITLE (#PCDATA)> 根据这个宣告,下面两个元素都是有效的: <SUBTITLE>A New Approach</SUBTITLE> <SUBTITLE></SUBTITLE>

DTD

DTD
声明属性时应注意以下几点: (1)属性名称遵循的规则与有效的元素名称相 同。 (2)在一个给定的元素中不能有两个属性同名。 (3)若属性值中含有双引号,则该属性值应用 单引号扩起来。
表3-3
如例
表3-4
属性的类型 ⑴ CDATA属性类型:此种类型的属 性值只能是文本字符串,用CDATA关键字 进行声明。 实例3-2 P59
⑹ <!ELEMENT year (#PCDATA)>
<!ATTLIST year format (numeric | character) #FIXED “numeric”>
⑺ <!ELEMENT year (#PCDATA)>
<!ATTLIST year format (numeric | character) #REQUIRED>
<!DOCTYPE Directory SYSTEM "test.dtd">
内部DTD
P47 外部DTDຫໍສະໝຸດ P483.3 DTD语法元素声明 <!ELEMENT name content> name是元素的名称 content指明元素内容的情况,可能出 现关键词EMPTY、关键词ANY或描述包含 在本元素中的子元素的顺序和重复次数的 内容模型。
(5)混合类型:既包含子元素又包含字符数 据的元素。 混合内容元素的声明采用特定的格式, 以#PCDATA开始,后面是混合内容中可能 出现的子元素类型,每种只需声明一次, 在右括号之后有一个“*”。
<!ELEMENT pick (#PCDATA | one | two | three)*>
再回顾一下前面的例子
⑻ <!ELEMENT year (#PCDATA)> <!ATTLIST year format (numeric | character) #IMPLIED>

第3章在XML文档中使用DTD解读


• 2. Enumerated型
– 如果属性值并不是任意的字符串,而是在 几个可能的值中进行选择,如书籍的“类 别”属性,其值可为“文艺”,也可为 “自然科学”,而不可能为其他情况时, 则可以将书籍的“类别”属性设定为 Enumerated型。
3. ID型 • 当元素的某个属性值是不能重复时,如 书籍的ISBN属性、个人的“身份证号”属 性等,要定义这样的属性则需使用属性的ID 类型。在一个XML文档中,所有元素的ID类 型属性的属性值必须是唯一的,不可重复, 另外,一个元素不能有超过一个ID类型的属 性。
不限定元素内容的声明
• ANY是DTD中使用很频繁的一个关键字, 特别是对于文档根元素的声明。在定义一个 DTD文档时通常很难准确地确定一个元素是 否具有子元素的情况,此时一般的做法是指 定该元素的子元素为ANY型,这样在它之中 可以包含任何数据、任何声明的子元素及其 数据和子元素的组合。 •
ANY元素lt;!DOCTYPE 根元素名称 [定义的内容]> – 其中“[定义的内容]”是用标签<!ELEMENT>定 义,它包括:
• • • • 元素类型声明; 元素属性声明; 实体声明; 记法声明。
3.1 DTD概述
• 内部DTD文件示例
<?xml version="1.0" encoding="gb2312" standalone="yes"?> <!DOCTYPE 持股信息 [ <!ELEMENT 持股信息 (股东)*> <!ELEMENT 股东 (姓名, 武商股份, 神龙电业, 浦发银行, 兴和基金)> <!ELEMENT 姓名 (#PCDATA)> <!ELEMENT 武商股份 (#PCDATA)> <!ELEMENT 神龙电业 (#PCDATA)> <!ELEMENT 浦发银行 (#PCDATA)> <!ELEMENT 兴和基金 (#PCDATA)> ]>

第3章_DTD文档类型定义


2 定义元素及其后代(4)
复合型元素的声明,即定义元素及其子元素: DTD尽管要求严格,但也有它的灵活性。使用正则表达式,我们就 可以描述父元素与子元素之间非常复杂的关系。下面就是描述子 元素的正则式:
元 字 符 + * ? 含 义 出现一次或多次 出现零次或多次 不出现或出现一次
()
| ,
一组要共同匹配的表达式
2 定义元素及其后代(6)
重复元素 DTD定义(+:至少出现一次) <!ELEMENT 联系人 (姓名,EMAIL+)> <!ELEMENT 姓名 (#PCDATA)> <!ELEMENT EMAIL (#PCDATA)> 下面的XML片断是有效的: <联系人> <姓名>张三</姓名> <EMAIL>zhang@</EMAIL> <EMAIL>zhang@</EMAIL> <EMAIL>zhang@</EMAIL> </联系人> 而下面这个XML片断不是有效的: <联系人> <姓名>张三</姓名> </联系人>
2 定义元素及其后代(1)
元素的声明: 元素声明不但说明了每个XML文件中可能存在的元素,给出了元 素的名字,而且给出了元素的具体类型。一个XML元素可以为空, 也可以是一段纯文本,还可以有若干个子元素,而这些子元素同时 又可以有它们的子元素。DTD正是通过元素之间的父子关系,描 述了整个文件的结构关系。 元素的声明形式为: <!ELEMENT 元素名 元素内容描述> 元素内容可分为如下的3个类型: 简单型:元素内容是可解析的字符数据(Parsed Character Data, PCDATA),即不含有子元素的文本。 复合型:元素的内容含有其它元素,既有子元素。 混合型:元素的内容既有文本数据又有子元素。

第3章 有效的XML文件—DTD

语法格式如下: <!ELEMENT 元素名称 (#PCDATA)> 【例3-6】声明简单元素
<!ELEMENT bookname(#PCDATA)> 上述bookname可以是空元素也可以包含数据内容,但是一定不能 包含子元素。如果在XML文档中定义子元素,则是非法的,例如:
<bookname> <author>张三</author> <name>XML教程</name>
DTD定义了置标语言、文档结构的语法和词汇表,实际
上是定义了一个语法分析器。
XML基础教程
第3章 有效的XML文件-DTD
第6页
DTD的分类
外 部 DTD 可 以 单 独 形 成 文 件 , 后 缀 名 为.dtd,该文件可以被多个XML文档共享和 DTD调用。 内部DTD是在XML文档中直接定义DTD, 该DTD只能被当前XML文档使用。
XML基础教程
第3章 有效的XML文件-DTD
第12页
DTD基本结构模板
DTD的基本结构包括XML声明、元素声明、属性声明、
实体声明等,DTD基本结构模板如下所示:
<!ELEMENT …> <!ELEMENT …> … <!ATTLIST …> <!ATTLIST …> … <!ENTITY…> … <!NOTATION…> XML基础教程...
XML基础教程
第3章 有效的XML文件-DTD
第17页
Unrestricted元素
Unrestricted 元素表示在XML文档中可以包含任 何在DTD中定义的元素内容。一般情况下,只把 文档的根元素定义为此类型,这样设定后,元素 出现的次数和顺序不受限制。

第三章 XML语法检 查DTD


DTD的属性声明
2、枚举类型 枚举类型并不需要使用一个关键字,它只 是将所有的属性列举出来,并以竖线分隔。枚 举类型的每一个可能值都必须遵循XML的名称 命名规则,然后就可以从这些值中选出一个作 为属性值。 例:<!- - DTD部分 - - > <!ATTLIST PET HOTSELL (TRUE|FALSE) “FALSE” > <!- - 文件元素部分- - > <PET HOTSELL = “TRUE”>热卖中!</PET>
DTD的属性声明
3、NMTOKEN类型 NMTOKEN规定属性值必须是正确的XML名称 (即必须以字母或下划线开头,后面的字符可 以为字母、数字、下划线、连字符和点号,但 不可包含空格)。 如: <!- - DTD部分 - - > <!ATTLIST CUSTOMER COUNTRY NMTOKEN #REQUIRED > <!- - 文件元素部分- - > <CUSTOMER COUNTRY=“CHN”>…… </CUSTOMER>
DTD的元素声明
3、声明空元素的声明格式: <!ELEMENT 元素名 EMPTY> • 该结构当声明的XML文档元素的内容为空时, 有效。如: <!- - DTD部分 - - > <!ELEMENT 位置 EMPTY> <!- - 文件元素部分- - > <位置></位置>
DTD的元素声明
4、声明自由类型元素的格式: <!ELEMENT 元素名 ANY> • 元素的内容可以是任何数据: 任何被声明过的元素,元素出现的顺序和次数不 受限制; 文本内容或CDATA段 例:example3.xml 5、混合类型 若某元素既包含子元素又包含已编译的字符数据,则 该元素具有混合内容。其声明的语法如下: <! ELEMENT pick (#PCDATA | one | two | three)*>
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在一份DTD中,包含了对XML文档所使用 的元素、元素间的关系、元素可用的属性、 可使用的实体等的定义规则。一份DTD实 际上是若干条有关元素、属性、实体等定 义和声明语句的集合。
DTD定义的开始 <?xml version="1.0" encoding="GB2312"?> <!DOCTYPE 学生列表[ 实体定 <!ENTITY content "2001年入学名单"> 义 <!ELEMENT 说明 (#PCDATA)> <!ELEMENT 学号 (#PCDATA)> 元素定义 <!ELEMENT 姓名 (#PCDATA)>
【参看实例: dtd_exp7_2.xml】
8. 混合型元素
还有另一种元素,其内容既可以为字符数据, 也可以为子元素,这种元素称为混合型元素。 【混合型元素的声明格式】
<!ELEMENT Element_Name(#PCDATA|Child_Ele1|Child_Ele2…)>
【注意】
混合型元素的存在破坏了文档的层次结构化,不 利于应用软件对XML 文档的处理,在XML 文档开发 过程中,它可以作为一个不成熟的DTD 文档,一步一 步地在XML 文档中添加元素,边添加边测试其正确性, 在文档最后完成时,要通过添加新元素的方法来清除 这种非结构化信息。
3.1 DTD基本概念
3.1.1 DTD简介
对XML文档所作的规范和约定被称为 DTD,也就是文档类型定义。可以把DTD 看作是编写某类XML文档的一个模板。
在一个DTD中,具体规定了引用该DTD的 XML文档可使用哪些标记、父元素中能够包括哪 些子元素、各个元素出现的先后顺序、元素可包 含的属性、元素和属性值的数据类型,以及可使 用的实体及符号规则等。 DTD由许多约定和声明语句构成,这些语 句可以包含在XML文档内部,被称为内部DTD; 也可以独立保存为一个文件,而称为外部DTD。
7. 元素组
• 在声明复合型元素的时候,可以使用括号 将其部分子元素组合在一起,成为一个元素组, 该元素组在特性上与普通元素没什么区别,可 以对其使用“?”、“*”、“+”等控制字符
【参看实例: dtd_exp7_1.xml】
• 在实际应用中,使用元素组可能不是最好 的方案。这时也可以先将准备分组的元素定义 为一个复合元素,再在原来的元素中引用刚定 义的复合元素,这样文档的结构更清晰。
2 空元素的声明
【语法】
<!ELEMENT element_name EMPTY>
【例如】
<!ELEMENT hr EMPTY>
3 不限定元素内容的声明
ANY 是DTD 中使用很频繁的一个关键字,特 别是对于文档根元素的声明。在定义一个DTD 文档 时通常很难准确地确定一个元素是否具有子元素的 情况,此时一般的做法是指定该元素的子元素为 ANY 型(表示可以是任意的元素),这样在它之中可 以包含任何数据、任何声明的子元素及其数据和子 元素的组合。 【格式】 <!ELEMENT Element_Name ANY>
3.2 DTD元素
DTD 中描述的基本部件是元素和属性,它们 负责确定XML 文档的逻辑结构。元素表示一个信 息对象,而属性表示这个对象的性质。所有元素中 有且只有一个根元素,其他的元素都是它的子元素, 除根元素外,每个元素都被其他元素包含,一个元 素可以有几个不同类型的子元素。
3.2.1 元素的基本类型
(1)一个元素可能出现一次,也可能不出现。这时 可通过在元素名后面加上一个“?” 来实现。 (0~1次) (2) 一个元素可能不出现,也可能出现多次。这 时可通过在元素名后面加上一个“*” 来实现。 (0~n次) (3) 一个元素可能出现一次,也可能出现多次, 但至少也要出现一次。这时可通过在元素名后 面加上一个“+”来实现。(1~n次)
【“#PCDATA ”的声明格式】
<!ELEMENT Element_Name (#PCDATA )>
【参看实例: #PCDATA_exp.xml】
2. 复合型
复合型元素与简单型元素相对,复合型元素 可包含其他元素。
【参看实例: dtd_exp2.xml 】
3.2.2 元素的声明
1,元素声明的基本语法
(2) 属性的声明在文档中的次序没有严格的要求, 可位于与其相连的元素声明之前或之后。
如在XML 文档中有如下语句: <bookinfo id="001" bookcategory="文艺" > </bookinfo> 属性声明可以为: <!ATTLIST bookinfo bookcategory CDATA "文艺" > <!ATTLIST bookinfo id CDATA "001"> <!ELEMENT bookinfo (#PCDATA)>
【参看实例: dtd_exp6.xml 】
6. 元素出现次数的控制
在DTD 中定义一个元素的子元素是解决该元素 可以包含什么元素,各个子元素的出现次序以及能 够出现的次数的问题。 DTD 可以在一定程度上控制出现的次数。如明 确规定一个元素出现3 次或4 次,是容易使到的,使 用上面介绍的子元素列表的设定方法即可实现,但 如果重复出现的次数较多时,这种方法就显得十分 笨拙,这时可用以下方法来对其进行控制。
元素的基本类型大致可分为两种,一种称为 简单型,另一种称为复合型。简单型具有文本数 据,即可析字符数据,该类型也称为上下文中的 “#PCADTA”;复合型可以包含其他元素和文本 数据。
1. 简单型
“#PCDATA”(Parsed Character Data) 表 示标记的内容是可解析文本,所谓的可解析文本 就是非标记文本。用“#PCDATA”规范了的元 素不能再包含子元素。 【例如】 How do you do 它是不包含标记的文本, 而How do you <list>do</list> 它就不是可解析的数据类型,因为其中包含有 标记<list> 和</list> 。
第3章 有效的XML文档与DTD
[教学目标] • 了解DTD 的作用 • 熟悉元素、属性及实体的运用 • 掌握引用DTD 的方法 • 能够为特定的系统设计标记语言
【教学提示】
XML 的可扩展性表现在用户可以自己定义标 记和标记之间的嵌套关系,而DTD 就是进行这种定 义的语言。它定义了文档的逻辑结构,规定了文档 中所使用的元素、实体、元素的属性、元素与实体 之间的关系。根据DTD 可检查XML 文档中的数据, 以验证其是否符合规定和要求,这可以保证XML 文 档数据的正确性和有效性。 本章介绍DTD 的语法,包括元素、属性和实体 的语法,结合例子给出DTD 的使用方法并给出综合 实例。
【语法】 <!ELEMENT element_name element_definition>
【说明】 • <!ELEMENT: 元素声明语句的开始,关键字 ELEMENT必须大写。 • element_name: 所声明的元素名称。 • element_definition:对该元素内容的定义, 用来规定该元素可以包含的内容。 【例如】 <!ELEMENT bookinfo (title,author,publish,price)> <!ELEMENT publisher (#PCDATA)>
【参看实例: dtd_exp8.xml】
(1)可以多次为一个元素声明其中所包含的属性。 如在XML 文档中有如下语句:
<bookinfo id="001" bookcategory="文艺" > </bookinfo> 属性声明可以为
<!ELEMENT bookinfo (#PCDATA)> <!ATTLIST bookinfo id CDATA "001"> <!ATTLIST bookinfo bookcategory CDATA "文艺" >
(3) 所有元素的属性,都要在各自所对应的标记中声明。 如在XML 文档中有如下语句:
5. 可选择的子元素
有些时候,需要在两个或多个互斥 的元素中进行选择。即多选一的情况, 如一个人的性别可以是男或女,两者中 只能有一种情况。 DTD 有专门的语法 来处理这种情况
【语法】
<!ELEMENT Element_Name(Child_Ele1|Child_Ele2|……)>
【注释】 “(Child_Ele1|Child_Ele2|…)”:为选择性元素组 合,具体使用时必须要在这个列表中选择其一。
在XML 中有一种针对复合元素的最为严 格的设定方法,称为子元素列表的设定。这 种方式下,元素都拥有哪些子元素、每个子 元素出现的次数和位置都有明确的规定,在 具体文档实现时,必须严格执行。
【语法】 <!ELEMENT Element_Name(Child_Ele1, Child_Ele2,…)> 【注释】 “(Child_Ele1, Child_Ele2,…)”:为Element_Name 所拥有的子元素列表。
3.3 DTD 属性
属性:就是元素的附加特性,在DTD 中声明元素时, 也必须对该元素的属性进行声明。
5.3.1 属性的声明
【在DTD 中,属性的声明格式】
<!ATTLIST Ele_name Attr_name TYPE Default_value>
【注释】 <!ATTLIST>为属性声明的关键字,Ele_name 为元 素名,Attr_name 为属性名,TYPE 是属性类型, Default_value 为没有设定属性值时的默认值。
相关文档
最新文档