Subject: RE: normalize-space problems with child elements
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 29 Mar 2005 19:09:01 +0100
|
You have to face facts: the spaces adjacent to a <code> element are
significant, so you can't use a function like normalize-space() that
destroys them. I don't think there are any short-cuts here.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Jelks Cabaniss [mailto:jelks@xxxxxxxx]
> Sent: 29 March 2005 18:39
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: normalize-space problems with child elements
>
> I'm using the text output method to create a man page.
>
> In my source XML, I have `<description>` elements which
> contain text and
> `<code>` child elements. `<description>` is "pretty printed"
> (indented and
> with line breaks) which is easily fixed with
> "normalize-space". So far so
> good. But that does weird stuff to the `<code>` child elements -- it
> removes the space before and after the `<code>foo</code>` so
> that the word
> "foo" adjoins the surrounding text in the description output.
>
> Example:
>
> <description>This decribes how <code>FOO</code> is
> supposed to work. Now "<code>bar</code>" is a
> different story altogether.</description>
>
> ...
>
> <xsl:template match="description">
> <xsl:apply-templates />
> </xsl:template>
>
> <xsl:template match="code">
> <xsl:apply-templates />
> </xsl:template>
>
> <xsl:template match="text()">
> <xsl:value-of select="normalize-space(.)" />
> </xsl:template>
>
>
> Output:
>
> This decribes howFOOis supposed to work.
> Now "bar" is a different story altogether.
>
>
> Since "bar" was surrounded by quotes and not whitespace, it
> worked. But see
> how "FOO" was mangled by "normalize-space"?
>
> If I change the `code` template to add spaces before and
> after, it fixes
> "FOO", but breaks "bar":
>
> <xsl:template match="code">
> <xls:text> </xls:text>
> <xsl:apply-templates />
> <xls:text> </xls:text>
> </xsl:template>
>
> Is there a way to do this without involving a complex template with
> substring processing, etc.?
>
>
> /Jelks
|