2014-11-23 69 views
0

需符合如下......如何改變這個你有所幫助:XSLT轉換UL到選擇

<ul> 
    <li value="xxx">Text XXX</li> 
    <li value="zzz">Text ZZZ</li> 
    <li value="yyy">Text YYY</li> 
</ul> 

這個

<select> 
    <option value="xxx">Text XXX</option> 
    <option value="zzz">Text ZZZ</option> 
    <option value="yyy">Text YYY</option> 
</select> 

預先感謝您。

我試過的東西,這是非常遠不是正確

<xsl:for-each select="ul/li"> 
    <option value="*/@value"> 
     <xsl:copy-of select="li"/> 
    </option> 
</xsl:for-each> 
+1

那你試試這麼遠嗎?發佈您當前的嘗試。 – 2014-11-23 17:21:24

+0

我不是很好,並嘗試完全廢話。我很慚愧地發佈我試過的東西。 – 2014-11-23 17:22:54

+0

把它放在你的問題不是一個評論,除了這已經相當接近 – 2014-11-23 17:24:00

回答

1

這是直接的使用模板:

<xsl:template match="ul"> 
    <select> 
    <xsl:apply-templates/> 
    </select> 
</xsl:template> 

<xsl:template match="li"> 
    <option value="{@value}"> 
    <xsl:apply-templates/> 
    </option> 
</xsl:template> 
0

我不會打電話給你的企圖「總廢話」,它實際上是八九不離十。您需要更改的是:

  1. {}各地值,如果你想將它們插入參數
  2. 要你只需要@value當前元素上使用的屬性,沒有*/
  3. 來獲取文本的當前元素,您可以使用value-of.來引用當前元素。

像這樣:

<select> 
    <xsl:for-each select="ul/li"> 
    <option value="{@value}"> 
     <xsl:value-of select="." /> 
    </option> 
    </xsl:for-each> 
</select> 
+0

謝謝你,夥計。我使用了你給我的代碼,並感謝你的解釋。 – 2014-11-23 17:31:43