我试图通过使用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> </xsl:text>
</xsl:for-each>
<xsl:for-each select="xx/yy/aa">
<xsl:apply-templates select="@value"/><xsl:text> </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的新手,如何实现这种格式
答案 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> </xsl:text>
</xsl:for-each>
注意我已将第二个输出中的select
更改为aa/@value
,以获取子节点aa
值。