J'ai essayé d'utiliser la tâche xslt
dans Ant pour modifier un fichier de mappage Hibernate (*.hbm.xml
) à l'aide de XSLT. Cependant, j'ai continué à obtenir un com.sun.org.apache.xml.internal.utils.WrappedRuntimeException
.Ant: Comment réparer une exception WrappedRuntimeException lors de l'utilisation de la tâche <xslt>?
Si je supprime la déclaration !DOCTYPE
dans le fichier XML source, la cible suivante s'exécute sans erreur. Quelqu'un pourrait-il me dire ce que je fais de mal? Merci!
Voilà mon objectif Ant:
<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>
Voici mon sortie du journal:
[xslt] : Error! hibernate.sourceforge.net
[xslt] : Error! com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: hibernate.sourceforge.net
[Modifier] Voici le DOCTYPE que j'enlevé pour le faire fonctionner
<!DOCTYPE hibernate-mapping
PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
[Edit2 ]: J'ai trouvé un correctif, mais je ne sais pas si c'est la "bonne" façon ou non. J'ai téléchargé le fichier DTD et l'ai placé dans mon dossier de projet. J'ai référencé le fichier (comme indiqué ci-dessous) au lieu de l'URL, et cela semble fonctionner maintenant.
<xmlcatalog>
<dtd publicId="-//Hibernate/Hibernate Mapping DTD//EN"
location="${base.configuration.hibernate.dir}/hibernate-mapping-3.0.dtd"/>
</xmlcatalog>
Alors, quelle est la déclaration DOCTYPE que faire lorsque vous l'enlevez? – Eddie
comme ajouté dans le post ci-dessus, je pense que c'était une DTD hibernate standard que j'ai retiré du site Hibernate. – tomato