XML文件DTD路径解析(Eclipse)

1、xml文件声明的dtd文件路径如下:
  
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
  " http://java.sun.com/dtd/ejb-jar_2_0.dtd">
  <ejb-jar >
  。。。。。。
  </ejb-jar>
  
  2、dtd声明解析原则:
  D O C T Y P E声明不仅包含常规的关键字和根元素名称,而且包含指示外部D T D源的关键字和D T D的位置。X M L规范定义了几种声明源的方法。声明中可以使用关键字SYSTEM 或 PUBLIC。如果使用 SYSTEM 关键字,解析器将仅根据给出的U R L寻找DTD?DTD通过U R L显式地直接定位。
  然而,如果D T D源关键字为 PUBLIC,情况就略微复杂一些。P U B L I C关键字用于声明众所周知的词汇表。例如,假设出版界已经对图书种类D T D达成了大量共识。需要根据该词汇表解析文档的应用程序可能会通过某种策略来定位D T D。如果这个D T D非常普及,应用程序或许有本地拷贝。直接使用本地拷贝可能比从We b服务器上远程下载更可取。D T D可能存放在数据库中,或者可以通过其他与应用程序相关的技术获得。如果使用P U B L I C关键字和U R I,应用程序就有机会利用自己的算法定位D T D。统一资源标识符(URI)可以是URL,也可以是一个单独的名字。
  例如:
  <!DOCTYPE ejb-jar PUBLIC “universal/publishing/book”
  “http://www.myweb.com/dtd/books.dtd” >
  
  如果U R I“universal/Publishing/Book”对于处理这类文档的应用程序来说是已知的,应用程序可以通过某种有效的方式自行寻找D T D。或许我们恰好有适合该领域的解析器。它可能有D T D的本地拷贝,或者它可以访问由本地数据库服务器维护的D T D。最关键的是,寻找D T D的方法主要是由负责处理D O C T Y P E声明的应用程序确定的。
  当然,“众所周知”通常是相对的。因此, XML 1.0允许P U B L I C声明同时有公共U R I和系统标识符。如果使用文档的应用程序或解析器不能从P U B L I C关键字提供的U R I定位D T D,它必须使用系统标识符。
  在本例中,文档的设计者允许作为接收方的应用程序根据公共的U R I自行寻找D T D。如果该过程失败,对我们的出版领域不熟悉的通用解析器一般属于这种情况,应用程序可以从地址为 http://www.myweb.com/ 的We b服务器请求指定的文件,即获取网络上的dtd文件: http://www.myweb.com/dtd/books.dtd
  
  3、Eclispe中配置dtd路径:
  
  如果初始状态下没有配置ejb-jar.xml文件的dtd路径,而eclipse又不能去sun公司validate的情况下,eclipse报错。
  
  可以根据ejb-jar.xml文件声明的PUBLIC DOCTYPE,指示eclipse到一个本地的dtd文件去验证。
  
  已声明的 "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" 为 本地dtd文件的一个别名。
  
  可以利用Eclipse的 【XML Catalog】来配置:
  
  添加一个【User Specified Entries】,用户自定义的本地dtd验证入口:
  
  【Add…】 à
  
  保存,然后 在 ejb-jar.xml 文件上 右键 ->[Validate Xml file] , Eclipse 提示 验证通过,不再提示错误。 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值