XSL 1.0:使用节点名称的特定开头计算Nods

时间:2016-08-12 09:52:56

标签: xslt xslt-1.0

我需要计算XML文件的点头数。点头都是以特定字符('S')开头的。我如何计算所有那些以'S'开头的点头。

例如我有这个文件

<root>
    <G_Group1>
        <S_DAS>
            <D_Name>Boot</D_Name>
            <D_Speed>10</D_Speed>
        </S_DAS>
        <S_GRU>
            <D_Name>Bike</D_Name>
            <D_Speed>3</D_Speed>
        </S_GRU>
        <G_HEL>
            <S_LOR>
                <D_Color1>Green</D_Color1>
                <D_Color2>Blue</D_Color2>
            </S_LOR>
        </G_HEL>
    </G_Group1>
    <G_Group2>
        <S_HUZ>
            <D_Name>Boot</D_Name>
            <D_Speed>10</D_Speed>
        </S_HUZ>
        <S_HUZ>
            <D_SPE>Bike</D_SPE>
        </S_HUZ>
        <S_LIL>
            <D_BER>Green</D_BER>
            <D_KLA>Blue</D_KLA>
        </S_LIL>
    </G_Group2>
</root>

在这种情况下,我会算6.。

S_DAS, S_GRU, S_LOR, S_HUZ, S_HUZ, S_LIL

有人可以帮助我吗?

提前致谢 弗洛里安

2 个答案:

答案 0 :(得分:1)

要计算名称以“S”开头的元素,您可以使用:

count(//*[starts-with(name(), 'S')])

答案 1 :(得分:0)

像这样算:

<xsl:template match="/">
   <xsl:value-of select="count(descendant::*[substring(name(),1,1)='S'])"/>
</xsl:template>