如何获取每个父元素的子节点数

时间:2015-06-08 11:24:08

标签: css xml xslt

Source XML 

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <parent1>
        <child1>P1-Child-01</child1>
        <child2>P1-Child-02</child2>
    </parent1>
    <parent2>
        <child3>P2-Child-03</child3>
        <child4>P2-Child-04</child4>
        <child5>P2-Child-05</child5>
    </parent2>
    <parent3>
        <child6>P2-Child-03</child6>
        <child7>P2-Child-04</child7>
    </parent3>
</root>

Required output 
<root>
    <parent1>
        <cld1>P1-Child-01</cld1>
        <cld2>P1-Child-02</cld2>
    </parent1>
    <parent2>
        <cld3>P2-Child-03</cld3>
        <cld4>P2-Child-04</cld4>
    </parent2>
</root>

我尝试使用以下逻辑创建XSLT: 1.它将获得父元素的数量 2.基于每个父元素的那个,我想得到子元素的数量,并基于字符串concat(chld,$ index)我想创建新的元素 即
替换

    <child1>P1-Child-01</child1>


     <cld4>P2-Child-04</cld4>

但我不知道如何获得每个父母的子元素数 当前的Xslt

<xsl:template match="/">
 <xsl:call-template name="parentforloop"></xsl:call-template>   
</xsl:template>

<xsl:template name="parentforloop" > 
    <xsl:param name="index" select ="1" />
    <xsl:param name="total" select="count(/*/*)"/>
    <xsl:param name="parentName" select="concat('parent',$index)"/>

            <xsl:element name="{concat('parent',$index )}">

            </xsl:element>


        <xsl:if test="not($index=$total)">
            <xsl:call-template name="parentforloop">
                <xsl:with-param name="index" select="$index+1"></xsl:with-param>
            </xsl:call-template>
        </xsl:if>
</xsl:template>

请帮忙

谢谢你

0 个答案:

没有答案