admin 管理员组

文章数量: 1184232


2024年4月20日发(作者:sscanf 堆栈)

维普资讯

技术及应用 《教育信息化》编辑部:mis@moc.edu.cn 

基于 的We b页面树形组件的 

设计与实现 

垦管理干部学院信息中心 

中图分类号:TP311 文献标识码:B 

张瑞华 

文章编号:1671-7201(2006)04-0072—02 

引言 HTML页面。XSLT文件可以是预先定义的,也可以是按照一定规 

则利用程序即时生成的。在HTML代码中一般使用CSS来统一 

规范界面的风格。 

当组件开发基本完成,Schea文件以及XSLT文件构成了组 m

件的引擎,XML则是组件引擎的输入数据。使用者根据实际应用 

按Schema文件生成XML文件,在XML文件中链接Schema文 

件和XSLT文件,则浏览器在打开此XML文件时。调用Schema 

文件对XML文件进行数据有效性检查,通过后再调用XSLT文 

件对XML文件进行解析,以得到最终含有组件的页面。图1就是 

组件实现的流程图。 

在开发基于Web的应用程序中。经常要使用树形目录系 

统。在开发网络课程考试系统中,利用XML技术开发了树形组 

件,此组件在浏览器中具有一定的视觉表现,显示指定的信息, 

并能够与客户进行交互。开发完成的组件可以交给控件的使用 

者直接利用,使用者只需要提供待显示的信息。由组件加以相应 

的处理,最终在浏览器中显示符合要求的界面。这样就实现了数 

据与应用的分离,便于扩展与维护。在编写基于web的应用程 

序中,实现数据与应用分离较为合适的技术为XML。利用XML 

技术中的DTD或Schema定义用户数据的结构,XML文件保存 

待显示的数据,XSLT文件完成生成树形界面的最终任务。 

二、树形组件的实现步骤 

第一步,对需要实现的界面组件进行外观设计,决定其在 

HTML页面中如何表示,信息如何显示;然后抽取组件的属性,比 

如文字的大小和颜色、组件的背景图、控制组件行为的参数等,需 

要在组件中显示的信息也作为属性看待。这些属性形成组件的属 

性列表,并注明哪些属性可以由使用者指定。记录下组件应该支 

持的交互操作,以便将来实现它。 

有了组件的属性,就可以开始使用Schema定义组件的结构。 

用面向对象的方法将组件属性一一转化为Schea中的元素。或 m

多个组件属性作为元素属性集合于Schema一个元素中。定义 

Schema文件时,应充分利用Schema的各种功能,比如,必须要指 

定的组件属性可以设置元素属性use= required ,有缺省值的组件 

属性可以设置default= <缺省值> ,等等。不用使用者定义的属性 

可以不定义在Schema中。 

圈1组件实现流程圈 

三、树形组件的实现实例 

1.树形组件的设计 

个典型的树形组件类似Windows资源管理器中左侧的资 

源树。其特点是通过直观的树形表示数据间的层次关系,由图标 

指示数据的属性和状态,使用者可以通过展开、折叠树中的节点 

灵活地显示指定的数据,并通过选择某个节点来进行相应的操 

作。 

第二步,对组件应该实现的交互功能进行编码,一般通过脚 

本来实现。利用脚本函数或脚本对象封装复杂的代码实现是比较 

好的方法。 

第三步,将实现组件交互功能的脚本代码、实现组件外观的 

HTML代码放置于一个XSLT文件中;如果按照模块化的方法。 

将这些内容放置于不同的XSLT文件中,并用一个主XSLT文件 

引用它们即可。此XSLT文件检索XML文件中定义的组件属性。 

树形组件的外观中包括4个主要部分。即节点图标、节点文 

本、节点展开折叠把柄以及节点连接虚线,其中图标、展开折叠把 

柄以及连接虚线将使用图片来表现。 

树形组件主要的交互功能有二:节点的展开、折叠以及节点 

的选择。任一节点的展开、折叠可通过显示、隐葳此节点的所有子 

节点来实现。对于节点的选择功能。通过对节点图标以及节点文 

通过对属性值的适当处理,将包含信息、参数、属性的XML文件 

转换为包含具有外观、显示相应数据、有交互功能的组件的 

维普资讯

《教育信息化》发行部:cyl@moe.edu.cn 

本的鼠标点击事件进行编程,或将节点文本设置为链接即可实 

现。 

节点文本用于显示信息,通过HTML的font元素可以方便 

技术及应用 

<xsl:variable ngnle=”parent”select ”count(parent::Node)”/> 

<xsl:variable nallle=”children”select=”count(./Node)”/> 

<xsl:variable nallle=”sibling”select=”count(./following一 ̄bling: 

Node)”/> 

地得到各种表现的文本。 

2.具体实现 

下列代码示范了使用table元素显示一个节点: 

<table border=”0”cellspacing ”0”cellpadding=”0”> 

<汀> 

完成了对树形组件的大致设计,可以生成Schema文件。在 

Schema中。定义一个根元素Tree,对应于整个组件。Tree元素下定 

义4个子元素:Node、Background、DefaultTarget.Jsc却tFunction。定 

义Tree元素的Schema代码如下: 

<xs:dement nallle=”Tree”> 

<xs:complexType> 

<xs:sequence> 

<xs:element ref=”Node’I/> 

<td><img border ”0”src ”photo1.g ></td> 

<td><irng border:”0”id=”array

l”src ”pho ̄2.gie’></td> 

_

rc ”photo3.gie’></td 

<td><irng border=”0”id=”array

2”s

_

<td nowrap><font id=”arrary_3”>XML</font></td> 

</汀> 

<Imb ̄> 

<x ̄:element ref=”Background”minOccurs ”0”/> 

<xs:element ref=”DefaultTarget”minOccurs ”0”/> 

在生成节点的HTML代码时,有一个关键点是为每个节点 

指定一个唯一的关键字,经过适当的处理后关键字分别用于指 

定节点图标、节点文字的ID.这些ID可以作为参数传递给脚本 

函数。以便控制HTML元素。下列XSLT代码根据Node元素在 

XML文件中的顺序生成~个唯一的关键字保存于变量NodelD 

中: 

<xs:element ref ’'JscriptFunction” 

maxOccurs=”unbounded”/> 

</xs:sequence> 

</xs:complexType> 

</xs:element> 

minOccurs ”0” 

<xsl:variable name=”NodelD”select=”generate—id(.、”/> 

Background用于定义组件的背景图;DefaultTarget定义了组 

件中所有链接的缺省目标窗口;JscriptFunction元素用于定义脚本 

函数,可多次应用以定义多个脚本函数,这些脚本函数可以由 

Node元素的Action、OnClick属性调用,以完成用户自定义的功 

能。 

Schema文件和XSLT文件创建后,就可以用来处理XML文 

件。使用者只要生成XML文件,并在XML中引用些XSLT文件, 

则在IE浏览器中打开此XML文件时.将显示出一个树形组件。 

下面是一个XML文件的片断: 

<Tree> 

Tree元素的Node子元素对应于组件中的根节点,在此Node 

元素下.可以递归定义任意数量的Node元素,从而形成了一个节 

<Node Text=”课程”Expanded=”t/'ue”Image=”image/ 

photo3.gie’Expandedlmage=”image/photo4.gie’> 

点树。 

下一步是生成XSLT文件。XSLT文件中首先定义一些常 

量.比如imgOpenFolder值指示了展开节点的图标的URL等。 

<Node Text=”财会专业”Tip=”Test Tip”> 

<Node Text=”会计基础”Action=”Account tset.asp”/> 

</Node> 

定义这些常量有利于保持XSLT文件的简洁以及可读性.也便 

于维护。用于控制节点展开、折叠的脚本函数也包含在XSLT 

中。 

<Node Text=..计算机应用专业”> 

<Node Text=”网页制作”Action=”homepage_test.sap”/> 

</Node> 

</Node> 

XSLT文件将对XML元素进行处理以生成HTML代码。比 

如.如果XML文件中定义了Background元素,下面的XSLT代码 

<DefaultTarget>main</DefaultTarget> 

</Tree> 

将生成一行HTML代码.指示HTML页面的背景图片: 

<styl ̄>body{background—image:url(<xsl:value—of select ’ 

四、结束语 

使用XML技术并结合HTML以及脚本技术.以模块化、对 

象化的思想来开发、设计类似树形组件的Web页面组件非常合 

适。而页面组件的开发及组件库的建立.也必将在页面设计以及 

Background”/>)}</style> 

利用XSLT模板递归处理XML文件中所有Node元素以生 

成对应的HTML代码。对每个Node元素.XSLT主要完成两部 

分工作:一是节点本身的显示.二是定义div元素包含其所有子 

节点。节点本身的显示又包括显示节点连接虚线、节点展开折 

叠把柄、节点图标以及节点文本。组件利用HTML中的table、td 

元素规范、定位这些图片和文字,若XML的Node元素中没有 

定义节点的图标.将使用XSLT文件中定义的缺省图标显示。 

B/S开发等活动中极大地提高代码的可重用性,提高编码效率,提 

高系统可维护性,降低系统维护成本。◎ 

参考文献: 

…1 Fabio Arciniegas著.XML开发指南【M】.天宏工作室译,北京:清华 

大学出版社.2003. 

在这个处理过程中,获取节点相关信息是必需的,下列XSLT 

代码分别获得当前Node元素父节点、子节点以及后续兄弟节 

点的个数: 

[2】XML Schema.http:llwww.w3.org/XML/Schema/. 

【31 XML developmem history.http:llwww.w3.org/XML/hist2002 

20o6年4月一 o 


本文标签: 组件 节点 属性 显示 文件