我在伊斯兰会议组织中使用追加选项在一个循环中生成一个csv文件,因此每个循环的迭代都会写入同一个文件,其中包含一个rownum列,它是文件中的顺序记录号,我在XSLT中这样做的方式是:
<xsl:variable name="Counter">
<xsl:number level="any"/>
</xsl:variable>
<ns33:RowNum>
<xsl:value-of select="$Counter"/>
</ns33:RowNum>
或
<ns35:RowNum xml:id="id_286">
<xsl:value-of select="position ()"/>
</ns35:RowNum>
所发生的情况是,以一个循环中的10个记录为例,第一个循环中的rownum值为1 ..10,在第二个循环中。再来10次。在csv文件中,rownum列的值为1 .101 ..。10.我希望他们是1 ..。20.我很难弄清楚如何做到这一点。有什么想法吗?谢谢
发布于 2022-10-25 10:53:12
在伊斯兰会议组织中,XSLT中定义的变量将仅在XSLT的范围内维护。由于您希望在XSLT转换的不同迭代之间使用一致的数字,因此您将需要XSLT之外的一个变量。这个变量需要作为一个参数传入XSLT。
在伊斯兰会议组织级别(循环外)中声明1个变量,并将其设置为0。如前所述,它还作为参数传递给XSLT。
将变量名称为$externalCounter。填充RowNum的值如下所示
<ns33:RowNum>
<xsl:value-of select="$externalCounter + $Counter"/>
</ns33:RowNum>
在xslt转换之后,在循环中,将$externalCounter的值更新为XSLT 中RowNum的最大值。在您的情况下,最后节点集的值应该足够了。
$xsltOutput/..../RowNum[last()]
https://stackoverflow.com/questions/73898803
复制相似问题