Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate Ant:使用<;xslt>;任务_Hibernate_Xslt_Ant_Build - Fatal编程技术网

Hibernate Ant:使用<;xslt>;任务

Hibernate Ant:使用<;xslt>;任务,hibernate,xslt,ant,build,Hibernate,Xslt,Ant,Build,我尝试在Ant中使用xslt任务来使用xslt修改Hibernate映射文件(*.hbm.xml)。然而,我不断得到一个com.sun.org.apache.xml.internal.utils.wrappedruntimeeException 如果我拿出!DOCTYPE声明在源xml文件中,以下目标运行时没有任何错误。有人能告诉我我做错了什么吗?谢谢 这是我的蚂蚁目标: <target name="generatePermHbmXml"> <xslt in="${base

我尝试在Ant中使用
xslt
任务来使用xslt修改Hibernate映射文件(
*.hbm.xml
)。然而,我不断得到一个
com.sun.org.apache.xml.internal.utils.wrappedruntimeeException

如果我拿出
!DOCTYPE
声明在源xml文件中,以下目标运行时没有任何错误。有人能告诉我我做错了什么吗?谢谢

这是我的蚂蚁目标:

<target name="generatePermHbmXml">
  <xslt in="${base.configuration.hibernate.dir}\Test.hbm.xml" 
        out="${base.configuration.hibernate.dir}\TestPerm.hbm.xml"
        style="${base.configuration.hibernate.dir}\perm.xsl">
    <xmlcatalog>
      <dtd publicId="-//Hibernate/Hibernate Mapping DTD//EN"
           location="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"/>
    </xmlcatalog>
  </xslt>       
</target>
[编辑]这是我为使其正常工作而删除的DOCTYPE

<!DOCTYPE hibernate-mapping
PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

我找到了一个解决方案,但我不知道这是否是“正确”的方法。我下载了DTD文件并将其放在我的项目目录中。我引用了这个文件(如下所示)而不是URL,它现在似乎可以工作了

<xmlcatalog>
  <dtd publicId="-//Hibernate/Hibernate Mapping DTD//EN"
       location="${base.configuration.hibernate.dir}/hibernate-mapping-3.0.dtd"/>
</xmlcatalog> 

啊,我想我知道问题所在。在
xslt
任务中,指定了
xmlcatalog

<xmlcatalog>
  <dtd publicId="-//Hibernate/Hibernate Mapping DTD//EN"
       location="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"/>
</xmlcatalog>
然后解析器可以找到它所需要的DTD,保证它正常工作


是的,你的解决方案是正确的。通过这种方式,您的构建不依赖于外部网站的可访问性和可用文件。

那么,DOCTYPE声明是什么?当您删除它时,它会起什么作用?正如上面的帖子中所添加的,我认为这是一个标准的hibernate DTD,我从hibernate站点上取下。
<xmlcatalog>
  <dtd publicId="-//Hibernate/Hibernate Mapping DTD//EN"
       location="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"/>
</xmlcatalog>
<xmlcatalog>
  <dtd publicId="-//Hibernate/Hibernate Mapping DTD//EN"
       location="${base.configuration.hibernate.dir}/hibernate-mapping-3.0.dtd"/>
</xmlcatalog>