Subject: Re: [xsl] preceding/following character? From: David Carlisle <davidc@xxxxxxxxx> Date: Mon, 20 Jun 2005 10:24:26 +0100 |
Thanks David. That does solve the duplicate problem, but also leaves off the second cite element: there was the obvious bug of course that I wrote following instead of preceding, and also you need to proceed teh cite always not just in the case that there is a . so that would be <xsl:template match="text()[preceding-sibling::node()[1][self::cite]]"> <xsl:choose> <xsl:when test="substring(.,1,1) = '.'"> <xsl:text>.</xsl:text> <xsl:apply-templates select="preceding-sibling::cite[1]" mode="clean"/> <xsl:copy-of select="substring(.,2)"/> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="preceding-sibling::cite[1]" mode="clean"/> <xsl:apply-templates select="."/> </xsl:otherwise> </xsl:choose> </xsl:template> However that still isn't really right as picking up on the text node following the only works if there is such a text node, it fails if the cite node is the last child or if it's followed by something other than text) so... <sect> <p>Some text and more text <cite/>. Some <em>more</em> text. Some text and more text <cite/>.ffff<cite/></p> <p>Some text and more text <cite/><em>. Some more</em> text. Some text and more text <cite/>.ffff<cite/></p> </sect> <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:bib="http://www.example.org" version="2.0" exclude-result-prefixes="bib"> <xsl:template match="sect"> <div> <xsl:apply-templates/> </div> </xsl:template> <xsl:template match="em"> <EM> <xsl:apply-templates/> </EM> </xsl:template> <xsl:template match="cite" mode="clean">[XXX<xsl:number/>]</xsl:template> <xsl:template match="cite[not(following-sibling::node()[1][self::text()[starts-with(.,'.')]])]"> <xsl:apply-templates mode="clean" select="."/> </xsl:template> <xsl:template match="text()[preceding-sibling::node()[1][self::cite]][starts-with(.,'.')]"> <xsl:text>.</xsl:text> <xsl:apply-templates select="preceding-sibling::cite[1]" mode="clean"/> <xsl:copy-of select="substring(.,2)"/> </xsl:template> </xsl:stylesheet> $ saxon cite.xml cite.xsl <?xml version="1.0" encoding="utf-8"?><div> Some text and more text .[XXX1] Some <EM>more</EM> text. Some text and more text .[XXX2]ffff[XXX3] Some text and more text [XXX1]<EM>. Some more</EM> text. Some text and more text .[XXX2]ffff[XXX3] </div> ________________________________________________________________________ This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. For more information on a proactive anti-virus service working around the clock, around the globe, visit: http://www.star.net.uk ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] preceding/following chara, Bruce D'Arcus | Thread | Re: [xsl] preceding/following chara, Bruce D'Arcus |
RE: [xsl] Finding the Undefined Ele, Andrew Welch | Date | Re: [xsl] Add a level of structure?, Sam D. Chuparkoff |
Month |