xsl online for else ejemplos choose xslt

xslt - online - xsl if else



Expresión XSLT para verificar si la variable pertenece al conjunto de elementos (2)

Si su procesador es compatible con XPath 2.0, entonces puede comparar $k a una secuencia como la siguiente:

<xsl:if test="$k = (7, 8, 9)">

Incluso podría utilizar el operador de rango en este caso particular:

<xsl:if test="$k = (7 to 9)">

No hay necesidad de un tipo explícito de conversión. Probado con Saxon-HE 9.8.0.12N (XSLT 3.0).

Ejemplo XML:

<?xml version="1.0" encoding="UTF-8"?> <root> <node>5</node> <node>6</node> <node>7</node> <node>9</node> <node>10</node> <node>79</node> <node>8</node> </root>

Hoja de estilo:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0"> <xsl:output method="xml" indent="yes"/> <xsl:template match="root"> <xsl:copy> <xsl:apply-templates select="node"/> </xsl:copy> </xsl:template> <xsl:template match="node"> <xsl:variable name="k" select="text()"/> <xsl:if test="$k = (7 to 9)"> <xsl:copy-of select="."/> </xsl:if> </xsl:template> </xsl:stylesheet>

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <root> <node>7</node> <node>9</node> <node>8</node> </root>

Tengo un código como este:

<xsl:if test="$k=''7'' or $k = ''8'' or $k = ''9''">

¿Hay alguna manera de poner esta expresión en una forma, como, por ejemplo, SQL

k IN (7, 8, 9)

Ty :)


XSLT / XPath 1.0:

<!-- a space-separated list of valid values --> <xsl:variable name="list" select="''7 8 9''" /> <xsl:if test=" contains( concat('' '', $list, '' ''), concat('' '', $k, '' '') ) "> <xsl:value-of select="concat(''Item '', $k, '' is in the list.'')" /> </xsl:if>

Puede usar otros separadores si es necesario.

En XSLT / XPath 2.0 podrías hacer algo como:

<xsl:variable name="list" select="fn:tokenize(''7 8 9'', ''/s+'')" /> <xsl:if test="fn:index-of($list, $k)"> <xsl:value-of select="concat(''Item '', $k, '' is in the list.'')" /> </xsl:if>

Si puede usar la estructura del documento para definir su lista, podría hacer:

<!-- a node-set defining the list of currently valid items --> <xsl:variable name="list" select="/some/items[1]/item" /> <xsl:template match="/"> <xsl:variable name="k" select="''7''" /> <!-- test if item $k is in the list of valid items --> <xsl:if test="count($list[@id = $k])"> <xsl:value-of select="concat(''Item '', $k, '' is in the list.'')" /> </xsl:if> </xsl:template>