2012-09-21 11 views
5

que tienen un valor en XSLT y tengo que ponerlo en el atributo de tiempo de los datos de la etiqueta pUmbraco - variable de XSLT en datos de atributos

<xsl:value-of select="current()/eventTime" /> 
<p class="time" data-time="1">Duration: <xsl:value-of select="current()/eventTime" /> hour(s)</p> 

esto crea un error

<p class="time" data-time="<xsl:value-of select="current()/eventTime" />">Duration: <xsl:value-of select="current()/eventTime" /> hour(s)</p> 

Alguna idea de cómo logro esto?

Respuesta

15

"Plantillas valor del atributo" son su amigo aquí

<p class="time" data-time="{current()/eventTime}"> 
    Duration: <xsl:value-of select="current()/eventTime" /> hour(s) 
</p> 

Las llaves indican que este es un atributo Plantilla de valor y, por lo contiene una expresión para ser evaluada.

Tenga en cuenta que una forma alternativa sería utilizar el XSL : atributo elemento

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

Esto no es tan elegante sin embargo. Solo necesitarías hacerlo de esta manera si quisieras un nombre de atributo dinámico.

+0

hermosa solución elegante gracias. – LeBlaireau

0

¿Algo como esto?

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