2012-03-29 15 views
2

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関数を呼び出すことに幸運がありましたか?

答えて

2

Saxon-EE JARファイルを使ってSaxon-EE JARファイルを実行しても、ライセンスなしの場合、少なくとも理論上はSaxon-HEのように動作するはずです。つまり、このスタイルの拡張関数呼び出しはサポートされていません。

コマンドラインから実行している場合は、-TJオプションを使用すると、一致する関数の検索を詳細に診断できます。

+0

Saxon-HEを使用している場合、HEバージョンは拡張機能をサポートしていません(多かれ少なかれ)。コードを変更することなく、Saxonライブラリだけを変更すると、上記のエラーが発生します。 Eclipseから実行していて、-TJパラメータを設定しようとしましたが、出力が同じように見えます。 – Buffalo

関連する問題