2010-08-19 26 views
6

Tengo algunos datos XML que incluyen URI. Quiero enumerar los URI en una página ASP, pero también hacer que se puedan hacer clic usando las etiquetas <a>. Sin embargo XSLT no permite incrustar un comando XSL dentro de una etiqueta, por ejemplo:Incrustar código XSL dentro de una etiqueta <a>

<xsl:for-each select="//uri"> 
    <tr> 
    <td class="tdDetail"> 
     More information 
    </td> 
    <td> 
     <a href="<xsl:value-of select="." />" alt="More information" target=_blank><xsl:value-of select="." /></a> 
    </td> 
    </tr> 
</xsl:for-each> 

¿Cómo puedo incluir la dirección URL en la etiqueta <uri> después del código <a href="?

Respuesta

11

Utilice the <xsl:attribute> element para tener un atributo no fijo.

<a alt="More information" target="_blank"> 
    <xsl:attribute name="href"> 
    <xsl:value-of select="." /> 
    </xsl:attribute> 
    <xsl:value-of select="." /> 
</a> 

Editar: Como otros han mencionado, también es posible el uso de attribute value templates:

<a href="{.}" alt="More information" target="_blank"> 
    <xsl:value-of select="." /> 
</a> 
+0

Fantástico, muchas gracias. – NickM

4

Además de utilizar < xsl: attribute> (mencionado en la respuesta de KennyTM) se también es posible utilizar la notación abreviada "{}" cuando se trabaja con atributos:

<a href="{.}"><xsl:value-of select="." /></a> 
+0

También es muy útil saber. Aclamaciones. – NickM

5

Uso:

<a href="{.}" alt="More information" target="_blank"> 
    <xsl:value-of select="." /> 
</a> 

Intente utilizar AVTs (atributo-valor-templates) siempre que sea posible (en todos los atributos excepto un atributo select). Esto hace que el código sea más corto y mucho más legible.

Cuestiones relacionadas