[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: DOCBOOK-APPS: 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/
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC