XSL循环:<xsl:for-each

时间:2015-07-03 11:01:51

标签: xml loops xslt

=“”
             <Array>
                   <A>80361785</A>
                   <A>00001159</A>                 
                   <A>80361785-1</A>
                   <A>00001159-1</A>
                   <Checkbox>true</Checkbox>
                   <Checkbox>false</Checkbox>
                   <Checkbox>true</Checkbox>
                   <Checkbox>false</Checkbox>
                   ..........................
            </Array>


在这里,我需要使用xsl:for-each循环标记A和标记Checkbox [] - 复选框

尝试下面的代码,它打印出Array节点下的所有元素,包括复选框标签

                     xsl:for-each select="$Array/A"
                        input type="checkbox"
                             xsl:value-of select="."                                    
                        /input>
                    /xsl:for-each    
抱歉,我的预期输出堆栈流不允许我附加任何图像..但它应该像...                              A标签中的任何内容...它应该显示在屏幕上,就在它前面..应该显示一个复选框,                              即将进入&#34;复选框&#34;标签。                              大致绘制输出                              [刻度线 - 表示已检查] 80361785 [] 0001159 [刻度线 - 表示已检查] 80361785-1 [] 0001159-1

1 个答案:

答案 0 :(得分:0)

您可以使用position()xpath选择正确的Checkbox标签。要比较标记A的位置并选择具有此位置的复选框,请使用变量。

<xsl:for-each select="$Array/A">
  <input type="checkbox">
    <xsl:variable name="positionA" select="position()"/>
    <xsl:if test="../Checkbox[position()=$positionA][text()='true']">
      <xsl:attribute name="checked">true</xsl:attribute>
    </xsl:if>
    <xsl:value-of select="."/>
  </input>
</xsl:for-each>

如果您可以更改输入格式,请执行此操作。它不是非常类似于按位置对元素进行分组的XML。在一个标记中添加ID或组A和复选框。

最好的问候 马里奥