用XML 和JSP 发布机械工程数据

- 首页 >> Web


  摘 要 主要介绍了XML的基本概念及其比HTML 具有的优势, 着重论述了XML结合JSP在机械工程数据发布方面的应用并给出了实例.最后展望了XML 结合JSP 在机械工程应用方面的广阔前景.

1  引言

随着Internet 的迅速发展, 电子商务等深层次的应用迅速崛起, 人们对Internet 上的信息进

行深层次处理的要求日益提高.现有的HTML技术不具备大规模Web 应用所需的可扩展性、

结构化和数据验证等特性, 它的局限性开始越来越明显地显露出来.因此, 一种新的标记语言XML 应运而生.XML(eXtensibleMarkup Language)意是“可扩展标记语言” .它不像HTML 那样有固定的格式, 使SGML Web 上应用自如.XML 是一种元标记语言, 用户可以定义自己的标记.虽然这些标记必须根据某些通用的原理来创建, 但是在标记的意义上却具有相当的灵活性.例如, 假如用户想要描述单列向心球轴承的型号、零件名称、额定动负荷比、承受轴向负荷能力、限制轴向位移能力和极限转速, 就必须创建用于每项的标记.新创建的标记可在文档类型定义(DTD :Document TypeDefinition)中加以描述.有了XML 的自定义标记, 就意味着不必等待浏览器开发商来满足用户的需要了.用户可以创建自己需要的标记,当需要时, 告诉浏览器如何显示这些标记就可以(对于XML 文档, 可以使用CSS XSL 来显示).JSP(Java Server Pages , Java 服务器端动态页面技术)技术结合静态的标记语言元素和Java对象, 动态地生成数据内容来提供文档说明和服务.JSP JAVA SERVLET 的形式执行.JSP 网页可以包含任何类型的文本数据, 所以JSP 可以直接生成含有XML 标记的文档.而且, JSP 可以利用强大的JAVA 平台来解析、转换XML 信息和文档, 由于JSP JAVA 环境的一部分, 所以它理所当然就可以使用JAVA API 对象来处理XML 数据.XML 在许多方面增强了Java(JSP 可通过自定义标签库使用以DTD 定义的XML 标记), JSP 是天生的一对.另外,XML 对于大型和复杂的文档是理想的, 因为它的数据是结构化的.这不仅使用户可以指定一个定义了文档中的元素的词汇表, 而且还可以指定元素之间的关系.由于机械工程数据也大多是结构化的, 如一台设备有几个部件组成, 每个部件又由几个零件组成, 就是单个零件信息也都是结构化的.因此, XML 来描述机械工程数据是非常理想的.而在数据的检索方面, 由于JSP 是以JAVASERVLET 的形式执行, 一经调用以后, 只要不关闭应用程序, 它就驻留在内存中, 再有同样的请求时就立即执行, 因此JSP 的运行速度比起其他服务器端页面技术来说都快得多.基于XML JSP 结合具有上述优点, 因此

用它们来发布机械工程数据.

2 JSP XML 的集成

2 .1 XML 文档

下面以检索单列向心球轴承为例,说明如何定义XML 文档:

<? xml version =“1 .0” encoding=“gb2312” standalone =“no” ? >

<! DOCTYPE entities SYSTEM “entity .dtd”>

<! —下面是XML 文档的内容— >

<entities >

<零件><零件名>单列向心球轴承</零件名>

<零件参数><参数名>型号</参数名> <参数值>0 </参数值>

</零件参数>

     ……

<零件参数>

<参数名>其他功能参数</参数名>

<参数值>在转速较高又不宜采用推力球轴承时, 可用来承受纯轴向负荷

</参数值>

</零件参数>

</零件>

</entities >

  每个结构完整的XML 文档都是树型结构.XML 树型结构的节点就是元素及元素的内容.XML 语言不同于HTML 或格式化程序, 它可以定义自己的标记.虽然这些标记必须根据某些通用的原理来创建, 但是在标记的意义上却具有相当的灵活性.例如, 在描述单列向心球轴承的XML 文档中, 就为它的参数统一定义了一个元素名为“零件参数”的标记, 这个元素本身又有两个子元素参数名和参数值, 它们在一个零件元素中可以出现任意多次, 因此不管一个零件有多少个参数都可以用这种树型结构来描述.有效的XML 文档, 其结构、数据类型和数据关联等必须满足DTD 的要求.例如在上面的XML 文档中, 就是通过语法:<! DOCTYPE entitiesSYSTEM entity .dtd >来导入检验文档有效性的DTD.

