使用xslt对未分组的xml标记进行foreach循环

时间:2014-05-19 12:17:49

标签: xml xslt

按照我的要求,我不能把它们分组。请帮我找到解决方案

注意: xslt 1.0

XML

<item_title>item1</item_title>
<item_title>item2</item_title>
<item_title>item3</item_title>

<item_description>description1</item_description>
<item_description>description2</item_description>
<item_description>description3</item_description>

需要输出:

 <div class="item">
    <div class="item_title">item1</div>
    <div class="item_content">description1</div>
 </div>
 <div class="item">
    <div class="item_title">item2</div>
    <div class="item_content">description2</div>
 </div>
 <div class="item">
    <div class="item_title">item3</div>
    <div class="item_content">description3</div>
 </div>

我尝试了什么:

<xsl:for-each select="item_title">
    <div class="item">
        <div class="item_title">
           <xsl:value-of select="item_title[position()]"/> 
        </div>
        <div class="item_content">
            <xsl:value-of select="item_description[position()]"/> 
        </div>
    </div>
</xsl:for-each>

1 个答案:

答案 0 :(得分:0)

我找到了自己的方式,根据我的要求,我找到了更好的方法:

调用迭代函数:

<xsl:call-template name="iterative">
    <xsl:with-param name="num" select="1" />
    <xsl:with-param name="count" select="count(item_title)" />
</xsl:call-template>

宣布模板:

<xsl:template name="iterative">
<xsl:param name="num" />
<xsl:param name="count" />
<xsl:if test="not($num = $count+1)">
    <div class="item">
        <div class="item_title">
           <span class="icon_plus">+</span>
           <span class="icon_minus">–</span>
           <xsl:value-of select="item_title[$num]"/> 
        </div>
        <div class="item_content">
            <xsl:value-of select="item_description[$num]"/> 
        </div>
    </div>
    <xsl:call-template name="iterative">
        <xsl:with-param name="num" select="$num + 1" />
        <xsl:with-param name="count" select="$count" />
    </xsl:call-template>
</xsl:if>