në një transformim xsl, unë jam duke përdorur një sërë deklaratash if për të reaguar ndaj shfaqjeve të segmenteve në një dokument xml. Një për-secili nuk është i përshtatshëm në këtë situatë.
Sa herë që deklarata nëse është e vërtetë, 1 duhet të shtohet në numërues (i_prop + 1) dhe një segment me vlerën e numëruesit duhet të shtohet në dalje. Si në shembullin e mëposhtëm
POR duket se ndryshorja mund të modifikohet në deklaratën if, por jo në një mënyrë "globale". Pas deklaratës ndryshorja ka vlerën fillestare si më parë për deklaratën if.
A ka ndonjë mënyrë për të përdorur variablin e modifikuar në deklaratën e ardhshme if. Dhe pse xsl po bën këtë lloj gjëje?
XSL_INPUT:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<!-- Create variable -->
<xsl:variable name="i_prop" select="0"/>
<test><xsl:value-of select="$i_prop"/></test>
<!-- +1 global -->
<xsl:variable name="i_prop" select="$i_prop + 1"/>
<test><xsl:value-of select="$i_prop"/></test>
<!-- +1 global -->
<xsl:variable name="i_prop" select="$i_prop + 1"/>
<test><xsl:value-of select="$i_prop"/></test>
<!-- +1 in if | FALSE -->
<xsl:if test="'A' = 'X'"><testif1><xsl:value-of select="$i_prop"/></testif1></xsl:if>
<!-- +1 in if | TRUE -->
<xsl:if test="'A' != 'X'"><xsl:variable name="i_prop" select="$i_prop + 1"/><testif2><xsl:value-of select="$i_prop"/></testif2></xsl:if>
<!-- +1 in if | TRUE -->
<xsl:if test="'A' != 'X'"><xsl:variable name="i_prop" select="$i_prop + 1"/><testif3><xsl:value-of select="$i_prop"/></testif3></xsl:if>
<!-- +1 global -->
<xsl:variable name="i_prop" select="$i_prop + 1"/>
<test><xsl:value-of select="$i_prop"/></test>
<!-- +1 in if | TRUE -->
<xsl:if test="'A' != 'X'"><xsl:variable name="i_prop" select="$i_prop + 1"/><testif4><xsl:value-of select="$i_prop"/></testif4></xsl:if>
<!-- +1 in if | TRUE -->
<xsl:if test="'A' != 'X'"><xsl:variable name="i_prop" select="$i_prop + 1"/><testif5><xsl:value-of select="$i_prop"/></testif5></xsl:if>
</xsl:template>
</xsl:stylesheet>
dalja:
<test>0</test>
<test>1</test>
<test>2</test>
<testif2>3</testif2>
<testif3>3</testif3>
<test>3</test>
<testif4>4</testif4>
<testif5>4</testif5>
expected:
<test>0</test>
<test>1</test>
<test>2</test>
<testif2>3</testif2>
<testif3>4</testif3>
<test>5</test>
<testif4>6</testif4>
<testif5>7</testif5>
Faleminderit
Matias