web-dev-qa-db-ja.com

JavaでのXSLT処理?

JDKを使用してJavaでXSLTプロセッサを使用してXMLを変換する方法は?

66
Venkat

@Raedwaldが言ったように、トランスフォーマーにJava apiを使用するためのサンプルは次のとおりです。

import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import Java.io.File;
import Java.io.IOException;
import Java.net.URISyntaxException;

public class TestMain {
    public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
        TransformerFactory factory = TransformerFactory.newInstance();
        Source xslt = new StreamSource(new File("transform.xslt"));
        Transformer transformer = factory.newTransformer(xslt);

        Source text = new StreamSource(new File("input.xml"));
        transformer.transform(text, new StreamResult(new File("output.xml")));
    }
}

入力は文字列またはDOMSourceからでも、出力はDOMSource etc からでも可能です。

132
Askar Kalykov

Java標準ライブラリは、XML解析のための(XSLT)変換インターフェースを提供します。クラスのAPIドキュメントを参照してください javax.xml.transform.Transformer およびjavax.xml.transform.TransformerFactory

8
Raedwald

私はxsltが初めてです。誰でもJavaでxslt処理する方法を教えてもらえますか?

これは、使用しているJavaベースのXSLTプロセッサによって異なります。各XSLTプロセッサには独自のAPIがあります。

たとえば、Saxon 6.5.5(XSLT 1.0の場合)およびSaxon 9.1.07(XSLT 2.0の場合)はJavaで記述されています。ドキュメントはhttp://www.saxonica.com/documentation/documentation.xmlにあります

ほとんどすべてのXSLTプロセッサにはコマンドラインユーティリティがあり、XSLT変換を実行するためにプログラムを作成する必要はありません。

たとえば、ここにありますSaxon 9.x変換を開始する方法コマンドライン

ここに、コマンドラインから常にSaxonを使用する方法を示します

Java -Xms2048M  -Xmx10000M  -jar  
     C:\xml\Parsers\Saxon\Ver.9.1.0.7\J\saxon9.jar 
    -t  -repeat:1  -o %out%  %xml%  %xsl%  %param[ name=\"value\"]%

どこ %out%は出力ファイルの名前、%xml%はxmlファイル、%xsl%はプライマリxsltファイルであり、%param[ name=\"value\"]%は、外部パラメーターの名前と値のリストです(ほとんど常に空のままにします)。

7

JAXPは、XSLT変換を扱う実装に依存しない方法を提供します。 チュートリアルはこちら 始めましょう。巨大なXSLTを使用している場合や、複数のXSLTを使用している場合は、パフォーマンス上の理由から、解析されたXSLTテンプレートをキャッシュするオプションもあります。 この記事 はxsltのキャッシュ方法を説明しています

5