Re: [xsl] question about apply-templates / following-sibling

Subject: Re: [xsl] question about apply-templates / following-sibling
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 12 Dec 2002 15:52:37 GMT
I suspect that it's possible to do this with a single Tennison-esqe
select expression, but it's simpler to just ignore your dtd expression
and rephrase your English descriptin as an xsl:choose


<xsl:choose>
 <!--
If the chapter 
contains
a section or simplesect, the para can be inserted right before it
-->
  <xsl:when test="section|simplesect">
    <xsl:copy-of select="(section|simplesect)[1]/preceding-sibling::*"/>
     <para>new stuff</para>
    <xsl:copy-of select="(section|simplesect)[1]"/>
    <xsl:copy-of select="(section|simplesect)[1]/following-sibling::*"/>
  </xsl:when>
<!--
 but if 
not, it
has to be the last element of chapter, only followed by index elements if
present.
-->
 <xsl:otherwise>
 <xsl:copy-of select="*[not(self::index)[last()]/preceding-sibling::*"/>
     <para>new stuff</para>
 <xsl:copy-of select="*[not(self::index)[last()]"/>
 <xsl:copy-of select="*[not(self::index)[last()]/following-sibling::*"/>
 <xsl:otherwise>
</xsl:choose>

untested...

you could use varables or keys to save  looking up the insertion points
three times on each branch.

David



_____________________________________________________________________
This message has been checked for all known viruses by Star Internet
delivered through the MessageLabs Virus Scanning Service. For further
information visit http://www.star.net.uk/stats.asp or alternatively call
Star Internet for details on the Virus Scanning Service.

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread