admin 管理员组文章数量: 1184232
2024年4月20日发(作者:centerstreet的中文)
第30卷第4期
2013年4月
计算机应用与软件
Computer Applications and Software
Vol_30 No.4
Apr.2013
一
个XML文档自动生成器模型设计
孙煜飞马良荔吴清怡
(海军工程大学计算机工程系 湖北武汉430033)
摘 要XML作为交互性电子技术手册创作中技术数据的描述方法,是实现技术信息共享和交换的关键技术。基于相应的
XML.Schema约束,设计一个选择数据模块类别、提交数据文档,输出相应的XML文档的自动生成器模型。有效解决了XML编辑过
程中的繁琐录入过程,为开发类似的数据模块编辑器提供思路。
关键词 交互性电子技术手册XML数据模块XML—Schema 自动生成器 、
中图分类号TP39 文献标识码A DOI:10.3969/j.issn.1000—386x.2013.04.057
DESIGN oF A MoDEL oF XML DoCUMENTS’AUToMATIC GENERAToR
Sun Yufei Ma Liangli Wu Qingyi
(Department ofComputer Engineering,Naval 西e Engienering,Wuhan 430033,Hubei,China)
Abstract As the description way of technical data in compiling Interactive Electronic Technical Manuals(IETM),XML is the key
technology to realise the sharing and exchange of technical information.Based on corresponding XML—Schema constraints,we design an
automatic generator model,which can select data module category and submit data files,as well as export relevant XML documents.This
generator effectively solves the complicated inputting process in XML documents editing,and provides an idea for the development of similar
data module editors.
Keywords IETM XML Data module XML—Schema Automatic generator
合IETM标准的XML文档,能够显著提高工作效率,推进军队
0 引 言
装备IETM建设。
交互性电子技术手册IETM(Interactive Electronic Technical
1相关理论基础
Manua1)作为欧美等国推行持续采办和全寿命周期支持CALS
(Continuous Acquisition and Life—cycle Support)战略的核心技术,
IETM标准中规定,装备的所有技术信息均以数据模块的形
一
直以来都是装备保障信息化研究与应用的热点之一 。
式组织,并采用严格按照模式定义的XML进行描述。数据模块
IETM的核心问题就是实现技术信息的共享和交换问题 。可
通常分为很多种类别,包括描述类信息、故障类信息、零件类信
扩展标记语言XML是万维网协会(W3C) 推出的新一代数据
息等。
交换的标准。它具有可扩展性、交互性好、高结构化、内容与显
针对不同类别的数据模块,都给出了相应的XML模式
示分离等优点 J。美军、欧盟以及国内各IETM标准也都推荐 (DTD或XML.Schema),用以对XML文档在结构、语意等方面
使用XML来描述IETM技术数据。
进行规范和约束。由于XML—Schema相对DTD而言,具有以下
目前,随着我军信息化建设的不断深入,各级、各类管理和
优点 :
保障机构为提高装备维修保障信息化水平,逐步将装备IETM
(1)丰富的数据类型、支持用户自定义的数据类型;
作为信息化建设的重要方向。但是,要形成规范、统一的IETM (2)结构化,代码重用高;
还存在着如下问题:
(3)XML—Schema本身就是一个特殊的XML文档,可以利
(1)装备研发、使用、维护保障过程中产生的信息数据大多
用DOM对它进行解析。
以word、excel等文件形式存储;
因此,本系统选用XML-Schema来定义XML文档的结构。
(2)各级、各类管理和保障机构现有的装备IETM技术数
利用DOM解析技术对XML—Schema进行解析,分析其内部结
据格式各异,大多以HTML、关系数据库等形式存在;
构,得出其元素和层次关系,由此制作出符合该XML.Schema定
(3)装备技术数据分布在各级、各类管理和保障机构,地域
义的XML文档。DOM将XML文档的逻辑结构看成树形结构,
广、时间跨度大,无法保证数据统一。
针对上述问题,设计一个IETM系统与外部系统信息交换
收稿日期:2012一O5—16。孙煜飞,硕士生,主研领域:IETM。马良
的接口,导人不同文件格式的技术数据文档,自动生成相应的符
荔,博士。吴清怡,硕士生。
202 计算机应用与软件
step4;
2013生
随机访问DOM树,进行读写操作 。在DOM树中用节点来表
示XML文档中的数据内容,节点包含节点名称、节点类型、节点
值等信息。一棵典型的XML.Schema的DOM树如图1所示。
如果xmlelement.HasChildNodes,转step5。
Step3判断xmlelement是否有ref属性。若有,转step6;若
没有,转step7。
Step4判断xmlelement是否有ref属性。若有,转ste06;若
没有,转step8。
Step5获取其子节点集合,依次将每个子节点赋值给xm
1element,回stepl。
Step6调用XPath,找到其引用的全局声明,将其赋值给
xmlelement,回stepl。
图1 XML—Schema的DOM树结构图
利用XPath[ 可以快速查询和定位XML元素,提供一个路
径表达式,检索出所查询的XML文档片段,从而对该XML文档
片段进行读写操作。
2算法设计与验证
系统的总体设计思路分为以下四个步骤:
(1)针对标准中罗列的不同类别的数据模块,事先准备好
相应的XML-Schema。
(2)对于用户提交的文档,建立相应连接,将查询得到的数
据保存至数据集中。
(3)获取用户选择的需要创建的数据模块类别,对相应的
XML・Schema进行DOM解析,找出所有的与数据有关的节点和
属性,以及它们之间的层次结构,对于其中的叶子节点和属性节
点,加入步骤(2)中的数据。
(4)对结果XML文档进行验证,通过XML.Schema验证的
XML文档显示给用户。
分析不同类别数据模块的XML—Schema,可以得出以下结
论:XML—Schema文档中与数据有关的节点只包含在根元素XS:
schema(XS为命名空间前缀)中。根元素XS:schema下含有若干
个子节点,第一个子节点(顺序无关性)应为该XML—Schema所
描述的主体。其他子节点为全局声明,主体中包含了对它们的
引用(ref)。
算法schemaToxml有关的参数与函数定义。
schemaFirstChild:XML—Schema文档描述的主体,根元素XS:
schema的第一个子节点。该节点不被其他任何节点引用。
xmlRoot:与XML—Schema文档匹配的XML文档的根元素,
其名称应为schemaFirstChild的name属性值。
parent:当前活跃节点,任何新建的元素节点作为它的子节
点,任何新建的属性节点作为它的属性。
checknode(xmlelement,parent):递归函数,对参数节点xm—
lelement进行相关处理,过程中新建的节点或元素添加为parent
的子节点或属性。xmlelement初始值为schemaFirstChild.First—
Child,parent初始值为xmlRoot。
具体处理过程如下:
输入:XML—Schema和数据文档。
输出:XML。
Stepl开始调用递归函数checknode(xmlelement,parent)。
Step2获取xmlelement节点名称xmlelement.name。
如果xmlelement.name为XS:element或XS:group,转step3;
如果xmlelement.name为XS:attribute或XS:attributegroup,转
Step7获取xmlelement的name属性,再判断xmle!ement
是否为叶子节点。若是,转step9;若不是,转stepl0。
Step8获取xmlelement的name属性,再判断xmlelement
是否为叶子节点。若是,转stepl1;若不是,转stepl2。
Step9创建以该name属性值命名的元素节点newele.
ment,添加为parent的子节点,节点值从数据集中获取。
SteplO创建以该name属性值命名的元素节点newele—
ment,添加为parent的子节点,将newelement赋值为parent。
Stepll创建以该name属性值命名的属性节点newat
tribute,添加为parent的属性,属性值从数据集中获取。
Stepl2创建以该name属性值命名的属性节点newat—
tribute,添加为parent的属性。
综上所述,算法流程如图2所示(只判断是否为XS:element
的情况,其他情况类似)。
由
图2算法流程图
为了验证算法的可行性,现以零件类信息为例,为了简化,
取某段弹簧的XML.Schema如下。
<?xml version=”1.0”encoding= gb2312”?>
<xs:schema xmlns:XS= http://www.w3.org/2001/XMLSchema”element—
FormDefauh:”qualiifed attributeFormDefauh= unqualiifed”>
<xs:element name=”零件 >
<xs:complexType>
<xs:sequence>
<xs:element name=”弹簧 maxOccurs=”unbounded >
<XS:complexType>
<XS:sequence>
<xs:element ref=”弹簧尺寸 ./>
<xs:element name=”重量”type=”XS:stirng"/>
<xs:element name= 数量 type=”XS:stirng r/>
(xs:element name= 檄料|type: xs:stirng minOc—
Ctlrs:“Q ,>
第4期 孙煜飞等:一个XML文档自动生成器模型设计 203
一 一 一 一
系统。假设用户提交文件形式为excel,则给出如表1示例。
表1格式规范示例
l 弹簧尺寸 ll 数量 一 安装部位
l 径 l 外径 l妊度l 玉正 - 名称 J 符号
o2 5 I 36毫米 l 4o毫米 l 1 24 I 2。克 I m目1 02
024 l 37毫米 l 42毫米 I 1 22 l 25克 钢 l 车身 卜、o3
系统的关键是对XML—Schema解析,提取出文档结构,加入
数据集中的数据,生成XML的过程。如图3所示。
图3示例分析
这样,最终将excel表转换为符合XML.Schema定义的XML
文档。
<?xml version=”1.0”encoding ”gb2312”?>
<零件>
<弹簧ID= '02—5”>
<弹簧尺寸>
<内径>36毫米</内径>
<外径>40毫米</外径>
<长度>124</长度>
</弹簧尺寸>
<重量>20克</重量>
<数量>2</数量>
<安装部位>
<名称>炮闩</名称>
<符号>02</符号>
</安装部位>
</弹簧>
<弹簧ID= '02—6 >
<弹簧尺寸>
~~~
<内径>37毫米</内径>
<外径>42毫米</外径>
一 一
<长度>122</长度>
</弹簧尺寸>
<重量>25克</重量>
<数量>5</数量>
<材料>钢</材料>
<安装部位>
<名称>车身</名称>
<符号>03</符号>
</安装部位>
</弹簧>
</零件>
3系统设计与实现
前文已经提到,本文旨在建立一个IETM系统与外部系统
信息交换的接口,接收来自外部系统的各种格式的技术文档,统
一
输出为符合IETM标准的XML技术文档。其主要模块如图4
所示。
外部文件
l l l l 用户
图4系统模块设计
获取数据集模块是系统的入口,负责从外部系统接收数据
文件。首先,获取文档的后缀名,判断文档的类型。针对不同格
式的数据文档,实例化相应的数据连接字符串,调用数据集填充
函数,获取数据集datatable,目前只实现了excel和关系数据库
的转换。数据转换模块是系统的核心,负责对XML—Schema的
解析和数据的录人工作,生成相应的XML文档。数据验证模块
负责对生成的XML文档进行有效性验证,验证其是否与XML—
Schema匹配,并给出错误提示和修改意见等。
该系统的主要特点如下:
(1)用户透明性。用户无需对XML.Schema标签定义以及
各种约束有深刻的认识,系统会根据用户提交的技术文档和相
应的数据模块类别,自动生成XML文档。整个工作过程对于用
户端是透明的。
(2)可扩展性。转换算法对于所有数据模块的XML.Sche—
ma都是通用的。因此,对于新格式的文件,只需制定新的数据
连接,获取相应的数据集,从而进行XML转换。
(3)验证功能。生成的XML文档不一定符合XML.Schema
格式要求,未通过验证模块验证的XML文档,系统会给出错误
原因、修改意见等。最终将符合标准的XML文档显示给用户。
(下转第278页)
版权声明:本文标题:一个XML文档自动生成器模型设计 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713560550a640786.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论