XSLT如何使用XALAN获取数组值

时间:2017-01-30 11:14:59

标签: java arrays xml xslt

我正在尝试使用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>

现在我必须获得$nombreEmpresaDebejava.util.List元素,但我不知道在同一个for-each中执行它。有谁知道怎么做?

我需要这样的东西:

 <renglon1>
    <rubro>rubro1</rubro>
    <nombreEmpresaDebe>firstElement</nombreEmpresaDebe>
 </renglon1>
 <renglon2>
    <rubro>rubro2</rubro>
    <nombreEmpresaDebe>secondElement</nombreEmpresaDebe>
 </renglon2>

1 个答案:

答案 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) &lt; 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年了,但是我其他人发现了这个问题并从回答中受益。