2

という変数があります$statuses

ノードの値だけでなく、完全なXMLを出力したいので、次のことを試みました。-

<xsl:message>Contents of the nodeset_statuses:-
    <xsl:copy-of select="$statuses"/>
</xsl:message>

ただし、これはXMLのノードの値のみを出力しますが、これは私が望むものではありません。XMLを「そのまま」欲しい。dom4jのような「prettyPrint」テンプレートの例をいくつか見てきましたが、正直なところ、それほど多くの作業は必要ありません。

利用可能なJavaメソッド呼び出しはありますか?

私は次のようなことを試しました:

<xsl:message>
    <xsl:variable name="output" select="java:System.out.println('print me something')"/>
</xsl:message>

XML名前空間の定義は次のとおりです。

xmlns:java="http://xml.apache.org/xslt/java"

しかし、エラーが返されたため、機能しませんでした。

System.out.printlnは、java /xsltapache拡張機能の認識された部分ではありません。

誰かが私が望むことを達成するための実際のJava呼び出しまたはそれを行う方法を知っていますか?

前もって感謝します。

4

2 に答える 2

1

あなたのコメントは、出力をさまざまな結果ドキュメントに書き込むための拡張機能を持つ Xalan を使用していることを示唆しています。追加

xmlns:redirect="http://xml.apache.org/xalan/redirect"
extension-element-prefixes="redirect"

変換の<xsl:stylesheet>ルート要素に追加すると、使用できます

<redirect:write select="'statuses_debug.xml'">
  <statuses>
    <xsl:copy-of select="$statuses"/>
  </statuses>
</redirect:write>

$statuses変数を別のファイルにダンプします(複数の要素が含まれている場合に出力を適切な形式にするために、単一のルート要素を追加しました)。

于 2013-04-08T19:02:15.410 に答える
0

document 関数とxsl:variablenodeset を使用して値を読み取ります。

<xsl:message>
  <xsl:value-of select="document('')/*/xsl:variable/@select[../@name='output']"/>
</xsl:message>
于 2012-01-13T07:40:47.487 に答える