xsl使用xml到文本格式

时间:2015-08-31 10:46:20

标签: xml xslt

我试图通过使用xsl将xml转换为文本格式我得到了输出但是有些人要调整值

的xml:

<xx>
    <yy id="1">
        <aa value="1"/>
    </yy>
    <yy id="2">
        <aa value="1"/>
    </yy>
    <yy id="3">
        <aa value="11"/>
    </yy>
    </xx>

xsl:

<xsl:stylesheet version="1.0"  
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

      <xsl:text>Id</xsl:text><xsl:text>     </xsl:text>Number 

     <xsl:for-each select="xx/yy">
      <xsl:apply-templates select="@id"/><xsl:text>&#10;</xsl:text>
     </xsl:for-each>


     <xsl:for-each select="xx/yy/aa">
       <xsl:apply-templates select="@value"/><xsl:text>&#10;</xsl:text>
     </xsl:for-each>

</xsl:template>

</xsl:stylesheet> 

输出是:

id      number

1
2
3
1 1 11

但是被淘汰了

id      number

1        1
2        1
3        11

我是xslt的新手,如何实现这种格式

1 个答案:

答案 0 :(得分:0)

为了获得所需的输出,你应该删除第二个for-each循环并将值的输出移动到第一个循环中。

所以你的循环应该是这样的:

<xsl:for-each select="xx/yy">
    <xsl:apply-templates select="@id"/>
    <xsl:text>    </xsl:text>
    <xsl:apply-templates select="aa/@value"/>
    <xsl:text>&#10;</xsl:text>
 </xsl:for-each>

注意我已将第二个输出中的select更改为aa/@value,以获取子节点aa值。