我正在尝试使用XSLT迭代一个数组,以获得如下所示的最终文本:
array1.firstElement
array1.secondElement
我在XSLT中有这个:
<xsl:param name="nombreEmpresaDebe" />
我把它放在我的变换方法中:
transformer.setParameter("nombreEmpresaDebe", listaNombreEmpresaDebe);
renglones/reglon
是我的节点的名称,我已经使用以下代码迭代它:
<xsl:for-each select='renglones/renglon'>
<label>
<xsl:value-of select="rubro" />
</label>
<label>
<xsl:value-of select="$nombreEmpresaDebe"/>
</label>
<xsl:for-each>
现在我必须获得$nombreEmpresaDebe
个java.util.List
元素,但我不知道在同一个for-each中执行它。有谁知道怎么做?
我需要这样的东西:
<renglon1>
<rubro>rubro1</rubro>
<nombreEmpresaDebe>firstElement</nombreEmpresaDebe>
</renglon1>
<renglon2>
<rubro>rubro2</rubro>
<nombreEmpresaDebe>secondElement</nombreEmpresaDebe>
</renglon2>
答案 0 :(得分:0)
您可以通过调用递归模板来实现。例如
<xsl:call-template name="outputList">
<xsl:with-param name="list" select="$nombreEmpresaDebe"/>
<xsl:with-param name="index" select="0"/>
</xsl:call-template>
模板的定义方式
<xsl:template name="outputList">
<xsl:param name="list"/>
<xsl:param name="index"/>
<xsl:if test="number($index) < java:size($list)">
<label>
<xsl:value-of select="$nombreEmpresaDebe"/>
</label>
<xsl:call-template name="outputList">
<xsl:with-param name="list" select="$list"/>
<xsl:with-param name="index" select="number($index)+1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
我应该注意,我的答案并未将此与您正在处理的其他节点列表的迭代结合在一起,但这是可以与之结合的基本列表迭代技术。另外,我意识到这已经晚了3年了,但是我其他人发现了这个问题并从回答中受益。