首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与dtd混淆的xmltask

与dtd混淆的xmltask
EN

Stack Overflow用户
提问于 2009-09-29 13:45:45
回答 5查看 2.9K关注 0票数 5

我试图使用xmltask来修改子目录中的文件:

代码语言:javascript
复制
project/path/to/file.xml

该文件引用如下所示的DTD:

代码语言:javascript
复制
<!DOCTYPE data SYSTEM "mydtd.dtd">

我没有修改这些文件的灵活性。

这个DTD存储在同一个子目录中,该子目录一直运行良好:

代码语言:javascript
复制
project/path/to/mydtd.dtd

不幸的是,xmltask试图在我的项目的顶层目录中找到dtd,这是我的构建文件所在的位置,也是我运行的位置:

xmltask java.io.FileNotFoundException: /home/me/project/mydtd.dtd (系统找不到指定的文件)

我在xmltask文档中看到,我可以使用xmlcatalog元素纠正这个问题,以告诉它在哪里查找该文件。但是我需要使用dtd元素,我只能找到这个元素的示例,而不是文档;这些示例只显示一个publicId,如果我正确地理解了XML,那么这个文档就没有publicId了。无论如何,我不应该指定这一点,对吧,因为我的文档已经说我的DTD存储在本地,并显示在正确的位置?

为什么xmltask找不到DTD?纠正或解决这种情况的最佳方法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-08 21:08:37

XML目录是实现这个目标的方法,它需要更多的毅力。

正如您正确指出的,标准Ant <XmlCatalog>类型只允许您在使用内联语法时指定公共DTD引用,这对您没有任何用处。但是,<XmlCatalog>还允许您指定一个标准OASIS语法目录,它要丰富得多,包括解析系统DTD引用。

OASIS目录(完整规范这里)如下所示:

代码语言:javascript
复制
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">      
  <system systemId="mydtd.dtd" uri="project/path/to/mydtd.dtd"/>
</catalog>

然后,您可以从<XmlCatalog>引用此目录。

代码语言:javascript
复制
<xmlcatalog refid="commonDTDs"/>
  <catalogpath>
    <pathelement location="path/to/oasis.catalog"/>
  </catalogpath>
</xmlcatalog>

就是这样。构建一个可重用的OASIS目录文件,并从各种与XML相关的Ant任务中引用它,这是一个好主意,所有这些任务都可以使用<XmlCatalog>

票数 5
EN

Stack Overflow用户

发布于 2010-02-02 17:45:16

作为另一种选择,我似乎可以跳过整个验证,方法是创建一个与DVD文件同名的空白文件,然后在完成时删除该文件。我很可能会走那条路,而不是使用目录。

票数 1
EN

Stack Overflow用户

发布于 2009-09-29 13:53:18

你试过:

代码语言:javascript
复制
<!DOCTYPE data SYSTEM "./path/to/mydtd.dtd">

?还是一条绝对的道路?

此外,您还可以找到<dtd> description 这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1492676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档