2011-08-22 6 views
1

나는 xml 파일을 받고 있는데 xsl을 사용하여 형식을 지정하려고합니다. 그러나 요구 사항은 요소를 가져 와서 순서대로 인쇄합니다. XML 파일을 수신하십시오. 첫 번째 특수 요소 아래의 샘플을 보면 주문 요소가 있고 다음 요소에는 하나가없고 세 번째 요소에는 하나가 있습니다. 그래서 정확하게 출력하고 싶습니다. 덕분에 내가 모든 요소를 ​​일치시키고 원래의 순서대로 인쇄하는 방법

<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> 

출력이 있어야 할

을 nAdvance : 이전되지 않은 코드에 대한

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 Kirill 나는 그것을 시도하고 그것이 어떻게 tommorow가되는지 보았습니다. – naijacoder

관련 문제