曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
器端的D S S S L被用于将S G M L或X M L文档转换成H T M L。
一个D S S S L脚本在处理X M L文档时先将其转换成一个“ G R O V E”。G R O V E相当于I S O中的
W3C DOM。但是,它更多的是一个抽象模型,虽然D O M是一个A P I。我们说G R O V E可能更接
近于W3C Information Set而不是D O M。G R O V E是一个数据模型,而D O M是这个数据模型的一
个接口。所以,当处理G R O V E或数据结构时,D S S S L规则同X M L文档元素模式匹配。D S S S L规
则模型比X S L中的更复杂,它包含几种规则类型─而X S L有一种类型就足够了。
可以用D S S S L转换X M L文档。它的解释模型同X S L一样功能强大,并且X M L文档结构和解
释之间互相独立。D S S S L也可以加入新元素和字符串,并对最终输出结果进行重新排序。
写本书时X S L F还处于开发阶段。但同X S L F不一样的是D S S S L在每天的文档处理中已经开
始使用了。第一个应用D S S S L的是James Clark,他写了一个叫J a d e的程序。现在这个程序由一
个国际集团维护, J a d e改为O p e n J a d e,是开放式的。O p e n J a d e可以免费下载,能将X M L或
S G M L文件转换为H T M L、S G M L 、X M L、P D F、M I F 、Te X、RT F 或B r a i l l e,其站点为
h t t p : / / w w w. n e t f o l d e r. c o m / D S S S L。
1. 一个样式表示例
在下面的例子中,我们可以生成同X S L应用一样的结果,而不必像C S S应用那样在样式处理
以前要转换文件。我们不会详细讨论脚本,但会很快地看一下D S S S L的一些基本概念:
程序清单1 3 - 6 0
612使用XML 高级编程
下载
第一个规则生成一个s c r o l l格式对象。它代表着浏览器的滚动浏览。样式表里这一部分中的
r o o t元素指向X M L文档而不是根元素。如果我们要将文件翻译到打印介质上,那么应该采用
s i m p l e - p a g e - s e q u e n c e格式对象。
同< I T E M >元素相匹配的规则完成了大部分工作。首先,生成一个p a r a g r a p h对象。p a r a g r a p h
是一个包含s e q u e n c e对象的矩形区域。p a r a g r a p h同C S S中的b o x对象相似,s e q u e n c e对象同i n l i n e
对象相似。
段落属性叫做c h a r a c t e r i s t i c s,可能已经注意到它们同C S S属性名称相似。D S S S L命令:
程序清单1 3 - 6 1
让样式引擎取消与< T I T L E >元素相关联的规则。后者生成了前者中的一个p a r a g r a p h对象。一旦
已经生成了这个段落,就会有另外两个段落添加到这个段落上。
同我们在X S LT到H T M L的转换中做的一样,在源文档中没有新内容被添加进去。这个操作
是通过同字符串等价的l i t e r a l格式对象完成的。内容在生成同< C AT E G O RY >元素相关的格式对
象以前加入:
第13章样式XML使用613 下载
程序清单1 3 - 6 2
如果一系列元素共享一个规则体,用下面的语句更方便:
程序清单1 3 - 6 3
这类命令不是DSSSL ISO标准的一部分呢,但在O p e n J a d e软件包中用来简化应用。
D S S S L说明不是静态的,这个I S O样式语言现在正进入第二个编辑阶段。它现在叫D S S S L - 2
项目,是对现有说明的改进和扩展。很明显,维持当前的说明是为了保证现存样式表的稳定性。
2. DSSSL讨论小结
你可能注意到了D S S S L并不一定比X S L F难学,实际上在某些方面它甚至更简单。当然,它
的表示语言“模式”对于习惯用程序语言如J a v a S c r i p t的人来说可能会不太容易理解。但是,它
的格式对象结构体系十分简单易读,甚至比X S L还简单。但在访问G R O V E结点方面比X P a t h费
劲得多。
总的来说, D S S S L是一个功能强大的语言,可能会适合于打印资料的文档处理,而不是在
线解释,目前打印领域已经开始使用D S S S L了。
13.3.9 Omnimark
最近,O m n i m a r k语言(由Omnimark Te c h n o l o g i e s开发)正以免费软件包的形式提供。它可
以在h t t p : / / w w w. o m n i m a r k . c o m上下载。因为可以免费下载并把X M L文档转换成H T M L,我们粗
略地看看这种简单语言。
同前面讨论过的语言一样, O m n i m a r k是一个规则语言。规则通过O m n i m a r k的e l e m e n t指令
与X M L元素相匹配。同D S S S L、C S S或X S L不一样, O m n i m a r k不使用一套直观的格式对象,而
是用一个叫output( ) 的程序。output( )程序用一个字符串作为它的参数。这个字符串可以包括任
何表达式,因此可以用来对基于文本的格式语言如V O X M L、H T M L、Te X等输出文档。
同D S S S L或X S L一样, O m n i m a r k有一个用于包括其他规则生成内容的命令。% c表达式代
表c o n t e n t,用规则的输出替换,这些规则同当前被取消规则的子元素相匹配。例如, < I T E M >
元素是< B O O K L I S T >元素的一个子元素,如果同< B O O K L I S T >元素相匹配的规则中包含一个
带% c的参数的输出命令,那么就由和< I T E M >元素匹配的规则生成的内容替换结果文件中的表
达式。
1. 一个O m n i m a r k脚本的范例
下面的脚本同其他样式表语言有点不一样,虽然它也是基于规则的。X M L文档的元素同一
个O m n i m a r k规则相匹配。一个最简单的规则中包括一个或多个o u t p u t命令。生成的结果采用了
字符串的形式:
614使用XML 高级编程
下载
程序清单1 3 - 6 4
你可能注意到输出表达式中有一些用%分开的字符。在输出字符串中有一些命令。例如,规
则中的% c命令:
程序清单1 3 - 6 5
同X S LT的a p p l y - t e m p l a t e s命令是等价的。它告诉O m n i m a r k引擎同< B O O K L I S T >元素的子元素相
匹配的其他规则将会插入到生成字符串的相应位置上。
另一个命令% n表示插入行的一个结尾(很像C R / L F─一个回车/换行符),这样输出字符
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程下(35)