我的请求包含一些结构如下所示的元素:
<Request>
<Other>
...
</Other>
<Qualifiers>
<Options>
<Segment Number="1"/>
</Options>
<Offer>
<Column ColumnNumber="2.1"/>
<Record Number="2"/>
</Offer>
<Offer>
<Column ColumnNumber="1.1"/>
<Column EndColumnNumber="4.1" ColumnNumber="3.1"/>
<Record Number="1"/>
</Offer>
<Offer>
<Column ColumnNumber="5.1"/>
<Record Number="3"/>
</Offer>
<Fare>
<Basis>ABCDE</Basis>
</Fare>
</Qualifiers>
<Other>
...
</Other>
</Request>
从这个有效载荷中,我需要在每次调用中使用单个Offer元素执行3个单独的请求。其余的请求应该在没有更改的情况下被复制,因此对于first Offer,我的请求应该是这样的:
<Request>
<Other>
...
</Other>
<Qualifiers>
<Options>
<Segment Number="1"/>
</Options>
<Offer>
<Column ColumnNumber="2.1"/>
<Record Number="2"/>
</Offer>
<Fare>
<Basis>ABCDE</Basis>
</Fare>
</Qualifiers>
<Other>
...
</Other>
</Request>
第二个和第三个类似于第二个和第三个Offer元素。
我使用Camel,所以我尝试在循环中提供XSLT参数,该参数是应该留下的元素的索引。所以,我试过了:
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="/Request/Qualifiers/Offer[not($MY_IDX)]"/>
为$MY_IDX
提供索引。经过一些搜索,我意识到它不起作用,因为not()
函数接受并只返回布尔值。
有没有其他方法来存档我的目标?
答案 0 :(得分:1)
而不是
<xsl:template match="/Request/Qualifiers/Offer[not($MY_IDX)]"/>
使用
<xsl:template match="/Request/Qualifiers/Offer[position() != $MY_IDX]" />
除了Offer
之外的所有位置都由$MY_IDX
取消。