xsl-list
[Top] [All Lists]

Re: Newbie question: Incrementing the position in the tree midstream

2004-04-12 13:26:51
At 2004-04-12 13:41 -0600, Durston, Andrew (AGRE) wrote:
I have a set of XML outputs from a database which splits a table into individual cells -

test-plan/object/cell N
test-plan/object/cell N+1
test-plan/object/cell N+2
test-plan/object/cell N+3

I can search to find cell N. I'd like to be able to print cell N, cell N+1, cell N+2 ... all at once and then when XSL goes back to searching (via a For) through the tree, it skips N+1, N+2 etc. (basically does a table row and then skips to the beginning of the next row). Without entering another XML attribute into our DB to indicate beginning and end of rows... How do I increment
the position, moving from object/cell N to object/cell N+1 midstream?

By jumping periodically through the cells and then only looking at the immediately-surrounding area.

I hope the example below helps to give you an idea of what to do in your situation; I've generalized it for a period of "n" entries.

........................ Ken


T:\ftemp>type durston.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<objects>
  <object>
    <cell>1</cell>
    <cell>2</cell>
    <cell>3</cell>
    <cell>4</cell>
    <cell>5</cell>
    <cell>6</cell>
    <cell>7</cell>
    <cell>8</cell>
    <cell>9</cell>
    <cell>10</cell>
    <cell>11</cell>
    <cell>12</cell>
    <cell>13</cell>
    <cell>14</cell>
    <cell>15</cell>
    <cell>16</cell>
    <cell>17</cell>
    <cell>18</cell>
    <cell>19</cell>
    <cell>20</cell>
    <cell>21</cell>
    <cell>22</cell>
  </object>
</objects>
T:\ftemp>type durston.xsl
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                version="1.0">

<xsl:output indent="yes"/>

<xsl:variable name="n" select="4"/>

<xsl:template match="object">
  <xsl:for-each select="cell[position() mod $n = 1]">
    <group>
      <xsl:for-each select=". | following-sibling::cell[position()&lt;$n]">
        <xsl:copy-of select="."/>
      </xsl:for-each>
    </group>
  </xsl:for-each>
</xsl:template>

</xsl:stylesheet>
T:\ftemp>saxon durston.xml durston.xsl
<?xml version="1.0" encoding="utf-8"?>

<group>
   <cell>1</cell>
   <cell>2</cell>
   <cell>3</cell>
   <cell>4</cell>
</group>
<group>
   <cell>5</cell>
   <cell>6</cell>
   <cell>7</cell>
   <cell>8</cell>
</group>
<group>
   <cell>9</cell>
   <cell>10</cell>
   <cell>11</cell>
   <cell>12</cell>
</group>
<group>
   <cell>13</cell>
   <cell>14</cell>
   <cell>15</cell>
   <cell>16</cell>
</group>
<group>
   <cell>17</cell>
   <cell>18</cell>
   <cell>19</cell>
   <cell>20</cell>
</group>
<group>
   <cell>21</cell>
   <cell>22</cell>
</group>



--
Public courses: Spring 2004 world tour of hands-on XSL instruction
Each week:   Monday-Wednesday: XSLT/XPath; Thursday-Friday: XSL-FO
Hong Kong May 17-21; Bremen Germany May 24-28; Helsinki June 14-18

World-wide on-site corporate, govt. & user group XML/XSL training.
G. Ken Holman                 mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc



<Prev in Thread] Current Thread [Next in Thread>
  • Re: Newbie question: Incrementing the position in the tree midstream, G. Ken Holman <=