2

我有一个格式为:<

G>
 <P>
  <A>
    <b>value b</b>
    <c>value c</c>
   </A>
   <A>
    <b>value b2</b>
    <c>value c2</c>
   </A>
  <D>value e</D>
  <E>value f</E>
 </P>
</G>

有很多标签,如“A”,可能会出现多次。问题是,如果 A 在 CSV 中输出一次出现,因此 xl 表(导出数据的地方)是:
column1 column2 column3 column4
value b value c value e value f

如果 A 在 xl 中出现两次输出,则为

column1 column2 column3 column4
value b value c value b2 value c2 value e value f

我希望它作为
column1 column2 column3 column4
value b value c value e value f
value b2 value c2 value e value f

为了制作 csv,我有这样的 xslt 代码:

 <xsl:value-of select="G/P/A"/>
    <xsl:text>,</xsl:text>
  <xsl:value-of select="D"/>
    <xsl:text>,</xsl:text>
  <xsl:value-of select="E"/>
    <xsl:text>,</xsl:text>
4

1 回答 1

1

这会给你你想要的,虽然不会检查你的格式是否与你所说的不同

<xsl:for-each select="//A">
    <xsl:value-of select="b"/>
    <xsl:text>,</xsl:text>
    <xsl:value-of select="c"/>
    <xsl:text>,</xsl:text>
    <xsl:value-of select="ancestor::P/D"/>
    <xsl:text>,</xsl:text>
    <xsl:value-of select="ancestor::P/E"/>
    <xsl:text>  
</xsl:text>
</xsl:for-each>

并测试多行:

    <G>
        <P>
            <A>
                <b>value b</b>
                <c>value c</c>
            </A>
            <A>
                <b>value b2</b>
                <c>value c2</c>
            </A>
            <D>value e</D>
            <E>value f</E>
        </P>
        <P>
            <A>
                <b>value bx</b>
                <c>value cx</c>
            </A>
            <A>
                <b>value b2x</b>
                <c>value c2x</c>
            </A>
            <D>value ex</D>
            <E>value fx</E>
        </P>
    </G>

给出一个输出

value b,value c,value e,value f  
value b2,value c2,value e,value f  
value bx,value cx,value ex,value fx  
value b2x,value c2x,value ex,value fx  
于 2012-07-09T10:51:33.173 回答