|
Subject: RE: [xsl] Combination of normalize-space() and apply-templates From: Jarno.Elovirta@xxxxxxxxx Date: Thu, 26 Feb 2004 12:42:09 +0200 |
Hi,
> I am using xsltroc (from libxslt 1.1.0). When I m trying to normalize
> the space in certain elements, I got stuck since I couldn't
> figure out,
> how to apply normalize-space() and apply templates for
> elements within a
> node. Example:
>
> <document>
> <para>Some text, that is
> wrapped several times, but
> should be one line in the
> output document. And which
> has -- to make it tricky --
> some Elements <emp>within</emp>
> which should also be processed.
> </para>
> <document>
>
> If I write a template like this:
>
> <xsl:template match="document">
> <xsl:apply-templates select="normalize-space(para)" />
> </xsl:template>
>
> It doesn't work. But if I do it this way:
>
> <xsl:template match="document">
> <xsl:apply-templates select="para" />
> </xsl:template>
>
> <xsl:template match="para">
> <xsl:value-of select="normalize-space(para)" />
> </xsl:template>
>
> It worked, but the inline element won't get processed.
Did you want something in the lines of
<xsl:template match="para/text()">
<xsl:if test="preceding-sibling::node()">
<xsl:text> </xsl:text>
</xsl:if>
<xsl:value-of select="normalize-space()"/>
<xsl:if test="following-sibling::node()">
<xsl:text> </xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
Cheers,
Jarno - Chris C: The Zurich Mix <http://mp3.hardnrg.com/chrisc/ChrisC-The_Zurich_Mix-June_2003.mp3>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Combination of normalize-, David Carlisle | Thread | [xsl] call-template from an XML, i92agcad |
| Re: [xsl] Combination of normalize-, David Carlisle | Date | [xsl] call-template from an XML, i92agcad |
| Month |