如何在XSLT中重复元素

时间:2018-10-23 00:02:13

标签: xml xslt

我正在尝试执行XSLT以生成XML格式的Excel工作表。

输入XML

     <financials-as-of>10/22/2018</financials-as-of>
  <nobs>
    <nob>
      <label-nob>NOB 71</label-nob>
    </nob>
    <nob>
      <label-nob>NOB 70</label-nob>
    </nob>
  </nobs>

预期产量

 <Cell ss:MergeDown="0">
          <Data ss:Type="String">NOB 71</Data>
          <NamedCell ss:Name="LABEL_NOB">
          </NamedCell>
        </Cell>
 <Cell ss:MergeDown="0">
          <Data ss:Type="String">NOB 70</Data>
          <NamedCell ss:Name="LABEL_NOB">
          </NamedCell>
        </Cell>

XSLT

<xslo:template match="d:nob">

            <xsl:for-each select="//ss:Cell[ss:NamedCell/@ss:Name='LABEL_NOB'][1]">
                <!-- Copy the Row element -->
                <xslo:value-of select="d:label-nob"/>
            </xsl:for-each>
        </xslo:template>

如果输入的xml有两个项目,我已经重复了两次Cell值。

1 个答案:

答案 0 :(得分:-1)

跟随XSL为我工作,以获得期望的XML

<xsl:template match="/">
    <xsl:template>
            <Cells>
                <xsl:for-each select="data/nobs/nob">
                    <Cell MergeDown="0">
                        <Data Type="String">
                            <xsl:value-of select="label-nob" />
                        </Data>
                        <NamedCell Name="LABEL_NOB" />
                    </Cell>
                </xsl:for-each>
            </Cells>
    </xsl:template>
</xsl:template>

对于以下XML,

 <data>
    <financials-as-of>10/22/2018</financials-as-of>
    <nobs>
        <nob>
            <label-nob>NOB 71</label-nob>
        </nob>
        <nob>
            <label-nob>NOB 70</label-nob>
        </nob>
    </nobs>
</data>

希望您得到了预期的答案 谢谢