xsl-list
[Top] [All Lists]

Re: [xsl] using normalize-space with mixed element content

2010-06-08 17:37:31
A crude way would be to use normalize-space() only if there are no element children:

    <xsl:template match="title-group/article-title[not(*)]" mode="none">
        <xsl:value-of select="normalize-space(.)"/>
    </xsl:template>

    <xsl:template match="title-group/article-title[*]" mode="none">
        <xsl:copy-of select="."/>
    </xsl:template>

More subtle is to recognize that you can safely remove leading whitespace from 
the first text node, and trailing whitespace from the last:

    <xsl:template match="title-group/article-title/text()[1]" priority="100">
      <xsl:value-of select="replace(., '^\s+', '')"/>
    </xsl:template>

    <xsl:template match="title-group/article-title/text()[last()]" 
priority="101">
      <xsl:value-of select="replace(., '\s+$', '')"/>
    </xsl:template>

    <xsl:template match="title-group/article-title/text()[last()=1]" 
priority="102">
      <xsl:value-of select="normalize-space(.)"/>
    </xsl:template>

Michael Kay
Saxonica




On 08/06/2010 23:24, Lynn Murdock wrote:
hi-

i want to remove trailing whitespace from the contents of an element 
(<article-title>), but because that element sometimes contains character-level 
formatting elements (<italic>) as well as text, normalize-space is creating problems. 
 if i use normalize-space(), i lose the italics in the output.  (i'm transforming to html.)

here's an example of where i want to remove whitespace (i want to remove the space 
before</article-title>):

       <title-group>
         <article-title>Effect of a Brief Video Intervention on Incident Infection 
among Patients Attending Sexually Transmitted Disease Clinics</article-title>
       </title-group>

and here's the xsl code i've used:

     <xsl:template match="title-group/article-title" mode="none">
         <xsl:value-of select="normalize-space(.)"/>
     </xsl:template>

this code works most of the time, but in a situation like this:

<article-title>A Global Survey of Gene Regulation during Cold Acclimation 
in<italic>Arabidopsis</italic>  <italic>thaliana</italic></article-title>

it ends up removing the italic formatting.

does anyone know of a way to strip the whitespace that i don't want (in the 
first example) while keeping the character formatting that i do want (in the 
second example)?

any pointers would be greatly appreciated.


thanks-

lynn
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
This email is confidential to the intended recipient. If you have received it 
in error, please notify the sender and delete it from your
system. Any unauthorized use, disclosure or copying is not permitted. The views 
or opinions presented are solely those of the sender and do
not necessarily represent those of Public Library of Science unless otherwise 
specifically stated. Please note that neither Public Library
of Science nor any of its agents accept any responsibility for any viruses that 
may be contained in this e-mail or its attachments and it
is your responsibility to scan the e-mail and attachments (if any).

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