<xsl:variable name="sessionvalue">+xyz+</xsl:variable>
<xsl:variable name="controller">1</xsl:variable>
<xsl:for-each select="/Properties/Data/Datum[@Name='My DCR']/DCR/tip_of_the_week/targeted_content">
<xsl:variable name="dcrvalue"><xsl:value-of select="targeted_audiences"/></xsl:variable>
<span>controller: <xsl:value-of select="$controller"/></span>
<xsl:if test="$controller='1'">
<xsl:if test="contains($dcrvalue,$sessionvalue)">
<xsl:variable name="controller">0</xsl:variable>
<p><xsl:value-of select="tip_header"/></p>
</xsl:if>
</xsl:if>
</xsl:for-each>
我需要在一个成功包含测试的每个循环中出来。我看到xslt中存在中断,我们也不能对变量赋值。有没有人对此有任何建议?
答案 0 :(得分:0)
我需要在一个成功包含的每个循环中出来 测试
没有。您需要做的是测试至少有一个节点是否满足条件。不&#34;循环&#34;这是必要的。
我把&#34;循环&#34;在引号中,因为xsl:for-each
不是循环。
我无法阅读您的代码,但总的来说它看起来像这样:
<xsl:choose>
<xsl:when test="some/nodes[contains(sub-node, 'search-string')]">
<!-- do something -->
</xsl:when>
<xsl:otherwise>
<!-- do something else -->
</xsl:otherwise>
</xsl:choose>
可能会发生多个匹配,但我需要继续工作 第一场比赛。
如果这是你的目标,那么直接选择第一场比赛,例如:
<xsl:for-each select="some/nodes[contains(sub-node, 'search-string')][1]">
<!-- work on this node -->
</xsl:for-each>
再次,没有&#34;循环&#34;这是必要的。