2012-04-17 26 views
0

無法成功傳遞xsl(1.0)中的參數。看來,不能動態修改'select'的內容。下面是不會引發錯誤,但無法識別$實體參數的嘗試:xslt apply-template

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output cdata-section-elements="" encoding="UTF-8" indent="yes" method="xml" omit-xml-declaration="yes"/> 
    <xsl:param name="entity">CreditController[]</xsl:param> 
     <xsl:template match="/"> 
      <xsl:element name="variable"> 
        <xsl:attribute name="type">NameValuePair[]</xsl:attribute> 
         <xsl:apply-templates select="variable/*[@type='$entity']/item"/>      
      </xsl:element> 
    </xsl:template> 

    <xsl:template match="item">     
      <xsl:element name="item"> 
      <xsl:attribute name="type">NameValuePair</xsl:attribute> 
      <xsl:element name="value"> 
       <xsl:attribute name="type">String</xsl:attribute> 
       <xsl:value-of select="Code"/> 
      </xsl:element> 
      <xsl:element name="name"> 
       <xsl:attribute name="type">String</xsl:attribute> 
       <xsl:value-of select="Code"/>-<xsl:value-of select="Value"/> 
      </xsl:element> 
      </xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 

在此先感謝。其他帖子似乎建議使用並設置元素的「模式」屬性。我沒有贏得任何一個。

用字符串文字'CreditController []'替換實體變量將按預期工作。

+0

您可以發佈您輸入XML的樣本? – 2012-04-17 15:03:42

+1

它不應該只是'@ type = $ entity'嗎?在'$ entity'周圍用引號使它成爲'$ entity'字符串。 – 2012-04-17 15:06:37

+0

阿維拉的答案我認爲是正確的,應該作爲答案輸入,以便可以接受。 – 2012-04-17 15:14:19

回答

0

在您的XPath中,用引號括住$entity,使其成爲字符串文字$entity而不是要展開的變量。

刪除引號:

<xsl:apply-templates select="variable/*[@type=$entity]/item"/>