利用GXML设计学科知识体系结构的灵活布局图

时间:2022-08-13 01:25:41

利用GXML设计学科知识体系结构的灵活布局图

摘要:基于图像的建模语言GXML不同于以往的图像编码,它能够将图像的内容和样式分离,这使得图像能在网络上进行高速传输,并能适应不同的客户端浏览器。利用该特点对学科知识体系结构进行描述,可以得到一个图像的灵活布局。

关键词:GXML;样式;知识体系结构;灵活布局

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)06-11624-03

1 引言

随着功能更为强大的个人电脑和更高网络带宽的出现,网络已经成为图像传输的主要媒介,任何一门学科都可以用一种知识体系结构图来描述,并通过网络来传输,但是网络上的大多数图像的信息交换都是以低级的基于像素的像GIF或JPEG 这样的编码形式为基础的这种编码不但浪费带宽,而且不支持查询以及客户端对图像的操作。更糟糕的是,对客户端而言,不可能让图像适应所有的浏览器,就比如说很难在PDA或者移动电话上的微型显示屏上显示一个图像。虽然也有SVG[1]和VRML[2]这两类图像标准出现,但它们对于图像的描述还不是基于内容的,仍然是基于像素的或是面向对象的,于是就提出一种图像建模语言――GXML,它将图像的内容和样式分离开来,这种图像格式不仅使得图像在网络中传输速度快,而且它还支持灵活的布局。

2 图表标记语言(GXML)

运用GXML来设计在网络上传输的知识体系结构图有它比较现实的意义。因为GXML是基于结构的图像标记语言,它运用XML[3]语言来说明,采用XML[4]标记描述图像的逻辑结构,比如,节点,边,以及节点和边的类型(类),并将子图作为母图的逻辑节点,我们可以将一个图描述成一种层次结构。

每个GXML文件包含一个或多个标记,每一个又包含许多和标记。节点的ID属性在边定义中被引用,边包含一种属性,用它来说明是否是有向边,此外,在不支持GXML的浏览器当中,可以将标记的ALT和IMG属性用到对图的描述中。而且、、都可以包含一个 元素,它用来定义与它相关的节点的文本信息。

我们将GXML的逻辑结构用在层次图的定义当中,采用如下方法来建模:一个标记能递归包含其他的标记。一个子图必须定义一个元素,这个元素的作用是用一个抽象的唯一端口标志符代表该子图的节点,而这些节点又与子图外的节点相连。因而,定义的端口被看作是子图外部边的连接点。在一个完全展开的图当中,这样的边能直接连接到与它有联系的节点,而在一个折叠的图中,这种未展开的子图仅仅只是展示出它的初始形态(用它外部的端口),边路由到这些端口。每个元素有一个VISIBLE属性,这个属性有四种取值EXPANDED、COLLAPSED、HIDDEN和OUTLINED。HIDDEN属性表明阻止显示子图及与它相关的边,OUTLINED类似于EXPANDED,但不同的是,为了使层次更加明显,它在子图的周围画上一个附加的边界线。除了OUTLINED模式,端口都是不可见的,外部边都路由到端口,并且还有从端口到内部节点的边。

以数据结构中的线性表的部分知识结构图为例(如图1和图2)。

图1 线性表的部分知识结构图

图2 对应于图1的折叠形式

以下给出了对应于图1和图2的GXML代码。

Linear List

Structure of Storage

Structure of Storage

Operation of Data

Operation of Data

Sorting

Insert

Delete

同时GXML可以借助标记对图中各元素之间的几何关系进行约束,=ps.X+2*ps.width”/>这个约束可以约束两个ID分别为pa和ps的节点,使pa位于ps右边,并且两者之间的距离至少是两倍于ps节点的宽度。

3 图表样式语言(GXSL)

XSL[5]是XML的样式表语言。XSL[6]的主要缺点是:使用它比较复杂而且难度大。这是因为,它是所有XML文档的一种通用的样式表语言,而在图表结构上,它不支持任何特殊的操作,比如选择连接节点。另一个原因就是,如果要执行该选择节点的操作,就必须将Java Script方法嵌到XSL中,但是这会使语言结构变得更加复杂,而且使用这样一种样式语言对于一般的网页设计者而言是没有多大好处的。

