【问题标题】:XSL Looping : <xsl:for-eachXSL 循环:<xsl:for-each
【发布时间】:2015-07-06 21:19:53
【问题描述】:
            <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标签中的任何内容......它应该显示在屏幕上并且就在它的前面......应该显示一个复选框, 这是在“复选框”标签中出现的。 粗略绘制输出 [勾号 - 表示选中]80361785 []0001159 [勾号 - 表示选中]80361785-1 []0001159-1

【问题讨论】:

  • 您的问题不清楚。请发布您的预期输出作为代码并解释困难是什么。
  • 抱歉不能粘贴我的预期输出.. 它应该是......无论出现在 A 标签中......它应该显示在屏幕上,就在它的前面。 . 应该显示一个复选框,它是“复选框”标签。粗略画出输出[]80361785 []0001159 []80361785-1 []0001159-1
  • 所以对于第一个标签 A 是 80361785 ,第一个复选框是真的..所以它应该被选中......但我在这里面临的问题是..不能循环复选框值反对 A标签。
  • 请不要在 cmets 中发布代码 - 而是编辑您的问题。

标签: xml loops xslt


【解决方案1】:

您可以使用 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 和 Checkbox。

最好的问候 马里奥

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多