【问题标题】:xsl using xml to text formatxsl 使用 xml 转文本格式
【发布时间】:2015-08-31 10:46:20
【问题描述】:

我正在尝试通过使用 xsl 将 xml 转换为文本格式,但我得到了输出,但有些 dono 来调整值

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 新手,如何实现这种格式

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    为了达到您想要的输出,您应该删除第二个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 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 2013-05-09
      相关资源
      最近更新 更多