2011-10-14 73 views
4

我有類似這樣XSL 1.0如何在同一時間

<a> 
    <b>text1</b> 
    <b>text2</b> 
    <b>text3</b> 
    ..... 
    .... 
</a> 

這是一個XML div標籤添加到兩個元素/文本的輸出需要

<div>text1 text2</div> 
<div>text3 text4</div> 

增加對所有包裹的div使用xsl foreach,文本或爲每個文本添加單獨的div很容易。如何在需要爲一次2個文本添加div的情況下完成上述要求?

回答

4
<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="a/b[position() mod 2 = 1]"/> 
    </xsl:template> 

    <xsl:template match="b"> 
    <div> 
     <xsl:value-of select="concat(., ' ', following-sibling::b)"/> 
    </div> 
    </xsl:template> 

</xsl:stylesheet> 
+0

感謝您的快速幫助 – gechu

+0

@gechu,不客氣! –

+0

@KirillPolishchuk:停止產生不準確和令人困惑的答案。編寫'following-sibling :: b [1]'是正確的。如果你縮寫這個,你需要向讀者解釋爲什麼*在這種情況下*使用兩個子表達式中的任何一個產生相同的結果。請編輯並改進您的答案。 –