分享
 
 
 

通过 Eclipse 发挥 XML 的威力 (2/2)

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

验证 XML 代码并对其字符进行编码

使用 XML 文档的主要困难在于检查其内部有效性(文档逻辑的内聚性)。需要执行语法检查以了解是否所有的标记和定义都是正确的并且被正确地调用。只有语法检查通过之后,才能确认 XML 文档格式良好并可以解析文档的逻辑结构。XML 文档由 XML 解析器验证。

所有以下描述的 Eclipse XML 插件都能够执行 XML 验证,指出代码中的警告和错误。如果试图打开一个 XML 文档,XML 解析器可能会生成一个错误。可以检索精确的错误代码、错误文本甚至导致错误的那一行。可以在需要时验证 XML 文档,或在保存文档时自动验证。可以将验证错误任务作为一组进行清除。XMLBuddy 插件使用系统范围的 XML 解析器,不过,请记住 Eclipse 平台带有最好的 XML 解析器之一:Xerces(XML4J)。请参阅参考资料以获得下载信息。但并不限于 Xerces 或系统解析器,因为可使用 Run => External Tools => Configure 指向其它 XML 解析器。

另一个重要的 XMLBuddy 功能是支持不同的字符编码。这迟早会有用,例如,当需要使用以不同语言(如波兰语和英语)编写的 XML 可移植文档时。这不是一项简单的任务,因为编码波兰语字符主要有三种方法:其一是由 Windows 9x/2000 使用的 Windows Latin-2(CP1250);其二是在因特网中使用以及由 UNIX 与类 UNIX 系统(如 Linux)使用的 ISO Latin-2(ISO8859-2);其三是 MacOS 和 MacOS X,它们对波兰语使用不同的字符编码标准。

通常,XMLBuddy 为字符编码提供两种解决方案:根据文件内容自动检测 XML 文档编码,或将其设置为缺省的编码。缺省的编码可以在工作空间范围,也可特定于资源。要打开 XML 编码首选项,可选择 Window => Preferences => XML => Encoding。

这些针对字符编码的解决方案的问题在于:对 XML 而言,一种编码(每个工作台一种)不能适应全部情况。XML 文档可能来自世界各地任意数量的来源。在许多情况下,用户不能控制其他人对文档的编码,而且可能没有办法按编码界限划分工作。同一编码首选项将很难同时适合(比方说) Java 源文件和 XML 文档。当一组全局首选项不能满足需要时,XMLBuddy 为每个文档提供属性。指定项目中每个文件的属性是一项繁重的任务。但是,当要处理的某一文档使用了不常用的编码(不能自动检测该编码,并且没有在文档中指定)时,则属性是唯一的解决方案。要打开特定文件的编码属性,可在文件上单击鼠标右键并选择 Properties = > XML => Encoding。图 4 显示了如何设置全局字符编码。

图 4. 在 Eclipse 中设置 XML 文档的全局字符编码

DTD vs. XML Schema

XML Schema 指定 XML Schema 定义语言,该语言提供了描述 XML 1.0 文档结构和限制其内容的工具,其中包括那些利用 XML Namespace 的工具。模式语言自身用 XML 1.0 表示并使用名称空间,它在很大程度上重构了 XML 1.0 DTD 具有的能力,并在一定程度上扩展了这些能力。请记住 DTD 有许多局限:

对于复杂需求通常很难使用内容模型。

不支持名称空间。

对模块化和重用的支持非常有限。

不支持对声明扩展或继承。

编写、维护和读取大型 DTD 以及定义系列相关模式都很困难。

没有嵌入式、结构化自我文档编制(self-documentation)(只有 <!-- comments --> 可用)。

内容和属性声明不能依靠属性或元素上下文(许多 XML 语言用到这一点,但它们的 DTD 必须“允许过多东西”)。

只能使用一个简单的标识属性机制(换句话说,没有唯一性作用域)。

但 XML Schema 也有不足:

XML Schema 比较复杂;只需要偶尔使用 XML 的程序员可能觉得它难得有些过头。

XML Schema 不能请求特定的根元素(因此,即使验证最简单的文档也要求额外的信息)。

当描述混合内容时,根本无法约束字符数据。

内容和属性声明不能依靠属性或元素上下文(这也是 DTD 的主要问题)。

不能离开声明指定缺省值。

元素缺省值只能是字符数据(不包含标记)。

