2010-01-25 26 views
2

我有一個名爲$statuses的變量。使用xml在xslt中輸出變量的完整XML進行調試:message

我要輸出完整的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 isn't a recognised part of the java/xslt apache extensions.

不任何人都知道實際的Java調用是實現我想要的還是實現它的方式?

在此先感謝。

+0

你確定它不工作?如果您通過瀏覽器查看結果,則標籤將不會顯示,除非在源代碼中。 – 2010-01-25 18:22:50

+0

正面。我發佈時可能應該給出上下文。我正在通過JBoss測試應用程序,以便通過putty輸出窗口中的server.log查看任何xsl:message輸出。這是我目前得到的... 2010-01-25 18:05:41,865錯誤[STDERR] file:///jboss-3.2.0/bin/javax.xml.transform.dom.DOMSource; 0行;第0列; nodeset_statuses的內容: - 11001223400010334000103訂單已經在ASN上訂單已經在ASN151001223400010301/22/2010 00:00:00 GMT340001031499自動拒絕R0201R1308M340C – 2010-01-26 09:29:12

+0

所以基本上我需要xml的結構來理解這些值關聯的內容。我目前不知道變量包含的是XML結構,所以即使我用逗號分隔它們,我也無法確定映射。 – 2010-01-26 09:30:39

回答

0

使用文檔的功能和xsl:variable節點集讀取值:

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

您的意見建議你使用的Xalan,它有一個extension for writing output to different result documents。添加

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包含多個元素則形成)。