This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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



> 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


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