如何在使用Xslt将Xml转换为Html时绑定标记ID

时间:2016-03-18 11:36:55

标签: xml xslt

我在将Xml转换为html时使用XSLT。我需要将值绑定到h4标签以生成书签,但我得到xslt编译错误。我怎么能做到这一点?

<xsl:for-each select="checklist">
            <table>
              <tbody>
                <tr>
                  <td>
                    <h4 id=<xsl:value-of select="@value"/>'>
                      <xsl:value-of select="@name"/>
                    </h4>
                  </td>
                </tr>
                <tr>
                  <td class="tbChecklist">
                  <xsl:copy-of select="summary"/>
                    </td>
                </tr>
              </tbody>
            </table>

</xsl:for-each>

2 个答案:

答案 0 :(得分:1)

您需要在此使用Attribute Value Templates

<h4 id="{@value}">
    <xsl:value-of select="@name"/>
</h4>

花括号表示要计算的表达式,而不是字面输出。

请注意,您也可以使用xsl:attribute执行此操作

<h4>
    <xsl:attribute name="id">
        <xsl:value-of select="@value"/>
    </xsl:attribute>
    <xsl:value-of select="@name"/>
</h4>

但正如你所看到的,AVT更受欢迎。

答案 1 :(得分:0)

那是因为您的XSLT文件格式不正确。一种可能的解决方案是使用 xsl:attribute 元素:

<h4>
    <xsl:attribute name="id">
        <xsl:value-of select="@value"/>
    </xsl:attribute>
    <xsl:value-of select="@name"/>
</h4>

虽然不是很优雅。另一种不同的解决方案是使用变量:

<xsl:variable name="id">
    <xsl:value-of select="@value"/>
</xsl:variable>

<xsl:variable name="value">
    <xsl:value-of select="@name"/>
</xsl:variable>

并在必要时使用它:

<h4 id="{$id}"><xsl:value-of select="$value"/></h4>