Subject: Re: [xsl] Open Office Multi-Line Normalization From: Michael B Allen <mba2000@xxxxxxxxxx> Date: Wed, 18 Apr 2007 20:37:02 -0400 |
On Wed, 18 Apr 2007 18:16:50 -0400 Michael B Allen <mba2000@xxxxxxxxxx> wrote: > On Wed, 18 Apr 2007 23:03:44 +0100 > David Carlisle <davidc@xxxxxxxxx> wrote: > > > > > looks like you just want > > > > <pre> > > <xsl:apply-templates/> > > </pre> > > > > the default element and text node templates will do the rest for you, > > Hi David, > > Ok, but there's no outer tag to match on. I failed to mention that there > are many of these "pre" sequences. If I can isolate each set then I can > use the template you suggest. This below seems to work but of course I'd be interested in improvements. Basically this finds the p node with an immediately preceding sibling that does not have the p_5f_prototype style. That's the first element in the sequence. Then it finds the first p node after that one that does not have the p_5f_prototype style. That's the node right after the last element in the sequence. Then I just use [. << $end] to isolate the set. <xsl:template match="text:p[@text:style-name='p_5f_prototype' and not(preceding-sibling::*[1][@text:style-name='p_5f_prototype'])]"> <xsl:variable name="end" select="following-sibling::*[not(@text:style-name='p_5f_prototype')][1]"/> <pre> <xsl:apply-templates mode="prototype" select=".|following-sibling::*[. << $end]"/> </pre><xsl:text> </xsl:text> </xsl:template> <xsl:template mode="prototype" match="text:s"> <xsl:value-of select="substring(' ', 1, @text:c)"/> </xsl:template> <xsl:template mode="prototype" match="text()|@*"> <xsl:value-of select="."/><xsl:text> </xsl:text> </xsl:template> The only wart is that an empty element does not produce a blank line because I guess the empty element doesn't match 'text()'. Meaning the following: <text:p text:style-name="p_5f_prototype">require_once('foo.php');</text:p> <text:p text:style-name="p_5f_prototype"/> <text:p text:style-name="p_5f_prototype">bool ... yields: require_once('plexcel.php'); bool ... whereas I would like: require_once('plexcel.php'); bool ... Mike -- Michael B Allen PHP Active Directory Kerberos SSO http://www.ioplex.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Open Office Multi-Line No, Michael B Allen | Thread | Re: [xsl] Open Office Multi-Line No, Abel Braaksma |
Re: [xsl] Open Office Multi-Line No, Michael B Allen | Date | [xsl] Select Particular Node and Al, Michael B Allen |
Month |