Re: [xsl] using identity transform to change <p /> into <p>text</p>

Subject: Re: [xsl] using identity transform to change <p /> into <p>text</p>
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 8 May 2002 15:33:52 +0100
> I have a bunch of files with the following form:

I think the simplest and most humane approach is to shoot the author of
the documents.

However failing that....

This is another case where XSLT2 positional grouping would come in
handy, but to do it in XSLT1, the basic idea is


<!-- identify children of sections with the section element or preceding
p -->

<xsl:key name="x" match="section/node()[not(self::p)]"
use="generate-id((parent::section|preceding-sibling::p[1])[last()])"/>

<xsl:template match="section">
<section>
<!-- stuff before the first p -->
 <xsl:if test="key('x',generate-id(.))">
  <p><xsl:apply-templates select="key('x',generate-id(.))"/></p>
 </xsl:if>
<!-- for each p -->
 <xsl:for-each select="p">

<!-- any content of the p -->
   <xsl:if test=".!=''">
     <xsl:apply-templates select="."/>
   </xsl:if>
 
<!-- stuff after the p -->

    <xsl:if test="key('x',generate-id(.))">
     <p><xsl:apply-templates select="key('x',generate-id(.))"/></p>
    </xsl:if>
 
 </xsl:for-each>
</section>
</xsl:template>

and then an identity transformation for the rest.

untested:-)

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