我想从DITA映射文件中提取应用程序版本。该ditamap文件是有效的,看起来像这样:Ant xmlproperty任务由于验证错误而失败
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
<map id="user-manual">
<title><ph keyref="product"/> User Manual</title>
<topicmeta>
<prodinfo>
<prodname><keyword keyref="product"/></prodname>
<vrmlist>
<vrm version="4" release="3" modification="0"/>
</vrmlist>
</prodinfo>
</topicmeta>
<!--
[...]
-->
</map>
我想要得到的信息是在<vrm>
元素。
“轻松的心情”,我想我自己。所以我使用Ant的<xmlproperty>
任务来加载这个XML文件。
<project default="test">
<!-- notice @validate -->
<xmlproperty file="path/to/user-manual.ditamap" validate="false"/>
<target name="test">
<echo>${map.topicmeta.prodinfo.vrmlist.vrm(version)}</echo>
</target>
</project>
我不希望它验证,因为Ant不会找到map.dtd。如果我删除<!DOCTYPE>
声明或与路径添加一个嵌套<xmlcatalog>
的DTD,文件加载,我可以从它使用属性
java.io.FileNotFoundException: /home/user/user-manual/map.dtd (No such file or directory)
:
加载文件返回一个错误。
我用Ant 1.7.1和1.9.4测试了这个。这是Ant的错误,还是我误解了Ant如何加载XML属性以及validate
属性的用途?
我该如何让蚂蚁服从我的意志?
好点使用Ant的XSLT任务,生活的最好方式要做到这一点是使用xslt任务来创建一个临时的XML属性文件,然后加载?或者你推荐一个不同的方法? – Scribblemacher
我更新了我的答案 –