2 .2 JSP XML 的集成

下面的代码是一个XML 语法形式的JSP程序框架.JSP 代码进行逻辑处理, XML JSP代码生成的机械工程数据进行描述和显示, 检索的机械工程数据存放在数据库中.本节就JSP XML 如何结合进行论述.

<jsp :root xmlns :jsp =“jspxml .dtd”>

<jsp :directive .page import =java .io .*”/ >

 …

<jsp :directive .page import =dbbean .*”/ >

<jsp :directive .page contentType=“text/xml;charset =gb2312”/ >

<jsp :directive .page import =org .apache .xerces .parsers .*”/ >

<jsp :useBean id =“db” class =“dbbean.comDbBean”scope =“session”/ >

<jsp :text ><! [ CDATA[ <? xmlversion =“1 .0” encoding =“gb2312” standalone =“no” ? >] ] >

</jsp :text >

<jsp :text ><! [ CDATA[ <? xml-stylesheet type =“text/xsl” href =“entity .xsl” ? >] ] >

</jsp :text >

<jsp :text ><! [ CDATA[ <!DOCTYPE entities SYSTEM “entity .dtd” >] ] >

</jsp :text >

<jsp :text ><! [ CDATA[<entities>] ] >

</jsp :text >

<jsp :declaration >

String rname =“” ;

……

</jsp :declaration >

<jsp :scriptlet >

rname = new String(request.getParameter(“name”).getBytes(“ISO8859 -1”));

……

</jsp :scriptlet >

</jsp :root >

XML 语法形式的JSP 页面是一个名称空间确定的XML 文档.名称空间用来标志核心语法, 也用来描述页面中使用的标记库.JSP文档用jsp :root 作为自身的根元素.XML , 顶层元素都具有xmlns(XML名称空间)属性.:

<jsp :root xmlns :jsp =“jspxml .dtd”>

   代码部分

</jsp :root >

在上面的例示中, 省略号“ ......的地方表示省略了相同的语法.而其他的如jsp:directive .

page jsp :useBean jsp :declaration jsp :scriptlet 等都是XML 语法形式的JSP 指令或元素.值得注意的是jsp :text 元素.如果导入的名称空间不是“jspxml.dtd , 则其形式可能为jsp :CDATA .jsp :text 元素用来封装不需要JSP 程序处理的数据.:

<jsp :text ><! [ CDATA[ <? xmlversion =“1 .0” encoding =“gb2312” standalone =“no” ? >] ] >

</jsp :text >

......

<jsp :text ><! [ CDATA[<entities>] ] >

</jsp :text >

就是原样输出XML 文档的头部, 告诉XML 处理程序生成的XML 文档遵从的XML 规范的版本, 显示它的XSL , 检验其有效性的DTD 和文档的根元素.另外一个值得注意的是XML 预定义的5个通用实体引用.5 个实体引用出现在XML文档中用来代替一些特殊的字符, 这些字符如果不用引用方式就会被解释为标记.5 个实体引用为: &amp ; , &lt ; , &gt ; , &quot ; ,&apos ; .它们分别替代以下5 XML 文档中

