This is the mail archive of the
docbook-apps@lists.oasis-open.org
mailing list .
XSLT question - referencing one node and the one after it
- To: docbook-apps at lists dot oasis-open dot org
- Subject: DOCBOOK-APPS: XSLT question - referencing one node and the one after it
- From: Dan York <dyork at e-smith dot com>
- Date: Mon, 10 Sep 2001 11:14:28 -0400
- List-Id: <docbook-apps.lists.oasis-open.org>
- Organization: e-smith, Inc.
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>