Ich versuche, den Saxon-Prozessor von Java zu verwenden. Ich bin mit der die saxon9ee.jar innerhalb saxonee9-3-0-11j.zip (gerade heruntergeladen, keine Lizenz - ist das notwendig, damit es funktionieren?)Java von XSL (SAXON) aufrufen
Ihre * * Ressourcen hier finden Sie: http://www.saxonica.com/documentation/extensibility/functions/instance-methods.xml
http://www.saxonica.com/documentation/extensibility/functions/staticmethods.xml
Mein xsl:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<xsl:value-of select="dateUtils:getCurrentFullDate()"
xmlns:dateUtils="java:com.macfaq.math.SimpleSaxon"/>
</xsl:template>
</xsl:stylesheet>
Meine Java-Datei:
package com.macfaq.math;
public class SimpleSaxon {
public static final String YMDTHMS = "yyyyMMdd'T'hhmmss";
public static String getCurrentFullDate() {
return (new SimpleDateFormat(YMDTHMS).format(new Date()));
}
}
Meine Eingabe-XML-Datei:
<?xml version="1.0" encoding="UTF-8"?>
<date format="yyyyMMdd'T'hhmmss" year="2000" month="4" day="27"/>
Meine Haupt Java-Datei:
public class SaxonTransf {
public static void main(String[] args) {
System.setProperty("javax.xml.transform.TransformerFactory",
"net.sf.saxon.TransformerFactoryImpl");
String foo_xml = "in.xml"; // input xml
String foo_xsl = "transf.xsl"; // input xsl
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer transformer = tfactory.newTransformer(new StreamSource(
new File(foo_xsl)));
transformer.transform(new StreamSource(new File(foo_xml)),
new StreamResult(System.out));
}
Fehler: XTDE1425: Es kann keine passende 0-Argument Funktion finden benannt {java: com.macfaq.math.SimpleSaxon} getCurrentFullDate(). Der Namespace-URI und der lokale Name werden erkannt, aber die Anzahl der Argumente ist in der integrierten Vorlagenregel falsch.
Hat jemand Glück gehabt, benutzerdefinierte Java-Funktionen von XSL anzurufen, während dieser wunderbare Prozessor?
Wenn Sie Saxon-HE verwenden, besagt die Ausnahme, dass die HE-Version (mehr oder weniger) keine Erweiterungsfunktionen unterstützt. Ohne irgendeinen Code zu ändern, aber nur die sächsische Bibliothek, erhalte ich den obigen Fehler. Ich bin es von Eclipse ausgeführt und ich habe versucht, die Einstellung -TJ, aber die Ausgabe scheint die gleiche. – Buffalo