我有一个我正在接收的xml文件,我想使用xsl格式化它。但是要求是 抓住元素并按照我收到xml文件的顺序打印出来。 查看下面的示例,第一个特殊元素有一个order元素,然后下一个没有一个,第三个有一个。 所以我想要那样的输出。 谢谢你nAdvance
<main>
<submain>
<detail>
<specials>
<spec-qty>1</spec-qty>
<spec-desc> Receivable </spec-desc>
</specials>
<order>
<text>Test</text>
</order>
<specials>
<spec-qty>-1</spec-qty>
<spec-desc>Receivable1 </spec-desc>
</specials>
<specials>
<spec-qty>-1</spec-qty>
<spec-desc> Receivable2 </spec-desc>
</specials>
<order>
<text>Test2</text>
</order>
</detail>
</submain></main>
输出应为:
qty 1 Receivable order:Test qty -1 Receivable1 qty -1 Receivable2 order: Test2
感谢并抱歉以前未完成的代码
答案 0 :(得分:0)
您可以使用此模板:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="//detail/*[self::specials or self::order]"/>
</xsl:template>
<xsl:template match="specials">
<xsl:value-of select="concat('qty ', spec-qty, ' ')"/>
<xsl:value-of select="spec-desc"/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="order">
<xsl:value-of select="concat('order:', text, ' ')"/>
</xsl:template>
</xsl:stylesheet>
输出:
qty 1 Receivable order:Test qty -1 Receivable1 qty -1 Receivable2 order:Test2