Dans le code pseudoComment puis-je faire une en option liste
If Domain inList(GB,US,ES,FR Then
Print This Html
Else
Print This HTML
EndIf
Dans le code pseudoComment puis-je faire une en option liste
If Domain inList(GB,US,ES,FR Then
Print This Html
Else
Print This HTML
EndIf
C'est un très forme générale, mais où vous ne connaissez pas la liste à temps de conception, aussi longtemps que vous pouvez obtenir une référence à un nodeset qui représente la liste que vous pouvez faire un test simple comme:
<xsl:when test="$listset/item[@property=$variable]">
où dire la variable $ =/foo/bar/@ propriété et $ ListSet =/foo/liste XML
<?xml version="1.0"?>
<foo>
<bar property="gb" />
<list>
<item property="gb"/>
<item property="us"/>
</list>
</foo>
Essayez d'utiliser le xsl:choose. (Voir aussi the spec here) Il fournit une base si/fonctionnalité autre. EDIT- je l'ai fait tester et il fonctionne:
<xsl:choose>
<xsl:when test="domain = 'GB' or domain = 'US' or domain = 'ES' or domain = 'FR'">
print this html
</xsl:when>
<xsl:otherwise>
print other html
</xsl:otherwise>
</xsl:choose>
Si vous utilisent XSLT 2.0 étant donné le fichier
Vous pouvez utiliser quelque chose comme ceci:
<xsl:template match="list/item">
Property [<xsl:value-of select="@property"/>] html
</xsl:template>
<xsl:template match="list/item[some $x in ('us', 'gb') satisfies $x eq @property ]">
Property [<xsl:value-of select="@property"/>] HTML
</xsl:template>
Une autre solution, non mentionné par les 3 actuelles réponses est d'avoir une chaîne de les options par rapport auxquelles vous comparez la valeur de domain
. Puis l'expression XPath suivante (dans l'attribut de @test
soit <xsl:if>
ou <xsl:when>
évalue à true()
exactement quand la valeur de domain
est l'une des valeurs délimitées dans la chaîne (nous utilisons un espace pour delimiter dans cet exemple concret):
contains(' GB US ES ', concat(' ', domain, ' '))
nous supposons ici qu'il n'y a pas d'espace dans la valeur de domain
Si cela ne peut pas être garantie, l'expression XPath peut également vérifier cette exigence.
not(contains(domain, ' '))
and
contains(' GB US ES ', concat(' ', domain, ' '))