Eclipse: 指定XML的DTD定义

在用Eclipse进行与XML相关的开发工作时,Eclipse会根据XML文件头部的DTD定义来自动下载DTD文档。比如,在Struts2项目开发中,用于表单验证的validation XML文件头部是这样的:

<!DOCTYPE validators PUBLIC  
    "-//Apache Struts//XWork Validator 1.0.3//EN" 
    "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

因此,在用Eclipse运行项目后,当该XML文件发挥作用时,Eclipse会试图去http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd这一URL地址下载DTD文档。如果Eclipse无法下载到该DTD文档(比如:开发环境未连入互联网),那么该文档就失效了,相应的表单验证功能也将缺失。查看Eclipse的Console可以发现有异常抛出,比如:

java.net.UnknownHostException: struts.apache.org  

这个DTD文档下载问题在真实的服务器运行环境下是不存在的,因为xwork-validator-1.0.3.dtd文件已经包含在Struts2发行包中了(xwork-core-*.jar),而服务器使用的也正是这个jar包内的DTD;只是由于Eclipse的功能(或者说限制),导致从Eclipse启动项目后必须重新再去DTD的URL定义处下载一次。

为了避免这个问题的发生,一个可行的办法是在Eclipse中对XML文档指定其DTD定义,这样在断线的情况下也能正常的开发项目了。具体的做法是在Eclipse的Preferences – XML – XML Catalog 中点击Add按钮来添加DTD定义: dtd-define

而在添加DTD定义的窗口中,输入DTD文件地址以及XML文件中的DTD键值即可: dtd-input

Chuan Shao

Read more posts by this author.

Shanghai

Subscribe to Chuan's blog

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!