XSLT将UL转换为SELECT

时间:2014-11-23 17:19:46

标签: xslt

需要你的帮助以下......如何改变这个:

<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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

我不会把你的尝试称为“完全废话”,它实际上非常接近。你需要改变的是:

  1. 如果要将值插入参数
  2. ,请将{}括在值周围
  3. 要访问当前元素的属性,您只需@value,不需要*/
  4. 要获取当前元素的文本,您可以使用value-of.来引用当前元素。
  5. 像这样:

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