XMLBuddy 对 DTD 和 Schema 都提供了足够的支持,但如果您需要真正优秀的 XML Schema 支持,应该使用 XSD-XML Infoset Browser for Java 插件(请参阅参考资料以获得链接)。它是按照 W3C XML Schema 规范中描述的那样实现 XML Schema Infoset Model 的 Java 参考库。它对于任何检查、创建或修改 XML Schema 的代码都非常有用。XML Infoset Browser 提供操作 XML Schema 组件的 API,以及操作以一系列 XML 文档的 XML Schema 的(DOM 可访问的)表示的 API。XML Infoset 基本上允许两个或两个以上的程序员同时使用 Java 和 XML,因此提供了识别和创建基于 XML 的模式的标准方法。

图 5. 安装 IBM XML SQC 之后 XML Schema 验证变得可用

XML Infoset Browser 的必要补充是 IBM XML Schema Quality Checker,简称 SQC(请参阅图 5参考资料以获得链接)。SQC 是 Java 程序,它获取以 W3C XML 模式语言编写的 XML Schema 作为输入,然后诊断 Schema 语言不正确的使用。SQC 读取符合最新 XML Schema 规范的 Schema,并尝试确定它们在应用于 Schema 的各种约束下是否有效。当 SQC 遇到不符合规范的元素时,它给出诊断消息,其中可能包含关于如何修正问题的建议。对于由许多 Schema 文档(这些文档间通过 <include>、<import> 或 <redefine> 元素信息项连接)组成的 Schema,执行完整的 Schema 检查。SQC 还可以以批处理方式运行,通过一次运行检查多个 XML 模式。

其它 Eclipse XML 插件

其它有用的 XML 插件有 Transclipse 和 Eclipse Tidy(请参阅参考资料以获得链接)。Transclipse 是 XML 转换插件。它用任何符合 JAXP 的 XSL 样式表处理器通过 XSLT 处理 XML 文档,并使用 Apache 格式化对象处理器(Formatting Objects Processor,FOP)处理 XSL-FO 文档。Transclipse 是 j2h(Java 至 HTML,Java to HTML)插件的一部分,j2h 将 Java 源代码转换成带语法突出显示的 HTML、XHTML 和 LaTeX。Eclipse Tidy 项目提供了格式化和打印 XML/HTML 文档的插件。请访问已分类的 Eclipse 插件注册表以获得更多信息(请参阅参考资料)。

参考资料

加入 Eclipse 平台社区并请通过 eclipse.org 下载该平台。Eclipse 平台源代码在 Common Public License 下授权使用。在 eclipse.org,还可以找到有关 Eclipse 项目的术语词汇表和描述,以及技术文章和新闻组。Eclipse 平台白皮书详细介绍 Eclipse 的主要组件和功能。

在 Bocaloco Software 的 XMLBuddy 网站下载 XMLBuddy 并了解有关它的更多信息。

eclipse project downloads 页面下载 Eclipse 平台 Plug-in SDK。

有关 Apache XML 项目(包括 Xerces 解析器)的信息,请参阅 Apache.org

在 eclipse.org 下载 XSD-XML Infoset Browser for Java

在 IBM 的 alphaWorks 站点下载 XML Schema Quality Checker

有关 Eclipse 平台及其工作原理的介绍性文章,请参阅 Greg Adams 和 Marc Erickson 撰写的 developerWorks 文章“Working the Eclipse Platform”。

要开始使用 Eclipse 平台开发应用程序,请参阅 David Gallardo 撰写的 developerWorks 文章“Getting started with the Eclipse Platform”。

如果对创建自己的 Eclipse 插件感兴趣,请参阅 David Gallardo 撰写的 developerWorks 文章“开发 Eclipse 插件”。

要了解一位开发人员如何集成 XM(一个基于 XML 和 XSLT 的简单内容管理和发布解决方案)和 Eclipse,请参阅 Benoit Marchal 撰写的 developerWorks 文章“Integrating XM and Eclipse”。

请参阅 W3C 联盟网站上有用的丰富 XML 参考资源。

在 SourceForge.net 下载 Transclipse 插件

同样在 SourceForge.net 获取 Eclipse Tidy 项目

了解 j2h(Java 至 HTML,Java to HTML)插件

浏览 Eclipse 插件注册表

在 developerWorks 上找到更多适合 Eclipse 用户XML 开发人员的参考资料。

关于作者

Pawel Leszek 是 Studio B 的作者,他是独立软件顾问和作家,擅长 Linux/Win/Mac OS 系统体系结构和管理。他对许多操作系统、编程语言和网络协议(特别是 Lotus Domino 和 DB2)有丰富经验。Pawel 还是 LinuxWorld 系列文章的作者,并且是波兰语版 PC World 的 Linux 专栏作家。Pawel 和他的妻子以及可爱的小女儿居住在华沙。欢迎您提出问题和意见;可通过 pawel.leszek@ipgate.pl 与 Pawel 联系。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有