Subject: RE: [xsl] XSLT Problem - Random Order From: "Michael Kay" <mhk@xxxxxxxxx> Date: Mon, 6 Oct 2003 19:59:43 +0100 |
> But I want to select the category at random order not > as ascending or descending order. You're not being very clear. I suspect that when you say "random" order you actually mean "arbitrary" order - i.e. you want to control the sequence from your stylesheet, rather than having the elements displayed in an unpredictable sequence. The simplest way to do this is with something like: <xsl:apply-templates select="//book[@category='c4']"/> <xsl:apply-templates select="//book[@category='c2']"/> <xsl:apply-templates select="//book[@category='c1']"/> <xsl:apply-templates select="//book[@category='c5']"/> <xsl:apply-templates select="//book[@category='c3']"/> Or you could use keys to make it more efficient. Micahel Kay > Suppose there are 6 categories in > > books.xml file. Now I want to select only 3 categories > in ouput file ( e.g in html) and their position will > be different - > > such as 4th (category="c4" in xml doc) will come at > 1st position (in html doc), 6th (category="c6" in xml > doc) will come at > > 2nd position (in html doc) and 2nd (category="c2" in > xml doc) will come at 3rd position(in html doc). > > > books.xml > ---------- > > <?xml version="1.0"?> > <books> > <book category="c1"> > <title>1st Book</title> > <auth>Author 1</auth> > </book> > > <book category="c2"> > <title>2nd Book</title> > <auth>Author 2</auth> > </book> > <book category="c3"> > <title>3rd Book</title> > <auth>Author 3</auth> > </book> > <book category="c4"> > <title>4th Book</title> > <auth>Author 4</auth> > </book> > <book category="c5"> > <title>5th Book</title> > <auth>Author 5</auth> > </book> > <book category="c6"> > <title>6th Book</title> > <auth>Author 6</auth> > </book> > </books> > > > > books.xsl > ---------- > > <?xml version="1.0"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:template match="/"> > <html> > <head> > </head> > <body> > <table border="1" width="60%" > align="center" cellpadding="0"> > <xsl:apply-templates/> > </table> > </body> > </html> > </xsl:template> > > > <xsl:template match="books"> > <xsl:for-each select="//book"> > > > <xsl:choose> > > <xsl:when test="@category='c4'"> > > <tr> > <td align="center"> > > <xsl:value-of select="title"/> > </td> > <td align="center"> > > <xsl:value-of select="auth"/> > </td> > </tr> > </xsl:when> > > > <xsl:when test="@category='c6'"> > > <tr> > <td align="center"> > > <xsl:value-of select="title"/> > </td> > <td align="center"> > > <xsl:value-of select="auth"/> > </td> > </tr> > </xsl:when> > > > <xsl:when test="@category='c2'"> > <tr> > <td align="center"> > > <xsl:value-of select="title"/> > </td> > <td align="center"> > > <xsl:value-of select="auth"/> > </td> > </tr> > </xsl:when> > </xsl:choose> > </xsl:for-each> > </xsl:template> > </xsl:stylesheet> > > > > books.html > ---------- > > Current Output > -------------- > > > Category Author > -------- ------- > > 2nd Book Author 2 > > 4th Book Author 4 > > 6th Book Author 6 > > > Expected Output > --------------- > > > Category Author > -------- ------- > > 4th Book Author 4 > > 6th Book Author 6 > > 2nd Book Author 2 > > > > Regards, > > Saurabh Sinha > > > > > > > > > > > > --- Michael Kay <mhk@xxxxxxxxx> wrote: > You haven't > said what criteria you want to use for > > sorting - is it > > descending order by category name, or what? > > > > You could get the order c3, c2, c1, by adding > > > > <xsl:sort select="@category" order="descending"/> > > > > immediately after the <xsl:for-each> > > > > You have an xsl:choose with three branches, but they > > are all the same. > > This makes it very difficult to understand what > > exactly you are trying > > to achieve. > > > > Michael Kay > > > > > > > -----Original Message----- > > > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On > > Behalf Of > > > Saurabh Sinha > > > Sent: 06 October 2003 08:13 > > > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx > > > Subject: [xsl] XSLT Problem - Random Order > > > > > > > > > Hi, > > > > > > Currently I am facing the following problem while converting > > > documents into HTML from XML. I need > > help > > > to solve this. > > > > > > > > > Thanks, > > > > > > Saurabh > > > > > > > > > Problem: > > > > > > I want to see the output of books.xml file as > > category > > > wise. In books.xml 3 categories are given c1, c2, > > c3 > > > within book elements. I want to see either c3 > > first or > > > c2 first in html output. But everytime it is > > coming as > > > per .xml document. I am writing the books.xml, > > > books.xsl below. Can you suggest me what specific > > > command I have to give in .xsl document. > > > > > > > > > books.xml > > > ---------- > > > > > > <?xml version="1.0"?> > > > <books> > > > <book category="c1"> > > > <title>ABC</title> > > > <auth>XX</auth> > > > </book> > > > > > > <book category="c2"> > > > <title>SSS</title> > > > <auth>YY</auth> > > > </book> > > > <book category="c3"> > > > <title>MNB</title> > > > <auth>ZZ</auth> > > > </book> > > > </books> > > > > > > > > > books.xsl > > > ------------ > > > > > > <?xml version="1.0"?> > > > <xsl:stylesheet version="1.0" > > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > > > > > <xsl:template match="/"> > > > <html> > > > <head> > > > </head> > > > <body> > > > <table border="1" width="60%" > > > align="center" cellpadding="0"> > > > <xsl:apply-templates/> > > > </table> > > > </body> > > > </html> > > > </xsl:template> > > > > > > > > > <xsl:template match="books"> > > > <xsl:for-each select="//book"> > > > > > > <xsl:choose> > > > > > > <xsl:when test="@category='c3'"> > > > > > > <tr> > > > <td align="center"> > > > > > > <xsl:value-of select="title"/> > > > </td> > > > <td align="center"> > > > > > > <xsl:value-of select="auth"/> > > > </td> > > > </tr> > > > </xsl:when> > > > > > > > > > <xsl:when test="@category='c1'"> > > > > > > <tr> > > > <td align="center"> > > > > > > <xsl:value-of select="title"/> > > > </td> > > > <td align="center"> > > > > > > <xsl:value-of select="auth"/> > > > </td> > > > </tr> > > > </xsl:when> > > > > > > > > > <xsl:when test="@category='c2'"> > > > <tr> > > > <td align="center"> > > > > > > <xsl:value-of select="title"/> > > > </td> > > > <td align="center"> > > > > > > <xsl:value-of select="auth"/> > > > </td> > > > </tr> > > > </xsl:when> > > > > > > </xsl:choose> > > > </xsl:for-each> > > > </xsl:template> > > > </xsl:stylesheet> > > > > > > > > > > > > > > > books.html > > > ---------- > > > > > > Current Output > > > -------------- > > > > > > > > > Category Author > > > -------- ------- > > > > > > ABC XX > > > > > > SSS YY > > > > > > MNB ZZ > > > > > > > > > Expected Output > > > --------------- > > > > > > Category Author > > > -------- ------- > > > > > > MNB ZZ > > > > > > ABC XX > > > > > > SSS YY > > > > > > > > > > > > ______________________________________________________________ > > > __________ > > > Yahoo! India Matrimony: Find your partner online. > > > Go to http://yahoo.shaadi.com > > > > > > XSL-List info and archive: > > http://www.mulberrytech.com/xsl/xsl-list > > > > > > > > > XSL-List info and archive: > > http://www.mulberrytech.com/xsl/xsl-list > > > > ______________________________________________________________ > __________ > Yahoo! India Matrimony: Find your partner online. > Go to http://yahoo.shaadi.com > > 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 -> |
---|---|---|
RE: [xsl] XSLT Problem - Random Ord, Mukul Gandhi | Thread | Re: [xsl] XSLT Problem - Random Ord, Mukul Gandhi |
RE: [xsl] Trying to read a paramete, Diodato, Anthony | Date | [xsl] gain data from multiple xml f, Josef El-Rayes |
Month |