的特殊字符: & , < , > , “”” , ` .如果在XML 语法形式的JSP 页面中输出这5 个特殊元素, 就需要处理以下两种情况:

(1)当这些特殊字符作为生成XML 文档

中的处理指令或者标记的一部分时, 就必须使用前面提到的文本元素jsp:text , :

<jsp:text ><! [ CDATA[ <? xml -stylesheet type =text/xsl href =entity .xsl ? >] ] >

</jsp:text >

(2)当这些特殊字符不是作为生成XML 文档中处理指令或者标记的一部分, 而是元素的内容时, 即可以使用文本元素jsp :text , 也可利用实体引用.:

<jsp :text ><! [ CDATA[<entities >] ] >

</jsp :text >, 也可以写成:out .print (&lt ;

entities&gt ;”);最后值得注意的问题是XML 语法形式的SP 页面的默认字符集为UTF -8(ISO -8859-1).即使使用了<jsp :directive .pagecontent-Type =text/xml;charset =gb2312/ >指定字符集为“gb2312 , 当输出JSP 页面中声明的中文字符时, 得到的却是乱码.而在没有XML 语法的JSP 页面中则不存在此问题, 所以必须进行内码转换.上面论述了JSP XML 结合最容易出错的地方, 其他的语法在http://java .sun .com/xml/上下载jspxml .dtd 进行分析.对于XML 文档的显示, 可以使用CSS 或者XSL.另外需要注意的问题:只有IE5 .5 以上版本才支持XML Schema , 如果所使用的IE 5 .0版本的话, 只能使用DTD 来对XML 文档进行有效性检验;IE5 .0 只支持下面的XSL 名称空间:xmlns:xsl =http ://www.w3 .org/TR/WD -xslxml :=www .w3 .org/TR/REC -html40 .

3 XML JSP 在机械工程方面的

应用前景XML 已为通用标准, 目前已经得到很好支持。在国外此项技术已经相当成熟, 但国内尚处研究阶段.同采用HTML 和其他动态页面技术(ASP)相比, 使用XML JSP 集合发布机械工程数据主要有以下优点:

(1)JSP 的平台无关性.

JSP 技术建立在“一次编写, 处处运行”Java 程序设计思想体系上, 避免了与单独的某

个平台或提供商紧密联系.(2)JSP标记和XML 都具有良好的可扩展性.XML 允许各个不同的行业根据自己独特的需要制定一套自己的标记, 同时, 它并不要求所有浏览器都能处理成千上万个标记, 同样也不要求一个标记语言能够适合各个行业各个领域的应用, 这种具体问题具体分析的方法有助于标记语言的发展.尽管JSP ASP 都使用标记和脚本的组合来建立动态页面, 然而对任何一个页面作者来说,JSP 技术使得开发者可使用XML 样式标记获得更多的管理而减少对脚本语言的依赖.有了JSP 的自定义标记, 开发者就可以从建立页面的复杂性中解脱出来, 而在页面作者熟悉的范围内扩展关键功能.

(3)数据内容与显示样式相分离.

XML , 待显示的数据和用来显示数据的样式单是分离的, XML 文档中存放的是纯数据,数据的显示方式存放在样式单CSS XSL .数据与表现形式相分离, 即有助于对同一数据采用多种表现形式, 也使XML 具有很好的自描述性,能够描述信息自身的含义甚至它们之间的关系,更重要的是使数据的维护更加容易.

(4)便于不同系统之间信息的传输.

由于XML 是非专有格式的并易于阅读和编写, 用户可以利用任何理解XML 的工具来处

理数据, 还可以为不同的目的使用不同的工具,例如可以一个程序用来查看, 一个程序用来编辑.XML 使用户不必因为数据已经用专有格式编写好了, 或是数据接收者只接受专有格式, 而限制在一个特定的程序上.

(5)JSP XML 都适合大型复杂的应用.

不仅可以使用JAVA 的倡导者SunMicrosystem 提供的JAVA API , 也可以使用任何其他软件提供商提供的JAVA API , 例如:可以到http ://www .apache .org/xml 上下载org .apache

.xerces 包以利用其中的DOM(DocumentObject Model , 文档对象模型)来解析XML 文档.

这就为企业提供了有力的支持.正如上面所示的单列向心球轴承一样, 使用XML 来发布和交换机械工程数据不仅具有通用性, 因为XML 文档的显示不需要专门的软件商支持, 并且易于阅读, 就是不同领域的的人也非常容易读懂其所描述的信息;再者, XML文档易于维护, 由于XML 的数据描述与显示是分离的, 这就使数据的维护更易进行.

4  结束语

21 世纪是信息的时代, 以电子、信息、自动化、人工智能和新材料为核心的新一代工程技术给人类描绘了一幅未来信息社会的壮丽蓝图.现代机械工程领域的设计、制造等都跟网络发生了密切的联系.随着XML JSP 技术的推广, 在机械工程领域必将得到广泛的应用.


站长地图