2011-10-04 75 views
0

我有以下XSLT模板:如何選擇XSLT模板參數中的元素?

<xsl:template name="foo"> 
    <xsl:param name="arg1">0</xsl:param> 
    <xsl:param name="arg2" /> 
    <xsl:param name="arg3" /> 
    <xsl:call-template name="bar"> 
     <xsl:with-param name="arg1"><xsl:value-of select="$arg1" /></xsl:with-param> 
     <xsl:with-param name="arg2"><xsl:copy-of select="$arg2" /></xsl:with-param> 
     <xsl:with-param name="arg3"><!-- what do I put here? --></xsl:with-param> 
    </xsl:call-template> 
</xsl:template> 

現在ARG3是一個XML SNIPPIT。我只想在arg3中選擇一個元素作爲arg3傳遞給bar。如何從參數中選擇單個節點?我試過了,但沒有奏效。

請不要建議發送arg3/qux而不是arg3的值。這有一個很好的理由,但這超出了這個問題的觀點。

+0

你能說說_but但沒有work_嗎?是否給出了任何錯誤消息? @詹姆斯約翰遜的編輯解決方案可能是你想要的,但沒有任何錯誤信息,很難提供幫助。 – btlachance

回答

1

這取決於什麼的XML片段的樣子,但你可以做這樣的事情:

<xsl:value-of select="$arg3/first_name" /> 

編輯

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
    xmlns:ext="http://exslt.org/common" exclude-result-prefixes="ext msxsl"> 

    <xsl:template match="/">    
     <xsl:value-of select="ext:node-set($arg3)/first_name" /> 
    </xsl:template> 

</xsl:stylesheet> 
+0

你用什麼來處理你的XSLT? Java似乎並不喜歡這樣。 :( –

+0

'' –

+0

在這裏走出我的一點點,但嘗試使用節點集 –

0

只是把$ ARG3爲節點,對我的作品。

<xsl:call-template name="bar"> 
    <xsl:with-param name="arg1"><xsl:value-of select="$arg1" /></xsl:with-param> 
    <xsl:with-param name="arg2"><xsl:copy-of select="$arg2" /></xsl:with-param> 
    <xsl:with-param name="arg3" select="$arg3/sub-node"/> 
</xsl:call-template>