W3China社区首页 管理页面 写新日志 退出

   
 

[Semantic Web](连载)语义网之路--XML文档的显示
Lee 发表于 2007/3/5 14:15:44

XML文档的显示 由于XML不包括任何显示格式信息,因此XML文档需要借助样式单(Style Sheet)进行显示。这样也有一个优点,那就是同一个XML文档可以用各种不同的方法显示出来。样式单一般以独立的文档形式存在,其内容描述了结构化文档的表现方式,包括结构化文档的显示方式、打印效果等。与描述文档显示方式的HTML相比,样式单具有很多突出的优点,如表现效果丰富多样、简单易读、体积小、可维护性好等。正是由于样式单可以使XML的显示与数据相分离以及样式单的种种优点,所以W3C推荐使用样式单来描述结构化文档的显示。目前主要有两种形式的样式单,一种是层叠样式单,即CSS(Cascading Style Sheets),另一种是可扩展样式单语言,即XSL(eXtensible Stylesheet Language)。 层叠样式单CSS 层叠样式单CSS实际上是一种显示样式描述规范。目前W3C有两个推荐标准:CSS1和CSS2。CSS1于1996年12月通过,CSS2于1998年5月通过。CSS2建立于CSS1基础上之上,基本上涵盖了CSS1,并增加了媒体类型、特性选择符、声音样式等功能,并对CSS1原有的一些功能进行了扩充。 虽然CSS制定之初的服务对象并不是XML,但它现在却可以很好地描述XML文档的显示样式。通过CSS可以定义XML文档中各元素的显示效果,包括显示位置、颜色、字体、背景、边距等等。 下面首先通过一个简单的例子说明CSS如何控制XML文档的显示。假设XML文档名称为se.xml,其内容如下: 代码清单3-42 <?xml version = "1.0" encoding="GB2312"?>   <selist>   搜索引擎列表 <se> <name>百度</name> <site>www.baidu.com </site> </se>   <se> <name>谷歌</name> <site>www.google.com </site> </se> </selist> 下面我们通过外部引用的方式在该XML文档中加入对CSS文档的如下引用语句: <?xml-stylesheet type="text/css" href="se.css" ?> 并将该行代码放在xml声明语句的后面,即: 代码清单3-43 <?xml version = "1.0" encoding="GB2312"?> <?xml-stylesheet type="text/css" href="se.css" ?> …… 新增加的这行代码表明该XML文档以CSS文档se.css指示的显示样式显示。CSS文档se.css的内容如下: 代码清单3-44 selist, se {   font-size:20pt;   font-weight:bold;   color:blue;   display:block;   margin-bottom:20pt;   margin-top:20pt; }   name {   font-weight:bold;   font-size:12pt;   display:block;   color:red;   margin-left:20pt; }   site {   font-weight:bold;   font-size:12pt;   display:block;   color:black;   margin-left:20pt; } 通过这个简单的例子可以看出:CSS的基本思想是通过为XML文档中的各个元素定义相应的一组显示样式来控制XML文档的显示效果。显示样式定义的一般格式为: 元素名称 { 样式属性:取值; 样式属性:取值; …… } 有关CSS显示样式定义的详细信息,请参阅相关的文档。 可扩展样式单语言XSL 通过上一小节可以看出,CSS只是一个普通的文本文件,本身不遵从XML语法规范。而XSL则不同,它采用XML语法规范,是XML的一种具体应用。因此有趣的是,XML文档要通过其它的XML文档来显示。 XSL由两部分组成:第一部分是格式转换,它描述了如何将一个XML文档转换为可浏览或可输出的格式;第二部分定义了格式化对象FO(fomatted object)。如前所述,XML文档实际上是一种树形结构。在输出时,首先根据XML文档构造一棵源树,然后再按照给定的XSL将这个源树转移为可以显示的结果树,这个过程称为树转换。经过树转换之后,再根据FO解释这棵结果树,并在屏幕、纸张、语音设备或其它媒体上生成输出结果,这个过程称为格式化。 目前描述树转换的协议已经从XSL中分离出来,称为XSLT(XSL Transformations),并成为W3C的推荐标准。与XSLT一同推出的还有其配套标准XPath,该标准用来描述如何识别、选择、匹配XML文档中的各个构件,包括元素、属性、文本内容等。 XSLT的主要功能就是转换,即把XML文档作为一个源树,将其转换为一个包含显示样式信息的结果树。结果树可以是XML文档格式,也可是以HTML、XHTML或SVG文档格式等。 利用XSL控制XML显示方式的基本思想是:通过定义转换模板,将XML文档转换为包含显示样式信息的可浏览文档。转换后的可浏览文档可以是HTML格式、也可以是FO格式,或者是其它面向显示方式描述的XML格式。目前大多数的可浏览文档都采用HTML格式。 转换可以在服务器端进行,也可以在客户端进行。两者分别对应着不同的转换模式。 如果在服务器端转换,则XML文档在下载到浏览器之前首先由服务器将其转换为HTML文档,然后再将HTML文档返回给客户端进行浏览。这时又有两种方式:一种是动态转换,也就是当服务器收到转换请求后再进行转换,还有一种是批量转换,即事先将XML用XSL转换为一批HTML文档,当接收到用户的服务请求后再调用相应的已转换好的HTML文档。 如果在客户端转换,则XML和XSL文档都将被送至客户端,由浏览器完成实时转换。当然,客户端转换的前提是浏览器必须支持XML和XSL。 XML声明引入XSL样式单的方法与声明CSS的引入方法基本相同: <?xml-stylesheet type="text/xsl" href="se.xsl"?> 这行代码表明当前的XML文档以XSL文档se.xsl指示的显示样式显示。 下面通过一个简单的例子来看看XSL是如何控制XML文档的显示的。XML文档使用上一小节介绍的se.xml,为了使用XSL样式单,将其中第二行的声明语句改为: <?xml-stylesheet type="text/xsl" href="se.xsl"?> se.xsl的内容如下: 代码清单3-45 [1]  <?xml version="1.0" encoding="gb2312" ?> [2]  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" [3]                 xmlns="http://www.w3.org/TR/REC-html40">   [4]  <xsl:template> [5]   <xsl:apply-templates/> [6]  </xsl:template>   [7]  <xsl:template match="/"> [8]  <HTML> [9]   <HEAD> [10]    <TITLE>搜索引擎列表</TITLE> [11]    <STYLE> .title{font-size:20pt; font-weight:bold; color:blue }  .name{ font-size:12pt; color:red}  .site{ font-size:12pt; color:black} [12]    </STYLE> [13]  </HEAD> [14]  <BODY> [15]    <P class="title" >搜索引擎列表</P> [16]      <xsl:apply-templates select="selist"/> [17]  </BODY> [18] </HTML> [19] </xsl:template>   [20] <xsl:template match="selist"> [21]  <TABLE BORDER="1"> [22]    <THEAD> [23]      <TD> <B>名称</B> </TD> [24]      <TD> <B>网址</B> </TD> [25]    </THEAD> [26]    <xsl:for-each select="se" order-by="name"> [27]    <TR> [28]      <TD><B><xsl:value-of select="name"/></B></TD> [29]      <TD><xsl:value-of select="site"/></TD> [30]    </TR> [31]    </xsl:for-each> [32]  </TABLE> [33] </xsl:template> [34]</xsl:stylesheet> 该文档前三行是XML文档和命名空间声明。[4]-[6]行利用<xsl:template>元素声明XSL模板,并调用该模板。 第[7]行根据<xsl:apply-templates/>,首先匹配XML源树的根节点(用“/”表示),并生成相应的带有显示样式信息的HTML代码([8]-[14]行)。 [15]和[16]行指示处理器按照[20]至[33]行的模板生成selist子树的显示样式。 第[20]行匹配XML文档中的selist节点元素,并生成相应的HTML代码([21]-[25]行),第[26]行则匹配XML文档中的元素se,为每一个se元素生成单独的一行,并按name进行排序。执行完成后,返回第[17]行生成剩下的HTML代码。 有关XSL和XSLT的详细信息,请参阅相关的文档。   [完]

