6

我在 xslt 中有一个值,我需要将它放入 p 标签的数据时间属性中

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

知道我是如何做到这一点的吗?

4

3 回答 3

20

“属性值模板”是您的朋友

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

虽然这不是那么优雅。如果需要动态属性名称,您只需要这样做。

于 2012-09-21T11:25:02.110 回答
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>
于 2012-09-21T11:36:02.230 回答
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>

于 2019-05-23T09:07:31.777 回答