Re: [xsl] Counting nodes processed

Subject: Re: [xsl] Counting nodes processed
From: "cutlass" <cutlass@xxxxxxxxxxx>
Date: Mon, 4 Mar 2002 16:39:17 -0000
et viola;


<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

 <xsl:template match="/root">

   <xsl:for-each select="category/topic">


   <xsl:if test="position() =1 ">
   <xsl:value-of select="parent::*/@value"/>
   </xsl:if>

   <xsl:if test="position() &lt; 8">
     <xsl:value-of select="@value"/>
   </xsl:if>

   </xsl:for-each>

 </xsl:template>

 </xsl:stylesheet>

and yes, it is bad to use // as it searches the all nodes for a match, but i
didnt know if u wanted all topics, etc

cheers, jim fuller


----- Original Message -----
From: "JAY SCHERER" <jay.scherer@xxxxxxxxxx>
To: "'cutlass'" <cutlass@xxxxxxxxxxx>
Sent: Monday, March 04, 2002 4:36 PM
Subject: RE: [xsl] Counting nodes processed


> Jim,
>
> I'm talking about the total number of topics, not the number per category.
I was actually getting the correct number in the 1st example you sent me,
but when we introduced the ability to print the category, that's when we ran
into troubles.
>
> Jay
>
> -----Original Message-----
> From: cutlass [mailto:cutlass@xxxxxxxxxxx]
> Sent: Monday, March 04, 2002 10:25 AM
> To: JAY SCHERER
> Subject: Re: [xsl] Counting nodes processed
>
>
> it depends on what *number* topics u are going from; as a total number of
> topics, or a number of topics per category.
>
> of course this has to do with what context the current node is in, which
is
> why things start getting strange when u introduce templates, u could
easily
> nest an xsl:for-each if u wanted....
>
> or there are much spiffier ways of doing it by using a named template and
> pass the a var that represents #_of_topics and which xml fragment as
another
> var
>
> oh well,
>
> HTH, jim fuller
>
>
> ----- Original Message -----
> From: "JAY SCHERER" <jay.scherer@xxxxxxxxxx>
> To: "'cutlass'" <cutlass@xxxxxxxxxxx>
> Sent: Monday, March 04, 2002 4:26 PM
> Subject: RE: [xsl] Counting nodes processed
>
>
> > well...  It was selecting the 1st 4 topics, even when in category 2
> >
> > category 1
> >   topic1
> >   topic2
> >   topic3
> >   topic4
> > category2
> >   topic2-1
> >   topic2-2
> >
> > so, I changed the xml to look something like
> >
> >  <xsl:template match="/root">
> >    <xsl:apply-templates select="category"/>
> >  </xsl:template>
> >
> >  <xsl:template match="category">
> >    <xsl:value-of select="@value"/>
> >    <br />
> >    <xsl:for-each select="topic">
> >    <xsl:if test="position() &lt; 4">
> >      <xsl:value-of select="@value"/><br />
> >    </xsl:if>
> >  </xsl:for-each>
> >
> >  </xsl:template>
> >
> >
> > However, now it selects 4 from each category and not the sum of the 2.
> Let's change the count to 5 and given the xml above it should generate
> >
> > Category1
> >   topic1
> >   topic2
> >   topic3
> >   topic4
> >
> > Category2
> >   topic2-1
> >
> >
> > Thanks,
> > Jay
> >
> > -----Original Message-----
> > From: cutlass [mailto:cutlass@xxxxxxxxxxx]
> > Sent: Monday, March 04, 2002 10:09 AM
> > To: JAY SCHERER
> > Subject: Re: [xsl] Counting nodes processed
> >
> >
> >
> >
> > ----- Original Message -----
> > From: "JAY SCHERER" <jay.scherer@xxxxxxxxxx>
> > To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> > Cc: <cutlass@xxxxxxxxxxx>
> > Sent: Monday, March 04, 2002 4:09 PM
> > Subject: RE: [xsl] Counting nodes processed
> >
> >
> > > excellent...
> > >
> > > now if you can just tell me how I get the category of the topic.
> > >
> > > output would need to be something like
> > >
> > >   Category1
> > >      topic1
> > >      topic2
> > >      topic3
> > >      topic4
> > >
> > >   Category2
> > >      topic1
> > >      topic2
> > >
> >
> >
> > ok i will introduce some templating for you
> >
> >
> > <?xml version="1.0"?>
> > <xsl:stylesheet version="1.0"
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> >  <xsl:template match="root">
> >
> >  <xsl:apply-templates select="category"/>
> >
> >  </xsl:template>
> >
> >  <xsl:template match="category">
> >  <xsl:value-of select="@value"/>
> >  <br />
> >  <xsl:for-each select="//topic">
> >  <xsl:if test="position() &lt; 4">
> >  <xsl:value-of select="@value"/><br />
> >  </xsl:if>
> >  </xsl:for-each>
> >
> >  </xsl:template>
> >
> >
> > cheers, jim fuller
> > </xsl:stylesheet>
> >
> > > Do you see where I'm going with this?  Thanks for the help.
> > >
> > > Jay
> > >
> > > -----Original Message-----
> > > From: cutlass [mailto:cutlass@xxxxxxxxxxx]
> > > Sent: Monday, March 04, 2002 9:38 AM
> > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > Subject: Re: [xsl] Counting nodes processed
> > >
> > >
> > > Hello Jay,
> > >
> > > ----- Original Message -----
> > > From: "JAY SCHERER" <jay.scherer@xxxxxxxxxx>
> > >
> > >
> > >
> > > > I've got a need to limit the amount of ouput generated in a
> translation.
> > > Assume the following xml
> > > >
> > > > <category value="category1">
> > > >   <topic value="topic1"/>
> > > >   <topic value="topic2"/>
> > > >   <topic value="topic3"/>
> > > > </category>
> > > > <category value="category2">
> > > >   <topic value="topic1"/>
> > > >   <topic value="topic2"/>
> > > >   <topic value="topic3"/>
> > > > </category>
> > > >
> > > > How would I limit my total number of topics output to say 4 topics?
> > This
> > > is straight forward in code, but not sure how to do it xsl?  Basically
> the
> > > output would be topic1,2 and 3 from category1 and topic 1 from
category
> 2
> > > >
> > >
> > > i've done an example in  a procedural style to be clear for you, this
is
> > > just one way of doing this
> > >
> > > xml
> > > ----------------------------------
> > > <?xml version="1.0" ?>
> > > <root>
> > >
> > > <category value="category1">
> > >   <topic value="topic1"/>
> > >   <topic value="topic2"/>
> > >   <topic value="topic3"/>
> > > </category>
> > > <category value="category2">
> > >   <topic value="cattopic1"/>
> > >   <topic value="cattopic2"/>
> > >   <topic value="cattopic3"/>
> > > </category>
> > >
> > > </root>
> > >
> > > xsl
> > > ---------------------------------
> > > <?xml version="1.0"?>
> > > <xsl:stylesheet version="1.0"
> > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> > >  <xsl:template match="/">
> > >
> > >
> > >  <xsl:for-each select="//topic">
> > >
> > >  <xsl:if test="position() &lt; 4">
> > >  <xsl:value-of select="@value"/>
> > >  </xsl:if>
> > >
> > >  </xsl:for-each>
> > >  </xsl:template>
> > > </xsl:stylesheet>
> > >
> > >
> > > cheers, jim fuller
> > >
> > > > Thanks,
> > > > Jay
> > > >
> > > > Jay Scherer
> > > > 901 Explorer Blvd
> > > > Huntsville, AL 35806
> > > > (256)963-8130
> > > > Sun Certified Developer For The Java Platform
> > > > Sun Certified Programmer For The Java Platform
> > > > Oracle Certified Application Developer
> > > >
> > > >
> > > >  XSL-List info and archive:
http://www.mulberrytech.com/xsl/xsl-list
> > > >
> > >
> > >
> > >  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


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


Current Thread