2012-09-26 53 views
1

XSLT相當新穎,並且看到with-param作爲完成某些操作的一種方式。xslt調用模板中沒有傳遞參數值

 <xsl:variable name="PQB_ID"> 
     <!-- <xsl:value-of select="wd:SSN"/> --> 
      <xsl:value-of>123</xsl:value-of> 
     </xsl:variable> 

     <xsl:call-template name="testing"> 
       <xsl:with-param name="PQB_ID"></xsl:with-param> 
     </xsl:call-template> 

而且我的模板名稱下方是:

<xsl:template name="testing"> 
    <xsl:param name="PQB_ID"></xsl:param> 
    <xsl:value-of select="$PQB_ID"></xsl:value-of> 
</xsl:template> 

至少,我希望看到123或者,當我<xsl:value-of select="wd:SSN"/>是註釋掉,我希望看到我在程序的價值。事實上,我沒有得到任何回報。

我錯過了什麼?

+0

您碰巧有一個變量和模板參數使用相同的名稱。指定''不會給它賦值。正如@Ian Roberts指出的那樣,當您調用模板時,您需要選擇要分配給參數的值。 –

回答

5
<xsl:with-param name="PQB_ID"></xsl:with-param> 

會爲參數傳遞一個空值。如果你想通過全球PQB_ID變量的值,你需要做這樣明確

 <xsl:with-param name="PQB_ID" select="$PQB_ID"/> 
0

還請注意,這是在XSLT 2.0一個非常好的主意,宣佈在XSL期望的參數類型:PARAM 。你在期待一個字符串嗎?一個整數?我不指望你期待一個文檔節點,這就是你仔細的代碼

<xsl:variable name="PQB_ID"> 
    <xsl:value-of>123</xsl:value-of> 
</xsl:variable> 

如果模板想要一個整數,那麼你並不需要一個全新的文檔包含它創造;只寫

<xsl:variable name="PQB_ID" select="123"/>