2010-04-18 87 views
5

這聽起來很簡單,但沒有我的「易」語法的工作:如何使用xsl:參數值的方式在xsl:屬性名稱=「寬度」

<xsl:param name="length"/> 
<xsl:attribute name="width">$length</xsl:attribute> 
not 
<xsl:attribute name="width"><xsl:value-of-select="$length"></xsl:attribute> 

有什麼建議?

感謝

+0

您可能需要格式化您的示例代碼,使其更易於閱讀。點擊「編輯」鏈接,突出顯示您的代碼示例,然後單擊代碼格式按鈕。 – Filburt 2010-04-18 21:45:39

+0

好問題,但你需要格式化你的代碼(我這次爲你做了)。 +1。看到我的答案,它提供了兩種解決方案,並推薦更好的解決方案。 :) – 2010-04-18 21:58:46

回答

8

<xsl:attribute name="width">$length</xsl:attribute>

這將創建價值字符串$length的屬性。但是您想要名爲$length的xsl:param的值。

<xsl:attribute name="width"><xsl:value-of-select="$length"></xsl:attribute>

這裏<xsl:value-of>元件沒有關閉 - 這使得不良好的XML的XSLT代碼。

:下面的

使用一個:

  1. <xsl:attribute name="width"><xsl:value-of select="$length"/></xsl:attribute>

  • <someElement width="{$length}"/>
  • 出於可讀性和緊湊性傾向於使用2以上,只要有可能。

    +1

    我假設你的意思是xsl:value-of,而不是xsl:value-of-select? :) – markusk 2010-04-19 06:54:27

    +0

    @markusk:感謝您注意到這一點。糾正。 – 2010-04-19 12:52:23

    1

    你可能甚至不需要xsl:attribute在這裏;最簡單的方法是這樣的:

    <someElement width="{$length}" ... >...</someElement> 
    
    1

    您的第一個選擇失敗,因爲變量未在文本節點中展開。您的第二個選擇失敗,因爲您嘗試撥打<xsl:value-of-select="...">,而正確的語法是<xsl:value-of select="..."/>,如標準中的Generating Text with xsl:value-of部分所述。您可以通過使用

    <xsl:attribute name="width"><xsl:value-of select="$length"/></xsl:attribute> 
    

    解決您的代碼或者,正如其他人指出的那樣,你可以使用attribute value templates

    <someElement width="{$length}" ... >...</someElement>