15、
<!ELEMENT联系人(姓名,EMAIL)>
<!ELEMENT姓名(#PCDATA)>
<!ELEMENTEMAIL(#PCDATA)>
如果我们使用逗号“,”来分隔两个子元素,那么XML文件中,元素“姓名”就必须出现在元素“EMAIL”前面。反之,可以无序。
16、XML正则表达式的匹配原则不允许循环逻辑。所以,OR的意思是或者选这个或者选那个,但不能两个都选,也不能两个都不选。
17、注意:在一个组中,只允许使用一种连接符(例如“,”或“|”)。因此,象下面这样定义的DTD是不合法的:
<!ELEMENT联系人(姓名,电话|EMAIL)>
要想使用多种连接符,只有通过创建子组的方式,使用
<!ELEMENT联系人(姓名,(电话|EMAIL))>
前面我们已经介绍了所有可能用到的子元素的排列状况。不过,还有一种情况没有说,那就是,一个元素中不包含任何子元素,也不包含纯文本。
对于这种情况,我们可以定义一个空标记。当然,定义这样一个标记很简单,你只需要使用关键字EMPTY就可以了,例如:
<!ELEMENTHREMPTY>
这样,在你的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中数据类型
string
#PCDATA
enumeration
ENUMERATED
id
ID
idref
IDREF
idrefs
IDREFS
nmtoken
NMTOKEN
nmtokens
NMTOKENS
entity
ENTITY
entities
EMTITIES
notation
NOTATION
注意,当dt:type取值为"enumeration"时,后面的dt:value必须列出所有可能的取值。
22、attribute实际上是对该Schema中AttributeType声明的引用,而具体引用什么属性类型,
关键就要靠type属性了。type唯一指定了要引用的属性类型,
因此其取值必须同某个AttributeType元素中name属性的取值严格一致。
其它两个属性与AttributeType中相应属性的含义相同,
default指定该属性类型的缺省取值,
required指定该属性对于引用它的元素是否是必须的。
如果和同一个属性相对应的AttributeType和attribute中都对default和required给出了定义,
则在attribute中的取值具有更高的优先级。
23、XML较之HTML最根本的差别在于XML是定义置标语言的元语言,
而HTML仅仅是由SGML元置标语言定义的一个实例语言。利用XML元置标语言,
定义各种各样的XML实例的活动是相当开放的。针对不同的应用方向,
每设计一个XML的DTD,一种新的置标语言便随之诞生。
在各种各样XML实例置标语言如雨后春笋般不断涌现的过程中,
将会产生这样一种应用需求,即在一个XML文档中,包含由多个DTD描述的元素。
这个想法显然是达到“物尽其用”的一个好办法,它帮助我们最大程度地利用了现有的资源,
正所谓“海纳百川,有容乃大”。
24、CSS和XSL均属于样式单的一种,都可以用来设定文档的外观。那么,它们有什么区别呢?
比较起来,它们主要有以下几个大的不同:
用途不同
CSS最早是针对于HTML提出的,后来又将其应用于XML之中,
它既可以为HTML文档中的各个成分设定样式,又可以为XML中的成分设定样式。
XSL是专门针对XML提出的,它不能处理HTML文档。但它有一个CSS无法达到的功能,
即用一个命令行将一个XML文档转换为另一个文档并存盘。
处理结果不同
XSL采用的是一种转换的思想,它将一种不含显示信息的XML文档转换为另一种可以用某种浏览器浏览的文档,
转换后的输出码或者存为一个新的文档,或者暂存于内存中,但都不修改源代码。而CSS则没有任何转换动作,
只是针对结构文档中的各个成分,依照样式规定一一设定外观式样,再由浏览器依据这些式样显示文档,在整个过程中没有任何新码产生。
表现能力不同
在XSL中定义的90%的样式规定,实际上在CSS中都有定义。但仍然有一些效果是CSS无法描述的,
必须使用XSL不可。这些功能包括文本的置换,例如将一个美国的时间表示格式转换为一个中国的时间表示格式;
根据文本内容决定显示方式,例如将60分以上的分数用黑色显示,60分以下的分数用红色显示;
将文档中的成分按照某一个子成分的值进行排序,例如将商品按售价进行排序。
此外,还有对于超链接的支持,对于FRAME的支持,对于某些语种文字从上到下,
行从右到左的排列格式的支持等,都是XSL所独有的。
语法不同
XSL是根据XML的语法进行定义的,实际上又是XML的一种应用。而CSS的语法自成体系,
且比较简单,易学易用。
综上所述,一个XML文档的显示方式可以归纳为三种:即利用CSS显示,
利用XSL转化为FO显示,以及利用XSL转化为HTML文档显示(这个HTML文档中可包含CSS样式)。