Hi,

I would like to count all nodes "source" of "word" that start with the string "ABC".

I can have multiple "word" inside a the element "wordGrp", as in

entry/section/following-sibling::wordGrp/word/following-sibling::source

For-each-group and a following count(current-group()) did not work for me, the XSLT processor returned

"A sequence of more than one item is not allowed as the first argument"

So what I currently have is

<xsl:for-each select="entry/section/following-sibling::wordGrp/word/following-sibling::source">

<xsl:if test="starts-with(., 'ABC/')">
<xsl:value-of select="."/>
</xsl:if>

</xsl:for-each>

And this prints a list of elements which comply to the condition. But I am unable to count how many.

Thank you very much for your help,

Larry

Recommended Answers

All 3 Replies

You could either use the count() function or recursion. What have you tried so far?

Thanks for your answer.

I've tried a count :

<xsl:value-of select="count(starts-with(entry/section/following-sibling::wordGrp/word/following-sibling::source, 'ABC'))"/>

But then I get the message

"A sequence of more than one item is not allowed as the first argument"

I must admit I'm not confortable with the recursion. Could you post me some pseudo-code ?

Thanks.

If you provide an example of your XML document, I would be glad to show you how to use recursion to obtain the desired output.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.