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>
Vous pouvez utiliser d'autres séparateurs si nécessaire.
Dans XSLT/XPath 2.0, vous pouvez faire quelque chose comme:
<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 vous pouvez utiliser la structure du document pour définir votre liste, vous pouvez faire:
<!-- 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>
Ty m8. Son overkill pour un scénario simple comme je l'ai mais c'est OK pour les longues listes ... Je suis plus sautillante que xpath a une forme de solution intégrée .... – majkinetor
Pas XPath 1.0 - lorsque vous ne pouvez pas utiliser des ensembles de nœuds pour résoudre votre problème que vous êtes à des fonctions de chaîne ou peut-être une fonction d'extension. Les séquences de XPath 2.0 rendent les choses plus faciles dans tous les cas. – Tomalak
Ty Tomalak :). – majkinetor