2

我有一个名为$statuses.

我想输出完整的 XML,而不仅仅是节点中的值,所以我尝试执行以下操作:-

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

但是,这只会输出 XML 中节点中的值,这不是我想要的。我想要“原样”的 XML。我已经看到了一些“prettyPrint”模板的例子,比如 dom4j,但老实说,它真的不应该做那么多工作。

是否有可用的 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 / xslt apache 扩展的公认部分。

有谁知道实际的 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

使用文档函数和xsl:variable节点集读取值:

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