Hallo,
Wieso wird diese Exception geworfen, wo doch das version-Attribut definiert ist?
Bei mir funktioniert Dein Code anstandslos, allerdings verwendest Du offensichtlich eine GNU-Java-Implementierung (»at gnu.xml.transform.Stylesheet.doParse(libgcj.so.81)«) - und die scheint einen Bug zu haben.
Wenn Du genau hinsiehst, will der nämlich nicht ein Attribut "version", sondern ein Attribut "xsl:version" sehen. Das widerspricht zumindest beim Überfliegen der relevanten Abschnitte dem XSLT-1.0-Standard, denn der verlangt ein Attribut ohne Namespace (d.h. Du machst es richtig, Dein Prozessor ist verbuggt).
Du kannst es jetzt mal mit "xsl:version" probieren (und wenn's dumm geht musst Du alle Attribute mit "xsl:" präfixen) - allerdings solltest Du dann beachten, dass Deine XSLTs dann *INKOMPATIBEL* zu standardkonformen XSLT-Prozessoren werden.
Oder Du könntest versuchen, den XSLT-Prozessor zu wechseln - dazu kannst Du entweder eine andere Factory bei <xslt> angeben (alternativ die Systemeigenschaft javax.xml.transform.TransformerFactory ändern, was aber blöd ist bei Ant). Wenn Du z.B. XALAN verwenden willst müsstest Du folgendes tun (ungetestet):
<xslt ...>
<factory name="org.apache.xalan.processor.TransformerFactoryImpl" />
</xslt>
Oder, wenn Du kein TraX verwenden willst, den Prozessor aber dennoch wechseln willst: Ant bietet da mehrere Möglichkeiten, z.B. (für Xalan 2)
<xslt processor="xalan2" ... />
(auch ungetestet, sollte aber funktionieren)
Dafür muss natürlich der andere Prozessor installiert sein - Xalan kannst Du aber z.B. kostenlos herunterladen und verwenden.
Viele Grüße,
Christian