Ich habe versucht, die xslt
Aufgabe in Ant zu verwenden, um eine Hibernate Mapping-Datei (*.hbm.xml
) mit XSLT zu ändern. Aber ich bekam immer eine .Ant: Wie behebe ich eine WrappedRuntimeException bei der Verwendung von <xslt> Aufgabe?
Wenn ich die !DOCTYPE
Deklaration in der Quell-XML-Datei herausnehmen, wird das folgende Ziel ohne Fehler ausgeführt. Könnte mir bitte jemand sagen, was ich falsch mache? Vielen Dank!
Hier ist meine Ant-Ziel:
<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>
Hier ist meine Log-Ausgabe:
[xslt] : Error! hibernate.sourceforge.net
[xslt] : Error! com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: hibernate.sourceforge.net
[Bearbeiten] Hier ist die DOCTYPE, dass ich es
<!DOCTYPE hibernate-mapping
PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
[Edit2 zu erhalten entfernt arbeiten ]: Ich habe eine Lösung gefunden, aber ich weiß nicht, ob es der "richtige" Weg ist oder nicht. Ich habe die DTD-Datei heruntergeladen und in mein Projektverzeichnis eingefügt. Ich habe die Datei (wie unten gezeigt) anstelle der URL referenziert, und es scheint jetzt zu funktionieren.
<xmlcatalog>
<dtd publicId="-//Hibernate/Hibernate Mapping DTD//EN"
location="${base.configuration.hibernate.dir}/hibernate-mapping-3.0.dtd"/>
</xmlcatalog>
Also was ist die DOCTYPE-Deklaration was, wenn Sie es entfernen Dinge funktionieren? – Eddie
wie im obigen Beitrag hinzugefügt, denke ich, dass es eine Standard-Hibernate-DTD war, die ich von der Hibernate-Site genommen habe. – tomato