2011-08-22 48 views
1

我收到了一個xml文件,我想使用xsl格式化它,但要求是 抓取元素並按順序將其打印出來接收xml文件。 看下面的例子,第一個特殊元素有一個訂單元素,然後下一個沒有一個,第三個有一個。 所以我想要的輸出就是這樣。 感謝我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 

感謝和抱歉先前未完成代碼

+1

根據您的輸入提供示例輸出。 –

回答

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, '&#xA0;')"/> 
     <xsl:value-of select="spec-desc"/> 
     <xsl:text>&#xA0;</xsl:text> 
    </xsl:template> 

    <xsl:template match="order"> 
     <xsl:value-of select="concat('order:', text, '&#xA0;')"/> 
    </xsl:template> 

</xsl:stylesheet> 

歐輸入:

qty 1  Receivable  order:Test qty -1 Receivable1  qty -1    Receivable2  order:Test2 
+0

Thx基里爾我會試試看看它是如何去明天 – naijacoder