web前端

位置:IT落伍者 >> web前端 >> 浏览文章

带你认识Eclipse XML编辑器


发布日期:2022年03月09日
 
带你认识Eclipse XML编辑器

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

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

如果看不到 Plugin Development 选项则表示 Eclipse 平台 Runtime Binary 没有 Plugin 开发环境请到 下载页面下载 Eclipse 平台 Plugin SDK

单击 Next给项目命名(如 orgmyeclipsexmleditor)单击 Next然后接受屏幕 Plugin Project Structure 上的缺省值接下来选择 Create a plugin project using a code generation 向导然后选择 Plugin with an editor 选项向导会自动生成该 XML 编辑器的源代码

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

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

用 XMLBuddy 编写 XML

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

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

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

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

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

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

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

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

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

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

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

另一个重要的 XMLBuddy 功能是支持不同的字符编码这迟早会有用例如当需要使用以不同语言(如波兰语和英语)编写的 XML 可移植文档时这不是一项简单的任务因为编码波兰语字符主要有三种方法:其一是由 Windows x/ 使用的 Windows Latin(CP); 其二是在因特网中使用以及由 UNIX 与类 UNIX 系统(如 Linux)使用的 ISO Latin(ISO); 其三是 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 文档结构和限制其内容的工具其中包括那些利用 XML Namespace 的工具模式语言自身用 XML 表示并使用名称空间它在很大程度上重构了 XML DTD 具有的能力并在一定程度上扩展了这些能力请记住 DTD 有许多局限:

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

◆不支持名称空间

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

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

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

◆ 没有嵌入式结构化自我文档编制(selfdocumentation)(只有 可用)

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

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

XML Schema 也有不足:

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

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

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

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

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

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

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

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

其它 Eclipse XML 插件

其它有用的 XML 插件有 Transclipse 和 Eclipse TidyTransclipse 是 XML 转换插件它用任何符合 JAXP 的 XSL 样式表处理器通过 XSLT 处理 XML 文档并使用 Apache 格式化对象处理器(Formatting Objects ProcessorFOP)处理 XSLFO 文档Transclipse 是 jh(Java 至 HTMLJava to HTML)插件的一部分jh 将 Java 源代码转换成带语法突出显示的 HTMLXHTML 和 LaTeXEclipse Tidy 项目提供了格式化和打印 XML/HTML 文档的插件

上一篇:XML开发入门基础:使用CSS显示XML

下一篇:根据数据库生成xml二法