【问题标题】:loop through xslt when we havemultiple elements当我们有多个元素时循环通过 xslt
【发布时间】:2017-03-15 22:51:09
【问题描述】:

如果有多个重复项,我想循环一个 XML 并创建记录,如下所示。我应该在表中为每个主人添加 4 条新记录,例如 a 123、b 123 等。我的输出应该如下所示

a|123
b|123
c|123
d|123

<item>
<master>123</master>
<child1>a</child1>
<child2>b</child2>
<child3>c</child3>
<child4>d</child4>
</item>

我试过下面的代码

         <xsl:for-each select="//item">                
            <Row Action="ADD">
              <xsl:value-of select="current()/child1" />|<xsl:value-of  select="current()/master" />
            </Row>
            </xsl:if>
          </xsl:for-each>  

【问题讨论】:

  • “重复”是什么意思?没有重复的元素,因为item 的每个子元素都有一个唯一的名称。此外,出于说明目的,请将您所需的输出添加到问题中。最后,你没有 10 个元素......
  • 请提供一些代码来证明您为解决这个问题所做的努力。
  • 我已经更新了我的问题

标签: xml xslt foreach


【解决方案1】:

如果您的上下文是item,您应该能够遍历不是master 的每个子节点。

示例...

XML 输入

<item>
    <master>123</master>
    <child1>a</child1>
    <child2>b</child2>
    <child3>c</child3>
    <child4>d</child4>
</item>

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="item">
    <xsl:for-each select="*[not(self::master)]">
      <xsl:value-of select="concat(.,'|',../master,'&#xA;')"/>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

输出

a|123
b|123
c|123
d|123

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 2021-11-19
    相关资源
    最近更新 更多