This is the mail archive of the docbook-apps@lists.oasis-open.org mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

XSLT question - referencing one node and the one after it


I am writing up an XSLT stylesheet to convert a document from 
another XML format (custom DTD) to DocBook XML. I've run into a
stumbling block... all my XSLT books are at home... and I want
to demo this stylesheet this afternoon... so I thought I would 
just bounce the question out here in case anyone here might have
the quick answer...  (if you do, MANY thanks!)

In the other XML format, a table is defined roughly by:

  <items>
    <item></item>
    <item></item>
    <item></item>
    <item></item>
    <item></item>
    <item></item>
  </items>

All of the tables in the source documents are two columns, so setting
up a DocBook <tgroup cols="2"> is easy.  The challenge I am having
is to iterate through the <item> elements and convert each block of
two <item> elements to something like:

  <row>
  <entry>...</entry>
  <entry>...</entry>
  </row>

So far, what I have is this... in the XSLT template for <items>, I
have the following snippet:

  <xsl:for-each select="item">
    <xsl:choose>
      <xsl:when test="(position() mod 2)=1">
        <row>
	<xsl:apply-templates select="."/>
XXX	<xsl:apply-templates select="node()[position()+1]"/>
	</row>
      </xsl:when>
      <xsl:otherwise>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:for-each>

The "XXX" marks my problem line.  It doesn't work.  What I am trying to
do is to apply templates to the current <item> node (the first line)
and the next <item> node (the XXX line).  It *does* work for the first
line, but not for the second.

And yes, the loop can be simplified to simply an <xsl:if> in place of the
<xsl:choose> (since <xsl:otherwise> does nothing)... it is <xsl:choose>
because that was how I started trying this out.

There is separately a template for "<item>" that handles processing of
the stuff inside of the <item> element.

Any help anyone can offer will be most appreciated.

Thanks,
Dan

-- 
Dan York, Director of Training        dyork@e-smith.com
Ph: +1-613-751-4401 Cell: +1-613-263-4312 Fax: +1-613-564-7739 
Mitel Network Corporation Network Server Solutions Group 
150 Metcalfe St., Suite 1500, Ottawa,ON K2P 1P1 Canada
http://www.e-smith.com/            http://www.mitel.com/           

----------------------------------------------------------------
To subscribe or unsubscribe from this elist use the subscription
manager: <http://lists.oasis-open.org/ob/adm.pl>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]