JavaからSaxonプロセッサを使用しようとしています。私が使用していますsaxon9ee.jar saxonee9-3-0-11j.zip内側(ちょうどダウンロードし、何のライセンスが - それがうまくいくように、必要なことではない?)XSL(SAXON)からJavaを呼び出す
彼ら* *リソースここで見つけることができます: http://www.saxonica.com/documentation/extensibility/functions/instance-methods.xml
http://www.saxonica.com/documentation/extensibility/functions/staticmethods.xml
私の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>
私のjavaファイル:
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()));
}
}
私の入力XMLファイル:
<?xml version="1.0" encoding="UTF-8"?>
<date format="yyyyMMdd'T'hhmmss" year="2000" month="4" day="27"/>
私の主なjavaファイル:
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));
}
エラー: XTDE1425:という名前の一致0 - 引数の関数を見つけることができません {java:com.macfaq.math.SimpleSaxon} getCurrentFullDate()。名前空間URIとローカル名 は認識されますが、組み込みテンプレートルールでは引数の数が正しくありません。
この素晴らしいプロセッサを使用している間、誰もXSLからカスタムJava関数を呼び出すことに幸運がありましたか?
Saxon-HEを使用している場合、HEバージョンは拡張機能をサポートしていません(多かれ少なかれ)。コードを変更することなく、Saxonライブラリだけを変更すると、上記のエラーが発生します。 Eclipseから実行していて、-TJパラメータを設定しようとしましたが、出力が同じように見えます。 – Buffalo