2

次のコードを使用して XSL 変換を行っています。

Source source = new StreamSource(new StringReader(request.toString()));
Source xsl = new StreamSource(XSLPath);
                
StringWriter destination = new StringWriter();
Result result = new StreamResult(destination);
        
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer;
transformer = transFactory.newTransformer(xsl);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);

このXSLPath変数は、ファイルの場所をファイルに渡し.xslます。

transFactory.newTransformer(xsl)が xsl ファイル自体の最初に何らかの内部検証を行うかどうかを知る必要があります。そうでない場合、変換を実行する前に xsl ファイルの検証を行う方法はありますか?

xsd ファイルを検証するコードがありますが、同じコードは xsl では機能しないと思います。SAXException私はまだそれを試しましたが、ほとんどの行で空白以外のスペースが許可されていないことについて、常にいくつかのことをスローします。

4

1 に答える 1

4

はい、XSLT プロセッサが最初に行うことは、スタイルシートの検証とコンパイルです。(なぜ質問する必要があったのでしょうか? エラーを導入して、何が起こるか見てみましょう!)

アプリケーションがエラー メッセージを確実にキャプチャできるように、ErrorListener を設定すると便利な場合があります。

多くの変換で同じスタイルシートを繰り返し使用している場合は、 newTemplates() を使用して Templates オブジェクトを作成すると、検証/コンパイルを 1 回だけ実行する方がはるかに効率的です。Templates オブジェクトをコンパイル済みのスタイルシートと考えてください。

于 2013-05-22T07:22:07.087 に答える