Hubiera estado bien si hubieses puesto como es la estructura del archivo xml para poder ver cual es el problema exacto con la plantilla XSL.
Aun así, tal como lo veo el problema que tienes es sencillo,
la variable vopcion que creas no sirve de nada.
No puedes utilizar una variable para ello, porque la variable se crea en el momento en el que se ejecuta (no es una función a la que llamar).
Lo único que tienes que hacer es cambiar el
por
>
Este sería el código cambiado:
Código XML:
Ver original<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="bookstore/book">
<xsl:choose>
<xsl:when test="@category='web'">
<tr>
<td><xsl:value-of select="@category"/></td>
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="@cover"/></td>
<td><xsl:value-of select="title"/></td>
<td>
<xsl:for-each select="author">
<xsl:value-of select="."/>
<span>;</span>
</xsl:for-each>
</td>
<td><xsl:value-of select="year"/></td>
<td><xsl:value-of select="price"/></td>
</tr>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>