Subject: RE: [xsl] regarding strip-space From: subbu@xxxxxxxxxxxx Date: Tue, 16 Jul 2002 15:19:47 +0100 |
Thanks jarno, david, dimitre.and wow!! thanks for this detailed explaination Andy. regards Subbu Quoting Andrew Welch <awelch@xxxxxxxxxxxxxxx>: > > 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@xxxxxxxxxxxx [mailto:subbu@xxxxxxxxxxxx] > Sent: 16 July 2002 13:34 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] regarding strip-space, Andrew Welch | Thread | Re: [xsl] regarding strip-space, David Carlisle |
RE: [xsl] regarding strip-space, Andrew Welch | Date | RE: [xsl] the OTHER attributes with, Daniel N. Javastark |
Month |