《单元二 使用 DTD 定义 XML 文档》教学案例
——2.6 DTD 中元素的选择与分组
理解 DTD 元素的声明、掌握子元素的选择与分组的方法
会使用 DTD 元素的声明、会使用子元素的选择与分组
知识介绍
选择性元素:有时需要在两个或多个互斥的元素中进行选择。例如,在一项描述顾客购物的 DTD 中,
结帐方式信息中的每项 Payment 元素都有 Credit_Card 子元素或 Cash 子元素以便提供付款方式的信息,采
用信用卡支付还是现金支付。然而,单独的 Payment 元素不能同时使用两者,只能选择一种支付方式。在
父元素声明中,可以使用竖线“|”而不是逗号来分开子元素,以便指明文档作者需要输入一个或另一个子
元素。选择性元素还可以和元素出现次数的控制符组合使用,实现对元素内容的灵活控制。
混合型元素:在实际的应用中,一个元素可能既包含字符数据类型(#PCDATA),又包含子元素,这
样的元素可以定义为混合型元素。混合型元素声明的基本语法如下:
<!ELEMENT 元素名称 (#PCDATA | 子元素 1 | 子元素 2 | 子元素 3 | …)* >
混合元素模型具有局限性,它不能够设定子元素的顺序及出现的次数,破坏了 XML 文档的层次结构,
不建议使用。实际使用时可以将#PCDATA 可析字符数据用新元素封装,以代替混合元素模型。
元素分组:在声明复合元素时,可以使用圆括号“()”将逻辑含义相同的部分子元素组合成一个“元
素组”,“元素组”和普通元素在特性上相似。在元素组内部,元素要按规定次序出现,而且可以用修饰符
“*”、“+”和“?”控制元素出现的次数。“元素组”增加了元素内容设定的灵活性。
案例 1:描述顾客购物 DTD 中付款方式信息的选择
【代码实现】:
01 <?xml version="1.0" encoding="UTF-8"?>
02 <!ELEMENT Cash (#PCDATA)>
03 <!ELEMENT Credit_Card (#PCDATA)>
04 <!ELEMENT Payment (Cash | Credit_Card)>
【代码分析】:
第 02 行声明现金支付金额标签,第 03 行声明信用卡支付金额标签。第 04 行声明支付方式为现金支
付或信用卡支付。
案例 2:选择性元素和修饰控制符的组合使用
评论0
最新资源