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 |