4
  • net.sf.saxon.TransformerFactoryImpl複数の XML ファイルへの変換を行うために使用しています。
  • コレクション関数を使用して XML ファイルを取得しています。

私がやりたいことは、それが可能かどうかわからないのですが、XML ファイルがあるディレクトリのパスを含む変数をスタイルシートに渡すことです。Java コードからその変数を渡したい。

    <xsl:for-each 
        select="for $x in(collection('MYVAR?select=*.xml;recurse=yes'))
                    return saxon:discard-document($x)//testsuites">
4

2 に答える 2

4

単に使用する

<xsl:for-each select="for $x in(collection(concat($MYVAR, '?select=*.xml;recurse=yes')))return saxon:discard-document($x)//testsuites">

MYVAR は、(プラットフォームに依存する) ディレクトリ パスではなく、ファイル URL である必要があることに注意してください。

[編集] XSLT で必要な

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0">

  <xsl:param name="MYVAR"/>

  ...

</xsl:stylesheet>

Java コードでhttp://download.oracle.com/javase/6/docs/api/javax/xml/transform/Transformer.html#setParameter%28java.lang.String,%20java.lang.Object%メソッドを使用します。 29

transformer.setParameter("MYVAR", "file:///C:/dir/subdir/dir");
于 2011-02-04T13:31:41.310 に答える
0

スタイルシートでパラメーターを使用します。

<xsl:param name="MYVAR" />

変換を呼び出す前に、次のように Java でパラメーターを設定します。

transformer.setParameter("MYVAR", 'file:/some/folder');

変数またはパラメーターと同じように、スタイルシートでパラメーターを参照します。

<xsl:for-each select="for $x in
                        (collection(concat($MYVAR, '?select=*.xml;recurse=yes')))
                          return saxon:discard-document($x)//testsuites">
于 2011-02-04T14:08:40.900 に答える