xsl-list
[Top] [All Lists]

RE: [xsl] mod position() tests positive all of the time

2006-12-30 15:21:28
You only have one thumbnail in each object, therefore the position of the
thumbnail within the object is always one.

Try

<xsl:for-each select="...../object[position() mod 5 = 1]/thumbnail"

and remember also that the thumbnails are not siblings of each other, but
cousins, so instead of

following-sibling::thumbnail[position() lt 5]

you want

../following-sibling::object[position() lt 5]/thumbnail 

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

-----Original Message-----
From: Allen Jones [mailto:jonesa(_at_)newschool(_dot_)edu] 
Sent: 30 December 2006 19:12
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] mod position() tests positive all of the time

Thanks everyone for their input.  I'm still having the same 
counting problem after working with some of the suggestions.  
I have worked mainly with Abel's and Chuck Knell's 
suggestion, and I'm getting the same results.  This is output 
that comes from an XML gateway into a PHP/Sablotron script 
for formatting.

As per Abel's suggection, the input xml data I am using is 
included in the post:

<insightResponse>
  <searchResponse>
    <collectionResultSet>
      <collectionName>Digital Media Collection</collectionName>
      <collectionID>1</collectionID>
      <institutionID>Parsons</institutionID>
      <vcID>NA</vcID>
      <object cid="1::Parsons::NA" objectID="4641" imageID="200761"
type="media" >
            <collectionName>Digital Media Collection</collectionName>
            <collectionID>1</collectionID>
           <institutionID>Parsons</institutionID>
           <vcID>NA</vcID>
           <collectionCopyrightStatement>These materials may 
be covered by copyright.</collectionCopyrightStatement>
                 <thumbnail URL="http://somelink";
mappingType="standard" mappingName="DublinCore" >
                       <label name="Creator" order="1" 
Duchamp, Marcel</label>
                       <label name="Title" order="2" >3 
Stoppages</label>
                       <label name="Date Created" order="3"
1913-1914</label>
                       <label name="Type" order="4"
assemblage</label>
                </thumbnail>
      </object>
         <object cid="1::Parsons::NA" objectID="4342" imageID="200747"
type="media" >
        <collectionName>Digital Media Collection</collectionName>
        <collectionID>1</collectionID>
        <institutionID>Parsons</institutionID>
        <vcID>NA</vcID>
        <collectionCopyrightStatement>These materials may be 
covered by copyright.</collectionCopyrightStatement>
          <thumbnail URL="http://somelink"; mappingType="standard"
mappingName="DublinCore" >
          <label name="Creator" order="1" >Duchamp, Marcel</label>
          <label name="Title" order="2" >Bicycle Wheel</label>
          <label name="Date Created" order="3" >1951</label>
          <label name="Type" order="4" >assemblage</label>
        </thumbnail>

....
</collectionResultSet>
</searchResponse>
</insightResponse>

For the transformation I am thinking, There will be only 1 
thumbnail for each object.  Ideally, I would like to get:

<table>
<tr><td align="center"><img src="http://somelink";>< br 
/>labels<br /></td><td>repeat sequence 4 more times</td></tr> 
<tr>five more cells</tr></table>

I am using Chuck Knell's suggestion of a stylesheet, but I am 
getting the same result.

<?xml version="1.0" encoding="iso-8859-1"?>
  <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:output method="html" encoding="iso-8859-1"/>

<xsl:template match="/">
    <xsl:apply-templates />
  </xsl:template>

<xsl:template match="insightResponse">
    <xsl:apply-templates />
  </xsl:template>

<xsl:template match="searchResponse">
    <xsl:apply-templates />
  </xsl:template>

<xsl:template match="collectionResultSet">
    <xsl:apply-templates />
  </xsl:template>

<xsl:template match="object">
    <xsl:apply-templates />
  </xsl:template>

<xsl:template match="thumbnail">
    <xsl:choose>
      <xsl:when test="position() mod 5 = 1">
        <tr>
          <td align="center">
            <img src="{(_at_)URL}" />
            <xsl:apply-templates />
          </td>
        </tr>
      </xsl:when>
      <xsl:otherwise>
        <td align="center">
          <img src="{(_at_)URL}" />
          <xsl:apply-templates />
        </td>
      </xsl:otherwise>
    <xsl:choose>
  </xsl:template>
  
<xsl:template match="label">
    <xsl:value-of select="." />
  </xsl:template>
</xsl:stylesheet>


--~------------------------------------------------------------------
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>
--~--