由于这些原因,就设计了一种特殊的样式表语言-----GXSL,利用它来详细说明GXML文件的外观。GXSL是一种基于XML的语言。尽管这使得GXSL对比于CSS[7]会显得很冗长复杂,但它有较好的灵活性,并且在用标准的XML工具(如剖析器,XSL处理器等等)处理GXSL时它可以提供许多可能性。

GXSL是GXML文件样式定义语言。一个标准的GXSL文件包含三个主要元素:第一个元素指定预处理,用它来测试一个样式表是否可行。第二个元素指定用哪个布局引擎来画这个图。第三个元素是一组规则,它们被应用到GXML文档中来衍生出额外的布局条件。

它的规则结构与XSL文档很相似,但是一个重要的区别是:GXSL的规则没有嵌套关系,都是依次轮流单独地(彻底地)应用它的每条控制规则,每条规则不能调用其他的规则。跟XSL文档的程序导向语义相比,GXSL文档的语义更易于理解和定义。每个是由左边的分支和右边的分支构成的。左边的分支定义一个图表结构,GXSL操纵GXML文件中一个个子图来与之相匹配。如果发现一个匹配,就请求一个控制。这就意味着,根据这种匹配,将左边分支的变量赋给该匹配,而右边的分支给出对应变量值。我们可以称左边的分支控制为选择器,右边的分支为声明。规则应用的结果就是在文档中加入了新的布局约束。

在图1中,可以看到ID为ss1和ID为op1的节点,它们的孩子是垂直对齐的,下面给出一个GXSL文件,它是对图1和图2中节点垂直对齐排列的GXSL描述,它用来约束一个类(STORAGE)所有的孩子节点,使它们垂直对齐排列(X坐标相等)。

GXSL文件:

DIRECTED=’’TRUE’’>

可以看出,通过使用一个变量(_par)来匹配一个类节点的所有子节点(子节点都拥有_par变量),使得该类节点中的所有孩子节点垂直对齐排列。

样式表在与一个GXML文档关联时,要用到GXML文档的标记来连接文档中的一个或多个样式表。例如。

4 结论

本文中给出了一种基于XML的描述性语言――GXML,利用这种语言来描述图表的基本结构,而后通过使用图表类型语言GXSL可以将布局信息中的图表结构描述进一步细化,给出更具体的约束,从而获得一个图像的灵活布局。这种方式可以有效利用网络带宽,并使图像的显示独立于浏览器,使得图像信息通信变得更加简单灵活。

参考文献:

[1]Dean Jacks(ed.)(2003) Scalable Vector Graphics(SVG)1.1SpecificationW3C Recommendation,14,January,2003[DB/OL]. /TR/SVG/.

[2]ISO/IEC JTC 1 and The VRML Consortium (1997) The virtual reality modeling language.

Technical Report, ISO/IEC Standard 14772.[DB/OL]./Specifications/VRML97/.

[3]. T. Bray, J. Paoli, C. M. Sperberg-McQueen & E. Maler (eds.) (2000) Extensible Markup

Language (XML) 1.0, 2nd. Technical Report, W3C, 2000[DB/OL]./TR/2000/REC-xml-20001006.

[4](美) Peter G.Aitken.著.谢君英.译.微软XML技术指南[M].北京:中国电力出版社,2003.

[5](美)John E.Simpson.著.彭仕安,郭漫雪,周林明.等.译.XSL技术实践[M].北京:机械工业出版社,2002.

[6].S.Adler,A. Berglund,J. Caruso, S. Deach, P. Grosso, E. Gutentag, A. Milowski, S. Parnell,

J. Richman & S. Zilles (eds.) (2000) Extensible Stylesheet Language (XSL) Version 1.0.

Technical Report, W3C.[DB/OL]./TR/2000/WD-xsl-20001018/.

[7].B.Bos, H.W.Lie, C.Lilley & I.Jacobs (eds.) (1998) Cascading Style Sheets, level 2 CSS2

Specification. Technical Report, W3C. [DB/OL]./TR/1998/REC-CSS2-19980512/.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:基于组件的Agent框架研究 下一篇:虚拟社区管理初探