Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT如何使用XALAN迭代Java列表_Java_Arrays_Xml_Xslt - Fatal编程技术网

XSLT如何使用XALAN迭代Java列表

XSLT如何使用XALAN迭代Java列表,java,arrays,xml,xslt,Java,Arrays,Xml,Xslt,我尝试使用XSLT迭代数组,以获得如下所示的最终文本: array1.firstElement array1.secondElement <renglon1> <rubro>rubro1</rubro> <nombreEmpresaDebe>firstElement</nombreEmpresaDebe> </renglon1> <renglon2> <rubro>r

我尝试使用XSLT迭代数组,以获得如下所示的最终文本:

array1.firstElement

array1.secondElement
 <renglon1>
    <rubro>rubro1</rubro>
    <nombreEmpresaDebe>firstElement</nombreEmpresaDebe>
 </renglon1>
 <renglon2>
    <rubro>rubro2</rubro>
    <nombreEmpresaDebe>secondElement</nombreEmpresaDebe>
 </renglon2>
我的XSLT中有以下内容:

<xsl:param name="nombreEmpresaDebe" />
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>

您可以通过调用递归模板来实现这一点。比如说

<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年,但其他人发现了这个问题,并从中受益。

您可以通过调用递归模板来实现这一点。比如说

<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年,但其他人发现了这个问题并从中受益。

您到底使用哪种XSLT处理器,它的文档是否建议您可以将Java
Java.util.List
对象作为参数传递,然后解释它们如何在XSLT中公开?我使用的是XALAN,但是我没有找到任何关于这方面的信息。您到底使用哪种XSLT处理器,它的文档是否建议您可以将Java
Java.util.List
对象作为参数传递,然后它是否解释了它们是如何在XSLT中公开的?我使用的是XALAN,但我没有找到任何关于这方面的信息。