|
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 |