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() < 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() < 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() < 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() < 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Fw: [xsl] Counting nodes processed, cutlass | Thread | RE: [xsl] Counting nodes processed, JAY SCHERER |
Re: [xsl] Find a set of nodes and d, Jakub . Valenta | Date | RE: [xsl] Counting nodes processed, JAY SCHERER |
Month |