2011-10-14 37 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]'是正确的。如果你缩写这个,你需要向读者解释为什么*在这种情况下*使用两个子表达式中的任何一个产生相同的结果。请编辑并改进您的答案。 –