【发布时间】:2014-06-04 01:03:22
【问题描述】:
我有一个 for each 循环和一个 for 循环下的 if 条件。如果 if 条件为真,我想每次都增加变量 i 的值。基于变量 i 的值,我想实现一些逻辑。下面是代码
<xsl:variable name="i" select="0"/>
<xsl:for-each select="Request/ModifyProductsAndPackages/NrcList/Nrc">
<xsl:variable name="typeIdNrcVar" select="TypeIdNrc"/>
<xsl:if test="count(/Request/WaiveNrcList/WaiveNrc/TypeIdNrc[text()=$typeIdNrcVar])=0">
<xsl:variable name="i" select="$i + 1"/>
<xsl:if test ="$i=1">
do something
</xsl:if>
</xsl:if>
</xsl:for-each/>
这里 i 的值不能增加。谁能建议我应该如何完成上述任务。感谢您的帮助。
下面是xml结构
<Request>
<ModifyProductsAndPackages>
<NrcList>
<Nrc>
<TypeIdNrc>14046</TypeIdNrc>
<ServiceInternalId>98602440</ServiceInternalId>
<ServiceInternalIdResets>0</ServiceInternalIdResets>
<ViewableOnly>1</ViewableOnly>
</Nrc>
<Nrc>
<TypeIdNrc>12002</TypeIdNrc>
<ServiceInternalId>98602440</ServiceInternalId>
<ServiceInternalIdResets>0</ServiceInternalIdResets>
<ViewableOnly>1</ViewableOnly>
</Nrc>
<Nrc>
<TypeIdNrc>13006</TypeIdNrc>
<ServiceInternalId>98602440</ServiceInternalId>
<ServiceInternalIdResets>0</ServiceInternalIdResets>
<ViewableOnly>1</ViewableOnly>
</Nrc>
<Nrc>
<TypeIdNrc>14098</TypeIdNrc>
<ServiceInternalId>98602440</ServiceInternalId>
<ServiceInternalIdResets>0</ServiceInternalIdResets>
<ViewableOnly>1</ViewableOnly>
</Nrc>
</NrcList>
</ModifyProductsAndPackages>
<WaiveNrcList>
<WaiveNrc>
<TypeIdNrc>12002</TypeIdNrc>
<ServiceInternalId>98602440</ServiceInternalId>
<ServiceInternalIdResets>0</ServiceInternalIdResets>
</WaiveNrc>
<WaiveNrc>
<TypeIdNrc>13256</TypeIdNrc>
<ServiceInternalId>98602440</ServiceInternalId>
<ServiceInternalIdResets>0</ServiceInternalIdResets>
</WaiveNrc>
<WaiveNrc>
<TypeIdNrc>14046</TypeIdNrc>
<ServiceInternalId>98602440</ServiceInternalId>
<ServiceInternalIdResets>0</ServiceInternalIdResets>
</WaiveNrc>
</WaiveNrcList>
</Request>
我想要达到的最终结果是NrcList = NrcList-WaiveNrcList。我想根据 TypeIdNrc、ServiceInternalId、ServiceInternalIdResets 排除匹配记录 下面是结果xml
<Request>
<NrcList>
<Nrc>
<TypeIdNrc>13006</TypeIdNrc>
<ServiceInternalId>98602440</ServiceInternalId>
<ServiceInternalIdResets>0</ServiceInternalIdResets>
<ViewableOnly>1</ViewableOnly>
</Nrc>
<Nrc>
<TypeIdNrc>14098</TypeIdNrc>
<ServiceInternalId>98602440</ServiceInternalId>
<ServiceInternalIdResets>0</ServiceInternalIdResets>
<ViewableOnly>1</ViewableOnly>
</Nrc>
</NrcList>
</Request>
另一种方法:
【问题讨论】:
-
您需要为此使用递归模板。请更详细地准确描述您想要实现的目标。你想增加什么变量?您打算如何离开循环(当所有元素都完成时?当
$i是某个值时?$i 是什么意思?) -
我想增加变量 i,如果 i 的值为 1,那么我想实现一些逻辑,否则做一些其他的逻辑
-
在 XSLT 中,不能修改变量。您为什么不编辑您的问题并更详细地解释您想要完成的什么 - 而不是您希望如何完成它。