我在xslt中有一个值,我需要把它放到p标签的data-time属性中
<xsl:value-of select="current()/eventTime" />
<p class="time" data-time="1">Duration: <xsl:value-of select="current()/eventTime" /> hour(s)</p>
这会产生错误
<p class="time" data-time="<xsl:value-of select="current()/eventTime" />">Duration: <xsl:value-of select="current()/eventTime" /> hour(s)</p>
我知道如何实现这个目标吗?
答案 0 :(得分:16)
“属性值模板”是您的朋友
<p class="time" data-time="{current()/eventTime}">
Duration: <xsl:value-of select="current()/eventTime" /> hour(s)
</p>
花括号表示这是一个属性值模板,因此包含要评估的表达式。
请注意,另一种方法是使用 xsl:attribute 元素
<p class="time">
<xsl:attribute name="data-time">
<xsl:value-of select="current()/eventTime" />
</xsl:attribute>
Duration: <xsl:value-of select="current()/eventTime" /> hour(s)
</p>
但这并不是那么优雅。如果需要动态属性名称,您只需要这样做。
答案 1 :(得分:0)
这样的东西?
<xsl:variable name="eventtime" select="current()/eventTime"/>
<xsl:element name="p">
<xsl:attribute name="class">time</xsl:attribute>
<xsl:attribute name="data-time">
<xsl:value-of select="$eventtime" />
</xsl:attribute>
Duration:
<xsl:value-of select="$eventtime" />
</xsl:element>
答案 2 :(得分:0)
代替<xsl:attribute>
,也可以在“ {}
”括号中使用缩写形式。在您的情况下,将是这样的:
<xsl:value-of select="current()/eventTime" />
<p class="time" data-time="{$eventtime}">Duration: <xsl:value-of select="current()/eventTime" /> hour(s)</p>