阅读全文(5080) | 回复(1) | 编辑 | 精华

 


回复:(连载)语义网之路--XML文档的显示
guest(游客)发表评论于2007/6/4 20:35:23

应为xmlns:xsl="http://www.w3.org/TR/WD-xsl" 否则会报错的

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
Google
最 新 日 志
信息组织视角下的语义检索
本体是一种情报检索语言吗
(连载)语义网之路--RDF模型的基本思
大风起兮沙飞扬(27)
大风起兮沙飞扬(26)
大风起兮沙飞扬(25)
大风起兮沙飞扬(24)
大风起兮沙飞扬(23)
大风起兮沙飞扬(22)
大风起兮沙飞扬(21)
大风起兮沙飞扬(20)
大风起兮沙飞扬(19)
大风起兮沙飞扬(18)
An Ontology-Based In
基于本体的信息检索模型
 
最 新 评 论
回复:郁闷
回复:用MySQL存储本体
replcica watches
回复:Protege汉化全攻略
回复:Protege汉化全攻略
回复:Protege汉化全攻略
回复:基于本体的信息检索模型
回复:小型本体构建心得(Protege 
回复:优美英文心灵鸡汤:别太久错过机会
回复:优美英文心灵鸡汤:别太久错过机会
 
最 新 留 言
签写新留言

加我下QQ
请求帮助
真好
关于mysql和protege 有问题想
佩服佩服
关于语义网之路
大树
这个周末愉快!
周未愉快
周未愉快!
 
Blog 信 息
blog名称:风落沙
日志总数:348
评论数量:550
留言数量:52
访问次数:1591471
建立时间:2005年1月28日
友 情 连 接


 

狂潮怒啸

 
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.059 second(s), page refreshed 144768272 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号