<!ELEMENT 联系人(姓名, EMAIL)>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>
如果我们使用逗号“,”来分隔两个子元素,那么XML文件中,元素“姓名”就必须出现在元素“EMAIL”前面。反之,可以无序。
16、XML正则表达式的匹配原则不允许循环逻辑。所以,OR的意思是或者选这个或者选那个,但不能两个都选,也不能两个都不选。
17、注意:在一个组中,只允许使用一种连接符(例如“,”或“|”)。因此,象下面这样定义的DTD是不合法的:
<!ELEMENT 联系人(姓名,电话|EMAIL)>
要想使用多种连接符,只有通过创建子组的方式,使用
<!ELEMENT 联系人(姓名,(电话|EMAIL))>
前面我们已经介绍了所有可能用到的子元素的排列状况。不过,还有一种情况没有说,那就是,一个元素中不包含任何子元素,也不包含纯文本。
对于这种情况,我们可以定义一个空标记。当然,定义这样一个标记很简单,你只需要使用关键字EMPTY就可以了,例如:
<!ELEMENT HR EMPTY>
这样,在你的XML文件中,就可以使用一个空元素<HR/>。
18、IDREF类型允许一个元素的属性使用文件中的另一个元素,方法就是把那个元素的ID标识值作为该属性的取值。
19、参数实体专门用在DTD中。定义方式是:
<!ENTITY % 实体名 "实体内容">
或: schema
<!ENTITY % 实体名 SYSTEM "外部文件名">
引用方式为:
%实体名;
20、使用参数实体,可以方便元素和属性的声明。例如:
<!ENTITY % TAG_NAMES "姓名 | EMAIL | 电话 | 地址">
<!ELEMENT 个人联系信息 (%TAG_NAMES; | 生日)>
<!ELEMENT 客户联系信息 (%TAG_NAMES; | 公司名)>
21、dt:type
dt:type指定所声明属性的数据类型,它除了支持DTD中包含的全部十大数据类型外,还支持一些扩展属性,在下一小节会详细讲述。
Schema中的十个基本属性与DTD中属性的对应关系请见下表:
Schema中基本类型 DTD中数据类型
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>