分享
 
 
 

分析如何用Eclipse进行XML开发

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

已经开发出了许多 XML 插件,新的插件也不断得以创建。本文主要讨论名为 XMLBuddy 的插件,因为它丰富的功能集合包含 XML 文档开发所需的大多数功能。我们也会提到其它插件,这些插件能为特定任务提供更丰富的用户选项集。本文将使您熟悉基本的 XML 编辑功能,但要记住:Eclipse 是一个可以让无数工具和功能为您所用的动态框架集。

Eclipse XML 编辑器

Eclipse 已经包括一个非常简单的 XML 编辑器的源代码,这个编辑器只提供 XML 语法的突出显示。它继承 org.eclipse.ui.editors 包中包括的类,这个包为 Eclipse 平台提供一个标准文本编辑器和基于文件的文档提供程序。这个简单的 XML 编辑器起着代码示例的作用,您可以把它作为自己的 Eclipse XML 插件的基础。它的源代码只能通过 Eclipse 项目向导生成,您需要按下面所描述的自己编译它。

要构建这个基本 XML 编辑器,转至菜单 File = New,然后选择 Project。在项目向导中,选择 Plug-in Development = Plug-in Project。

如果看不到 Plug-in Development 选项,则表示 Eclipse 平台 Runtime Binary 没有 Plug-in 开发环境。请到 eclipse.org 下载页面下载 Eclipse 平台 Plug-in SDK。

单击 Next。给项目命名(如 org.my.eclipse.xmleditor),单击 Next,然后接受屏幕 Plug-in Project Structure 上的缺省值。接下来选择 Create a plug-in project using a code generation 向导,然后选择 Plug-in with an editor 选项。向导会自动生成该 XML 编辑器的源代码。

但仍需编译它。单击 Next,然后在下一屏幕 Simple Plug-in Content 上单击 Finish 选项;转至 Project 菜单并选择 Rebuild All 来构建该项目。

接下来需要使用 File = Export 菜单创建 editor.jar 文件。请退出 Eclipse,然后复制整个 org.my.eclipse.xmleditor plugin 目录。当您再次运行 Eclipse 时,可将一个 XML 文件添加到您的项目中。请记住这个样本 XML 编辑器未提供任何一种验证或语法检查。

用 XMLBuddy 编写 XML

最受欢迎且最高级的 Eclipse XML 编辑器插件是由 Bocaloco Software 开发的 XMLBuddy。XMLBuddy 是免费插件,它为 Eclipse 增添了 XML 编辑能力,其中包括对用户可配置的语法着色、DTD 驱动的代码辅助、验证以及同步的提纲视图。XML Buddy 还为 Workspace 添加 XML 透视图,为 XML 文档和 DTD 添加新的项目模板。您可以象安装任何其它 Eclipse 插件那样安装 XMLBuddy:只需将插件压缩文件解压缩至主 Eclipse 安装目录下的 \eclipse\plugins 子目录即可。记住要重新启动 Eclipse。

XML 是元标记语言。XML 元素由起始标记、结束标记和二者之间的数据组成,因此有了语法突出显示还需要好的编辑功能。XMLBuddy(目前是版本 0.2)用以下 XML 编辑功能扩展 Eclipse:

● 格式化。可以通过选择全部或部分代码对整个 XML 文档或部分文档自动进行格式化。

● 高级语法着色。可通过 Window = Preferences = XML = Colors 菜单配置 XML 代码着色。着色可用于普通 XML 文档、DTD(内部或外部子集)和 JSP 文件。

● XML 代码辅助。根据文档的 DTD,可为元素或其它标记名称、属性名称及属性值提供辅助。

● 扩展字符编码支持。XMLBuddy 根据 XML 1.0 规范自动检测文档编码,它接受

● 提纲(Outline)视图。提纲视图窗口显示文档中元素的结构。缺省情况下,提纲与编辑动态同步。这能使您快速浏览文档的逻辑。

● DTD 生成。可以动态地从文档的内容生成 DTD。XMLBuddy 在本地高速缓存基于因特网的 DTD,因此不管要使用 DTD 和相关的文档多少次,只需下载它们一次。

验证 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。

DTD vs. XML Schema

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

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

□ 不支持名称空间。

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

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

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

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

□ 内容和属性声明不能依靠属性或元素上下文(许多 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 的模式的标准方法。

XML Infoset Browser 的必要补充是 IBM XML Schema Quality Checker,简称 SQC。SQC 是 Java 程序,它获取以 W3C XML 模式语言编写的 XML Schema 作为输入,然后诊断 Schema 语言不正确的使用。SQC 读取符合最新 XML Schema 规范的 Schema,并尝试确定它们在应用于 Schema 的各种约束下是否有效。当 SQC 遇到不符合规范的元素时,它给出诊断消息,其中可能包含关于如何修正问题的建议。对于由许多 Schema 文档(这些文档间通过 、 或 元素信息项连接)组成的 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 文档的插件。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有