RE: [xsl] counting nodes question

Subject: RE: [xsl] counting nodes question
From: "Philip Vallone" <philip.vallone@xxxxxxxxxxx>
Date: Sun, 26 Nov 2006 09:02:14 -0500
J,

Thanks for the help. I apologize for not explaining better, however you
nailed it. Your suggestion work perfect. My mistake was not the counting,
but rather using "&gt;" instead of ">" - Basic XSLT 101. 

As for why I am using position:absolute; well I had to figure out how to get
the following desired results in HTML:

NOTE: TEXT xxxxxxxxx
	Xxxxxxxxxxxxxx
	xxxxxxxxxxTEXT

CAUTION: TEXTXXXXXXX
	   XXXXXXXXXXX
         xXXXXXXTEXT

It works as advertised, however if you know of a better way, let me know. My
colleague and I messed with that for two days. Once we figured out the HTML
output, XSL-FO was another story. Both of which are working.

Any thoughts or suggestion?

Regards

Phil


-----Original Message-----
From: J.Pietschmann [mailto:j3322ptm@xxxxxxxx] 
Sent: Sunday, November 26, 2006 8:09 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] counting nodes question

Philip Vallone wrote:
> I have a "NOTE" element that lets the author add notes and automatically
> counts the Note number. I am trying to figure out when there is only one
> note element, it doesn't use the <xsl:number>. I tried xsl:if, xsl:choose
> and xsl:when. I keep getting hung up on determining if the count is
greater
>> 1.

I don't completely understand your requirement, so I assume
you want to print a number only if there are two or more NOTE
elements. Using the count() function shoudl do the trick, for
example the following (changed some stuff to match the source
XML you provided):

  <xsl:template match="Para">
    <xsl:for-each select="NOTE">
      <xsl:text>NOTE: </xsl:text>
      <xsl:if test="count(../NOTE) &gt; 1">
        <xsl:number level="single" format="1" count="NOTE"/>
        <xsl:text> </xsl:text>
      </xsl:if>
      <span style="width:100%; font-weight:bold; padding-left:70px; ">
       <xsl:apply-templates/>
      </span>
      <br/>
    </xsl:for-each>
  </xsl:template>

BTW both your resulting HTML and CSS are somewhat odd, for example the
position:absolute" for the prefix, and using HTML spans followed by a br
instead of a proper paragraph.

J.Pietschmann

Current Thread