admin 管理员组文章数量: 1087139
2024年3月10日发(作者:filemanager是什么软件)
计算机研究与发展
Journal of Computer Research and Development
ISSN 1000—1239/CN 11-1777/TP
49(4):826-832,2012
基于XML和XSD的通用GUI生成器研究
姜劲松 严 坤 倪桂强 何 明 杨 波
(解放军理工大学指挥自动化学院 南京 210007)
(haitian19800120@163.corn)
Generic GUI Generator Based on XML and XSD
Jiang Jinsong,Yan Kun,Ni Guiqiang,He Ming,and Yang Bo
(Institute of Command Automation,PLA University of Science and Technology,Nanjing 210007)
Abstract In order to satisfy the demand of fast change of GUI(graph user interface)raised bv
application software,a GUI generator is designed based on XML and XSD(XML schema description
language).It is supported by paring and persistent algorithms based on the idea of depth recursion
and width reeursion.The generator is composed of a GUI designer and a GUI parser
Semantics of
.
both layout and data model are supported,including the hierarchy style and data models of group,
union and enumerator.Finally,an example Of router of some network intrusion detecting system is
shown,in which GUI can be generated in Java and C#languages,and the semantic validity of input
data can be checked aIso.
Key words graph user interface(GUI);XML;XSD;recursive algorithm;generic generator;
semantics of data model
摘要 为了满足应用软件对图形用户界面(graph user interface,GUI)快速变更的需求,提出了基于
深度递归和广度递归思想的持久化和解析算法,设计了基于XML和XSD(XML schema description
language)的GUI生成器.该生成器包括设计器和解析器,支持层次化的界面样式语义以及组、联合、枚
举等数据模型语义.最后,给出了应用示例,使用Java和C#语言分别解析了采用该生成器定制的某网
络入侵检测系统的路由器对象,同时可以验证用户输入数据是否符合约束语义.
关键词 图形用户界面;XMI ;XSD;递归算法;通用生成器;数据模型语义
中图法分类号TP311
软件规模的扩大、复杂性的增加以及用户界面
需求的快速变更,耗费了开发人员大量的时间和精
力.因此,研究并设计可以适应需求快速变更、具备
跨语言和跨平台特性的GUI生成器是具有实际工
程意义的.
~
种描述图形用户界面的XML语言MXMLl】],并
发布了基于MXML的开发环境Flex;Microsoft公司
在其Windows操作系统Longhorn中使用了XAML
语言l2 的图形用户界面引擎Avalon;Mozilla开发
小组专门为Mozilla浏览器的定义开发了一种用于
描述用户界面的语言XUL[3j.这些语言的共同点是
基于XML语言来设计的,而XML语言可以从
XML Schema中生成.因此,以XML及其模式文件
XSD协同构建跨语言GUI生成器是可行的.
由于构成GUI的各种元素具有的层次和嵌套
关系,与XML文档中元素和属性之间的关系类似,
使用XML来描述图形用户界面是较有效的方法.
Maeromedia公司针对其独有的Flash技术,发布了
收稿Ft期:2009 11 29;修回日期:201卜O7 O4
基金项目:国家自然科学基金项目(60603029)
姜劲松等:基于XML和XSD的通用GUI生成器研究 827
类型,且不支持面向多种平台的解析.
1 相关研究
Radha等人l_4 提出的基于XSD的通用GUI生
成器可以将XSD模式文件生成不同语言,如Java,
(X)HTML,WML等渲染的图形用户界面.但此生
成器支持的界面语义有限,如界面层次性及枚举属
性的语义等就无法表示.Joseph等人 提出的基于
模式图的XSD模式生成器方法充分考虑了关系数
据的语义,利用XSD中的extension,restriction等
结合了XML语言、XSD语义及面向多终端的
思想,本文提出了开发通用的GUI生成器,可以使
用不同语言如C#,Java,XHTML,WML进行界面
的展示,并且通过XSD模式验证界面输入数据的有
效性.
2基于XML和XSD的通用GUI生成器的
设计与实现
基于XML和XSD的通用GUI生成器(universal
GUI generator based on XML and XSD。XUGT)
元素表达了继承、关联、聚合等关系;Ln等人L6]提
出了基于语义约束的从XML到关系模式的映射方
法,该方法利用函数依赖、DTD模式等语义从概念
包括两部分:基于XML和XSD的GUI设计器
(GUI designer based on XML and XSD,XGD)和
和形式上定义了域约束、选择约束、索引约束类型,
对本文GUI生成器语义的设计提供了参考.Mori
等人l7 提出了基于多逻辑描述的多终端界面设计方
法,对用户界面进行了3层抽象,建立了任务模型,
并扩展TERESA软件平台开发了面向多终端的界
基于XML和XSD的GUI通用解释器(XGP,
universal GUI parser based on XML and XSD).
利用XGD设计软件GUI后,XGD会将其持久
化到一套XML文件:XGUILayout,XGUIValue及
XGUISchema.XGUILayout存储界面控件的布局
面生成器.清华大学的彭世新等人 提出了一种
Schema驱动生成用户界面的技术,该技术使用
Schema灵活的数据结构,利用Java语言开发转换
工具,目前应用在电子表单生成及数据处理引擎中,
但该文提出的工具描述数据的能力有限,不支持复合
信息,XGUIVa1ue存储控件中需要输入的值,
XGUISchema存储输入值的约束信息,三者通过唯
一
的关键字关联,形成一个抽象后的GUI整体描
述,如图1所示:
XOUILayoutl rt name} ——
!
—
__[互
厂===_===_
I::::= :
—
I XOUISchema] —臣 圃
丝 l
—
nstainCde c卜_-
厂
一
I global_elem洲l’_-1
I
——
I……
l…一…l l广==Z===
L——_r_
value
_
type卜_r_1 complex l
XGUIValue l H! 丝l
constraint descl
Fig.1 The whole description of GUI.
图1抽象后的GUI整体描述
2.1 XGD的设计与实现
图形界面语言的特点,屏蔽不同编程语言控件库的
经过比较归纳,在参考了多种基于XML描述
差异,将GUI控件抽象为3类:名控件、值控件和容
828 计算机研究与发展2012,49(4)
器控件,定义如下:
定义1.名控件(name control,NC).指一般用
以显示文本的标签类控件,如Java SWT的JLabel,
提供承载NC和VC的控件,分为普通容器和组容
器.普通容器是指具备基本承载能力的容器,不能扩
展容器数量;组容器可以定义容器容量,分为固定
(fix)、随机(random)和索引(reference)3种方式;采
Microsoft C#的Label控件等.
定义2.值控件(value control,Vc).指供用户
输入值的控件,如Java SWT中的JTextBox,
JRadioButton,JCheckBox,Microsoft C#中的TextBox,
DatePicker,CheckListBox等.
用工厂模式生成控件及代理(proxy)类,使用代理模
式控制对控件的访问并进行相应的数据约束处理,
利用组合模式形成复杂控件,完善容器控件的类型.
XGD的类结构如图2所示:
定义3.容器控件(container control,CC).指
Fig.2 The structural figure of XGD class
图2 XGD类结构图
控件与相应的proxy互相索引,proxy承载了
WriteContainerLayout(son
node);
其映射控件对象的数据约束信息,为VC和NC提
else if(sonnode is Value)
—
供约束信息和容量信息,丰富了GUI的语义.
2.1.1 GUI界面元素持久化到XGUILayout布局
文件
WriteValueLayout(son
node);
else
WriteNameLayout(sonnode);
采用XGUILayout文件描述界面的布局信息.
算法Layout—Serializer采用深度搜索思想从根控件
的代理进行扫描,依次向叶节点搜索,根据不同的节
/*write**Layout——分别处理不
同类型的代理对象,包括名控件、容
器控件及值控件*/
end
end
点类型(如容器节点、值节点等)分别处理.
算法1.持久化到XGUILayout的深度搜索算
法Layout—Serializer.
WriteContainerLayout,WriteValueLayout及
输入:根控件的代理对象root—node.
begin
for each sonnode of root
0 P一 ̄children
—
WriteNameLayout 3种方法均要描述控件的布局
信息,如location,size等.但不同点是VC需要处理
输入值及其约束信息,CC需要处理容器的容量属性.
2.1.2 GUI持久化到XGUIValue值文件
GUI设计完毕后需要保存VC信息,包括对象
属性名和值.XGUIValue文件的作用是保存用户定
制的属性默认值.该算法的设计思想是递归遍历控
件树,遇到VC即存储相应信息,相对于布局和约束
begin
if(son
node一 ̄sonlist-- ̄count!一O)
—
Layout
Serializer(son
node);/*递归
处理子代理对象*/
else if(son node is Container)
姜劲松等:基于XML和XSD的通用GUI生成器研究 829
信息比较简单,不再赘述.
2.1.3 GUI持久化到XGUISchema约束文件
/*Q甜g Pc072 口 nPr表示容器队列,采
用广度遍历,需要将遍历的兄弟容器入
队*/
Write sehme elements for container node.
为了使GUI具备更丰富的语义,使用代理对象
存储每个类型控件的约束信息及事件信息,包括数
据类型、数据长度、单位、容器类型、容器索引等,为
界面元素提供了强大的值描述能力.
每一个XSD文档有且只有一个根元素Schema.
Schema节点包含全局元素、全局类型等,全局元素包
含的子节点类型有元素(element)、复杂类型(complex_
else if(sonnode is Value)
——
QueneValue.Add(son—node);
/*QueneValue表示值队列,采用广
度遍历,需要将遍历的兄弟值代理人
队*/
type)、简单类型(simple—type)、组(group)、属性组
(attribute
—
group)、注释(annotation)等 .
利用广度搜索的思想将控件对应的proxy持久
化到XGUISchema模式文档中,算法Schema—
Serializer和ContainerSchema—Serializer如下.
算法2.持久化到XGUISchema文档的递归算
法Schema—Serializer.
输入:代理树的根节点root—node.
begin
CommonRestriction();/*写通用类型的约束
信息*/
GlobalElement(root
node);/*写对象全局元
素*{
for each sonnode of root
node
——
begin
if(son
——
node is Container)
ContainerSchema
—
S8r 口Z Pr(s0 node);
else if(son
—
node is Value)
ValueSchema
—
SPr nZ Pr(s0
node);
/***Schema—Serializer表示将相应代
理对象的约束信息写到XGUISchema
文件*/
end
end
算法3.持久化容器模式的广度搜索算法
ContainerSchema
——
Serializer.
输入:代理树的根节点root
—
node.
begin
count—GetConta inerGroupCount(node);
/*获取容器的组数如果为0,则表示非组容
器*|
for each son node of node一>children
begin
if(son
——
node is Container)
QueneContainer.Add(son node);
Write schme elements for value node;
end
for each node of Qz£P PC0 口 r
begin
ContainerSchema
SPr 口Z Pr( 0 );
—
end/*遍历结束后,出队依次进行广度遍历
搜索*/
for each node of QueneValue
begin
ValueSchema
S r nZ r( 0 P);
end
end
Schema
—
Serializer首先遍历proxy树中根节
点的儿子节点,将代理分为2种类型来处理:值
proxy和容器proxy,分别利用ContainerSchema—
Serializer和ValueSchema—Serializer串行化器将
其持久化到模式文件中.容器类型采用组元素表示
(XSD语法:xsd:group),其子元素利用ref属性索
引,以便xpath寻址;对于值类型元素采用complex
type元素表示.
complex
type的子元素顺序和结构称为内容
模型,用模型组、元素声明及通配符的组合来定义.
一
般模型分为以下4类.
1)Sequence:顺序结构;如P一>n6c,表示顺序
的元素结构(XSD语法:xsd:sequence).
2)Repetition:循环结构;如B一>6*,表示元
素b重复出现n次(O≤rain≤ ≤masc≤infinity),
其中rain和max由xs:sequence元素下的minOccurs,
maxOccurs属性决定.
3)Alternative:选择结构;如D一>(elf),表示
允许在D集合里出现elf的任意一个元素(XSD语
法:xsd:choice).
4)Arbitrary:任意结构;表示所有的子元素可
以以任何顺序出现0或1次(XSD语法:xsd:al1).
ContainerSchema
—
Serializer持久化组容器proxy
830 计算机研究与发展2012,49(4)
的语义到XSD模式文件中.组容器的处理分为两 到控件树及相应的proxy树结构中,完成到不同语
步:首先处理其组语义,然后递归处理子元素部分.
组语义的定义如下:
言的界面解析.主要算法包括解析XGUILayout的
Layout
—
Derializer和解析XGUISchema的Schema
1)索引数量.表示组的容量大小由对象的某个
属性值决定(XSD语法:xsd:ref),容量大小(S:
sequence minOccurs一“0”?naxOccurs=“0”>语法表示.
Derializer.
2.2.1 Layout Derializer,Schema Derializer及
Value
—
Derializer解析算法设计
2)固定数量.表示组的容量是固定大小的
(XSD语法:xsd:fix),容量大小由(XS:sequence
minOccurs “fix—count’’ ̄TtaxOccurs一“fix
—
Layout Derializer,Schema Derializer及Value
Derializerr解析算法是持久化算法的逆过程.基于
深度搜索的思想解析XGUILayout布局文档到控
count”)语法表示,其中fix—count表示容量大小.
3)随机数量.表示组的容量是由实例的生成情
件树;基于广度搜索的思想将XGUISchema中的约
束信息解析到控件树对应的proxy树;采用递归算
法读取XGUIValue信息到相应值的proxy中,至
此,完成GUI的解析工作.
2。2.2数据验证器设计
对用户的输人数据进行约束验证是系统正确
性、有序性及规范性的重要保证.在XGP中设计了
相应的XSD验证器,通过读取用户输入到模式构建
器中进行XSD约束验证:如果模式正常则进行,否
况决定的(xSD语法:xsd:random),容量大小由
(XS:sequence minOccurs一“0”7naxOccurs=
“infinite”>语法表示.
子元素部分由xsd:group模型组表示,具体元
素采用<xs:element ref一“attribute”>语法索引到
相应属性的复杂类型,attribute表示索引的属性名,
以此形成递归的结构关系.
2.2 XGP的设计与实现
XGP从XGUILayout,XGUISchema,XGUIValue
则验证事件处理顺序,记录验证失败结果后返回给
应用程序流,提示用户实例数据内容不合法.验证过
程如图3所示:
文件中将用户设计的界面布局、约束信息及值解析
Appliacation Data Stream
AppliacationDataStream
Fig.3 Relation of reader,validity and event handling
图3内部读取器、验证器及事件处理之间关系
考虑到涉及某些敏感应用中数据的安全,可以
在XML文件生成时对数据进行加密及签名,在验
证器部分首先对文件进行解密及验证签名,保证文
件的机密性和完整性.目前XML安全标准支持对
XML文档全文或者是部分数据的加密,加密采用
DES来实现,数字签名使用PKI公共密钥体系来完
成,不再赘述.
3应用及结论
3.1 应 用
利用XUGT可以为各类信息管理系统设计
GUI界面,也可以为工作流系统设计表单对象、用
户对象等.以某网络入侵检测系统中各类设备的
姜劲松等:基于XML和XSD的通用GUI生成器研究 831
GUI建模为例,如路由器、服务器设备等,利用
XUGT定制设备GUI,包括对象布局、默认值及其
约束信息.图4展示了XUGT的工作流程,首先将
路由器对象进行GUI抽象,利用XGD设计路由器
C#语言、Java语言的转换并生成设备界面.对于用
户输入的路由器参数,XGP会利用模式验证器对输
入进行验证并提示用户.图5、图6为XGUILayout,
XGUISchema文档结构,由于XGUIVa1ue中只包
设备界面信息及相应约束信息,生成xGUILayout,
括值属性列表,故不再赘述.
XGUISchema及XGUIValue文档,最后由XGP进行
一 ∞ ∞ “
I④l
≯“
垮 嚣 ¥ ≮
“0≯|¨
l
…一0 嘞 一
Elements of Object
滕XG ̄ayol
一 ‘
{
/
r《 毹 一 目 "~’-
黪 Abstract
一
图
椭 r 韵r…
…m 一 … 一一
/ XGUIValue
C#GUI
图
XGUISchema
Build Platform Building Objects
JavaGUI
Fig.4 Work flow of XUGT
图4 XUGT工作流程
v ; l g帅0 《口 l ,
; 潲
#.*ttrih 确
篓
t摊
础
:,nt・譬|
蕊蠊
/>
r t々 懈 婚 ・ ^ 辩岫: #:t性 ,》
,
i t日n船 l 矗l >
# i # 描t>
☆ li t t .siri ̄C/)
: l帅l订 》
(, lbut >
‘iI邶囊 't 端 bit >
《 r # l0 i0h ’ tt >
#‘ 懒 h础 = ,>
{ 自 i 枉 # l ,>
《 rJ ti姐>
(, 蝴 站 e'
tti ̄t*n榔 撕 螗・ >
‘m蝴}T仲 》
“#t t 辨 K5 trt ,>
<, *. I唧l 件 )
‘, 日。#ttr qt )
妊 tt j t{n榔 dt t竹} { ¥trial: ,)
,
4t t4 蚺 t“《t t抑 #l # /)
{:tIt n辅 Iti・砒 冲 s tt />
《 一lf盥辩箍髓嚣鼯持毂京巍一>
☆ :0神pl船聊#n揣栌 i >
:舯l帮c帐t舭>
*:日 t蝴#t lt-s瑚PI >
tt 1 te# 释 R d 8聃l O ,)
.
t”冲 t・: 辟 ‰ t#州,)
#: ㈨h啡 #拈 蛐 t 啦 />
奸ih 始 c4 tr 棚l・;e t 翱鬟搬避 ,>
《 s: xt帕 i
tl 埘 日nt>
<, h 口 聊e)
# _l瑚a 聊g∞瓣 i _s捌 >
t “帆h -l ttI}・ ,>
x#. i卟l ・>
t 帅啦 摊t#懈 “t IP| >
臼 #j吼tC4 t拙t)
:ent ̄ni柑b d・t・ 瓣罅 >
钒‘ tri r J 8 f 0 ,>
_tt“bq r 壮 it f4畦 ¨,>
:t i 啦t 牡 c吣 t -J棚・ f 协渤裳撼避 ,>
, 柑t ∞ n)
xt lmn 州 t ht>
‘ ”t>
‘ #:
i 吐 卯 “忡
・# 口 n #
“t量. 帅
{:d t n_4 >
>
,: ^ n以 ¨ j静∞呻l,∞:∞:OO ,>
:mq n nt 博 l2-31Too:∞ 00 ,)
≮,lE :r_ t tctt h>
“:gl_ 辨 》
,’ 口 ^l渤哪 蹭 )
< *。 日qH )
#:_ 口郴 ・ 蝴 黼 l 黼 1 )
:d椰蚺t 姆 d打l ,)
: 椭拍t 牡 ta扛 >
讪 # t #,
<,x _ 忡“口 >
《 x ‘ 1Ij )
Fig.5 XGUILayout file of object layout Fig.6 XGUISchema file of obj ect schema
图5对象布局XGUILayout文件
图6对象模式XGUISchema文件
832
3.2结论及展望
通用的GUI生成器具有实际的工程意义.本文
提出的基于XML和XSD的通用GUI生成器
XUGT可以定制各类信息管理系统中的实体对象、
工作流系统中的表单对象等.XUGT利用XGD定
制对象界面和数据约束信息,采用XML语言和
XSD模式持久化对象布局信息、约束信息及值信
息;使用XUGT进行跨语言的界面解析,并具备验
证用户输入的能力.
相比较于国内外的GUI描述语言和GUI生成
器,XUGT的特点包括:
1)为领域用户提供了实体对象的可视化定制
平台XGD,一旦用户对GUI的需求发生更改,只需
在XGD中修改并保存即可,不需要更改程序代码,
降低了软件维护成本;
2)支持界面容器的语义,可以支持层次化的界
面设计,丰富了GUI的表现能力;
3)支持复杂类型控件的数据表示,如组、枚举、
联合等,可以满足不同需求的数据表现需求.
下一步研究的方向包括设计系统流程的可视化
_
定制平台,结合通用GUI生成器,可以完整地定制
出整个系统,进一步提高软件适应需求变化的能力;
另一方面,需要支持面向更多语言和平台的解析,增
加该生成器的通用性和扩展性.
参 考 文 献
[1]
Stavrakas Y, Gergatsoulis M, Rondogiannis P.
Multidimensional XML[c]//Proe of the 3rd Int Workshop
Distributed Communities on the Web(DCW’2000).Berlin:
Springer,2000:100—109
[2]
MacVittie L A.XAML in a Nutshell[M].Sebastopol:
O’Reilly Media,2006:3-15
[3]
Bullard V,Smith K T,Daconta M C.Essentia1 XUL
Programming[M].New York:Wiley,2001:11—19
[4]
Radha V,Ramakrishna S,Kumar N P.Generic XML
schema definition(XSD)to GUI generator[G]//LNCS
3816.Berlin:Springer,2005:290—296
E5]
Joseph F,San K C.Translating relational schema into XML
Schema definition with data semantic preservation and XSD
graph[J].Information and Software Technology,2005,47
(7):437-462
[6]
I n Teng,Yan Ping.Mapping DTDs to relational schemas
计算机研究与发展2012,49(4)
with semantic constraints[J].Information and Software
Technology,2006,48(4):245—252
[7]
Mori G,Paterno F,Santoro C.Design and development of
multidevice user interfaces through multiple logical
descriptions[J].Software Engineering,2004,30(8):507—
52O
[8]
Peng Shixin,Dong Li. Schema driven user interface
generation[J].Application Research of Computers,2006,
26(3):231-233(in Chinese)
(彭世新,董丽.一种Schema驱动生成用户界面的技术和实
现[J].计算机应用研究,2006,26(3):23卜233)
[9]Walmsley P.Definitive XML Schema[M].London:
Prentice Hall PTR,2001
([美]Walmsley P.XML模式权威教程[M].陈维军,乔安
平,英宇译.北京:清华大学出版社,2003:152-170)
Jiang Jinsong,born in 1980.MSc and
Iecturer. His current research interests
include software engineering and network
●.
administration.
Yan Kiln,born in 1 984.MSe and assi
●
stant
_
engineer.His current research interests
include software engineering and parallel
computing(yk1024@sohu.tom).
Ni Guiqiang,born in 1966.Professor and
PhD supervisor.His current research
interests include software engineering,
network administration,and distributed
computing(ngql966@163.corn).
He Ming, born in 1978. Associate
professor,Post—doctoral researcher,and
MSc supervisor.His current research
interests include simulation modeling and
information security(blue
_
horse@126.corn).
Yang Bo,born in 1984.Bachelor.His
curtent research interests include software
engineering and network administration
(ybstrong@sina.com).
版权声明:本文标题:基于XML和XSD的通用GUI生成器研究 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1710022192a554036.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论