Re: [xsl] Counting non-empty elements

Subject: Re: [xsl] Counting non-empty elements
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Wed, 13 Mar 2002 16:59:01 +0000
Hi Sergej,

> I'd like to write a number near non-empty descriptions as shown in
> the following code:
>
> <xsl:template match="itemSet">
>   <tr>
>     <td>
>       <xsl:if test="normalize-space(itemDesc)">
>         <xsl:number level="multiple" format="1. "/>
>         <xsl:value-of select="itemDesc"/>
>       </xsl:if>
>     </td>
>     <td>....</td>
>   </tr>
>   ....
> </xsl:template>
>
> The problem is that also the empty elements are taken into account
> even if the number does not appear.

When you use xsl:number with an element as the current node, by
default it counts all the elements that have the same name as the
current element. You can tell the processor to only count certain
elements by creating a pattern for those elements within the count
attribute of xsl:number. If you want it to only count itemSet elements
that have a non-empty itemDesc element child, then you can use the
pattern:

  itemSet[normalize-space(itemDesc)]

So you can number them with:

  <xsl:number level="multiple" format="1. "
              count="itemSet[normalize-space(itemDesc)]" />

By the way, I'm assuming that you do want to use level="multiple" and
that itemSet elements that you're interested in at every level should
have text within their itemDesc children.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread