我在将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>
答案 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>