xsl-list
[Top] [All Lists]

RE: XML/XSLT formatting problem

2005-01-06 03:46:28
I think I've solved my problem,

<xsl:apply-templates select="image[id =
$lastid]/following-sibling::image[count(. | key('idkey', id)[1])=1]"/> 

Thanks for all the help.

Chris

-----Original Message-----
From: Chris Hicks [mailto:chrish2000(_at_)iprimus(_dot_)com(_dot_)au] 
Sent: Thursday, 6 January 2005 8:50 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] XML/XSLT formatting problem

Thanks Michael,

This has further been complicated by the fact that I have 
image ID's in the result set that are repeated..in what is 
essentially a de-normalised structure

Eg. 

<results lastid="9">
  <image>
    <id>37</id>
    <imagetitle>Fred</imagetitle>
    <imagelocation>fred.jpg</imagelocation>
    <imagesubject>Fred</imagesubject>
  </image>
  <image>
    <id>9</id>
    <imagetitle>Wilma</imagetitle>
    <imagelocation>wilma.jpg</imagelocation>
    <imagesubject>Wives</imagesubject>
  </image>
  <image>
    <id>9</id>
    <imagetitle>Wilma</imagetitle>
    <imagelocation>wilma.jpg</imagelocation>
    <imagesubject>Women</imagesubject>
  </image>
  <image>
    <id>9</id>
    <imagetitle>Wilma</imagetitle>
    <imagelocation>wilma.jpg</imagelocation>
    <imagesubject>Fred</imagesubject>
  </image>
  <image>
    <id>22</id>
    <imagetitle>Barney</imagetitle>
    <imagelocation>barney.jpg</imagelocation>
    <imagesubject>Bam Bam</imagesubject>
  </image>
  <image>
    <id>22</id>
    <imagetitle>Barney</imagetitle>
    <imagelocation>barney.jpg</imagelocation>
    <imagesubject>Betty</imagesubject>
  </image>
  <image>
    <id>24</id>
    <imagetitle>Dino</imagetitle>
    <imagelocation>dino.jpg</imagelocation>
    <imagesubject>Dino</imagesubject>
  </image>
  <image>
    <id>24</id>
    <imagetitle>Dino</imagetitle>
    <imagelocation>dino.jpg</imagelocation>
    <imagesubject>Fred</imagesubject>
  </image>
</results>

So what I have is a key on id at the top of my template:

<xsl:key name="idkey" match="image" use="id"/> ..

Then I want to output a line for each unique ID using:

<xsl:for-each select="photographs::[count(. | key('idkey', 
id)[1])=1]"> ..

Is there any way in the above line I can apply the 
restriction that the id must be in a sibling of the image 
with the @lastid so I only output items with id's of 22 and 24?

Cheers,

Chris




-----Original Message-----
From: Michael Kay [mailto:mike(_at_)saxonica(_dot_)com]
Sent: Thursday, 6 January 2005 8:29 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] XML/XSLT formatting problem


<xsl:template match="results">
  
  <xsl:apply-templates
select="image[id=current()/@lastid]/following-sibling::*">
   ...

Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: Chris Hicks [mailto:chrish2000(_at_)iprimus(_dot_)com(_dot_)au]
Sent: 06 January 2005 07:09
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] XML/XSLT formatting problem

Hi,

I have a problem where I need to start printing values from
a nodeset
starting from a certain position in the set.

My xml looks similar to this:

<results lastid="9">
  <image>
    <id>37</id>
    <imagetitle>Fred</imagetitle>
    <imagelocation>fred.jpg</imagelocation>
  </image>
  <image>
    <id>22</id>
    <imagetitle>Barney</imagetitle>
    <imagelocation>barney.jpg</imagelocation>
  </image>
  <image>
    <id>9</id>
    <imagetitle>Wilma</imagetitle>
    <imagelocation>wilma.jpg</imagelocation>
  </image>
  <image>
    <id>12</id>
    <imagetitle>Dino</imagetitle>
    <imagelocation>dino.jpg</imagelocation>
  </image>
  <image>
    <id>1</id>
    <imagetitle>Bam Bam</imagetitle>
    <imagelocation>bambam.jpg</imagelocation>
  </image>
</results>

I need to check the "lastid" attribute in the result node
when looping
through the nodeset in order to know when to start 
printing results 
(this represents the last id printed on the previous 
page).  In the 
above example I want to start printing results starting
from id = 12.

Any tips on where to begin would be appreciated.

Cheers,


Chris







--~------------------------------------------------------------------
XSL-List info and archive:  
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>