This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: regarding strip-space
Thanks jarno, david, dimitre.and wow!! thanks for this detailed explaination
Andy.
regards
Subbu
Quoting Andrew Welch <awelch@piper-group.com>:
>
> Here is a good example that may help you understand whitespace and the
> way it is handled by some processors:
>
> Take this xml:
>
> <?xml version="1.0"?>
> <root>
> <node>Hello</node>
> <node>World</node>
> </root>
>
> Here you have the root element, with two <node> elements and some
> whitespace (carriage returns, non-breaking-spaces etc) as its children.
> Without the whitespace as children, it would look like this:
>
> <?xml version="1.0"?>
> <root><node>Hello</node><node>World</node></root>
>
> This whitespace is pretty insignificant here - its only to make the xml
> more readable. However, in certain cases you will want to handle this
> whitespace, which is where <xsl:strip-space> and <xsl:preserve-space>
> come in.
>
> To highlight how these work, try applying this stylesheet to the above
> xml:
>
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0" >
>
> <xsl:template match="root">
> <xsl:value-of select="."/>
> </xsl:template>
>
> </xsl:stylesheet>
>
> Using <xsl:value-of select="."/> on the <root> element will give you the
> string value of all of its children, including the whitespace:
>
> <?xml version="1.0" encoding="utf-8"?>
> Hello
> World
>
> This whitespace was only to make the xml more readable, and not wanted
> in the output. To get rid of this, you can use <xsl:strip-space
> elements="*"/> :
>
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0" >
>
> <xsl:strip-space elements="*"/>
>
> <xsl:template match="root">
> <xsl:value-of select="."/>
> </xsl:template>
>
> </xsl:stylesheet>
>
> (You can be more specific than '*' but for now this will do)
>
> So you output will now look like this:
>
> <?xml version="1.0" encoding="utf-8"?>HelloWorld
>
> Note all on one line - no whitespace (carriage returns, nbsp's)
>
> You can use this in combination with <xsl:preserve-space> to control the
> whitespace that gets copied to your output tree. <xsl:preserve-space>
> has a higher priority than <xsl:strip-space>, so you can strip-space on
> * and then list the elements you want to keep the whitespace for:
>
> <xsl:strip-space elements="*">
> <xsl:preserve-space elements="keepme"/>
>
> on this data:
>
> <remove>
> <node>Hello</node>
> <node>World</node>
> </remove>
> <keepme>
> <node>foo</node>
> <node>bar</node>
> </keepme>
>
> would give you:
>
> <?xml version="1.0" encoding="utf-8"?>HelloWorld
> foo
> bar
>
> The carriage returns within <keepme> have been copied to the output
> tree, whereas those within <remove> have been stripped.
>
> <note>
> MSXML effectively does a 'strip-space' during parse time, so the xslt
> processor side of it doesn't ever get to see this kind of whitespace,
> rendering these two commands useless.
> </note>
>
>
> The joys of whitespace...
>
> cheers
> andrew
>
>
>
>
>
> -----Original Message-----
> From: subbu@boltblue.com [mailto:subbu@boltblue.com]
> Sent: 16 July 2002 13:34
> To: xsl-list@lists.mulberrytech.com
> Subject: [xsl] regarding strip-space
>
>
>
> hi
> I read in the XSLT Reference that xsl:strip-space would actually remove
> the
> whitespace-only text nodes from the source.
> My question is ..( sorry its a bit weird)
> 1.what is a whitespace-only node?? ( is it an empty element of kind
> <myel></myel>)??
>
> 2.If i have empty elements like what i have shown above(<myel></myel>)
> and if i have to pick all the myel elements which have some text in it (
> non
> empty ) then , i beleive the only way to do it is through a condition
> <xsl:for-each select = //myel[not(string-length(.) = 0)]">
> is it true??
>
> or are there any better ways to do it?
>
> Subbu
>
>
> --------------------------------------------------------------
> Sent with "Me-Mail", Boltblue's FREE mobile messaging service.
> http://www.boltblue.com
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
>
>
>
> ---
> Incoming mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.373 / Virus Database: 208 - Release Date: 01/07/2002
>
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.373 / Virus Database: 208 - Release Date: 01/07/2002
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
--------------------------------------------------------------
Sent with "Me-Mail", Boltblue's FREE mobile messaging service.
http://www.boltblue.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list