通过使用 xml:message 输出 xslt 中变量的完整 XML 进行调试

发布于 2024-08-18 17:25:00 字数 798 浏览 5 评论 0原文

我有一个名为 $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调用是什么来实现我想要的或者实现它的方法?

提前致谢。

I have a variable called $statuses.

I want to output the full XML, rather than just the values in the nodes, so I tried to do the following:-

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

However, this only outputs the values in the nodes in the XML which is not what I want. I want the XML "as it is". I've seen some examples of "prettyPrint" templates like with dom4j but I'll be honest it really shouldn't be that much work.

Is there any Java method call available?

I tried something like:

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

With an XML namespace definition of:

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

But that didn't work as it returned the error:

System.out.println isn't a recognised part of the java / xslt apache extensions.

Does anyone know what the actual Java call is to achieve what I want or a way to do it?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暖风昔人 2024-08-25 17:25:00

您的评论表明您正在使用 Xalan,它有一个 扩展,用于将输出写入不同的结果文档。添加

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

到转换的 根元素,然后您可以

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

将变量转储到单独的文件中(我添加了一个根元素以使输出格式良好如果 $statuses 包含多个元素)。

Your comment suggests you're using Xalan, which has an extension for writing output to different result documents. Add

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

to the <xsl:stylesheet> root element of your transformation, then you can use

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

to dump the variable to a separate file (I've added a single root element to make the output well-formed if $statuses contains more than one element).

浅听莫相离 2024-08-25 17:25:00

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

<xsl:message>
  <xsl:value-of select="document('')/*/xsl:variable/@select[../@name='output']"/>
</xsl:message>

Use the document function and the xsl:variable nodeset to read the value:

<xsl:message>
  <xsl:value-of select="document('')/*/xsl:variable/@select[../@name='output']"/>
</xsl:message>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文