xsl-list
[Top] [All Lists]

RE: normalize-space problems with child elements

2005-03-29 11:09:01
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(_at_)jelks(_dot_)nu] 
Sent: 29 March 2005 18:39
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] 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


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>