On 02/14/2012 03:13 PM, Michael Ludwig wrote:
> spam.spam.spam.s...@free.fr schrieb am 14.02.2012 um 10:59 (+0100):
>> Is there a function which do this work?
> 
> Don't know the C API, but in XSLT there's the function normalize-space()
> and it does just what you want, so you might want to take a look at the
> source of LibXSLT. Or use XSLT directly.
I spent a bit of time looking for the C call today and wasn't able to
find it. In fact, I doubt there is one, since all space is treated by
libxml2 as significant (see [1] and [2]).

> <xsl:stylesheet version="1.0"
>       xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> 
>       <xsl:template match="text()" priority="2">
>               <xsl:copy-of select="normalize-space()"/>
>       </xsl:template>
> 
>       <xsl:template match="@*|node()">
>               <xsl:copy>
>                       <xsl:apply-templates select="@*|node()"/>
>               </xsl:copy>
>       </xsl:template>
> 
> </xsl:stylesheet>

The XSLT solution suggested is the best way in lieu of actually
normalizing the space in C - the choice is yours.

As a side-note, I thought one could get, at least partially, to
eliminating extra white-space using the XML_PARSE_NOBLANKS (as suggested
by Daniel in [1]), but the functionality behind the option seems to have
been modified. I recall being able to remove empty nodes (<node/>) from
the document being parsed using that option -- that is no longer the case.

All the best,

P

1 - http://mail.gnome.org/archives/xml/2004-April/msg00244.html
2 - http://xmlsoft.org/FAQ.html#Developer  (see point 3)
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to