[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Fwd: Re: Xsl:strip-space and xsl:preserve-space (XSLT
(retry due to mailer problems from yesterday)
Date: Tue, 23 Sep 2008 16:55:55 -0700 To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Subject: Re: Xsl:strip-space and xsl:preserve-space (XSLT 2.0) At 2008-09-24 04:21 +0530, Pankaj Chaturvedi wrote: In my stylesheet, I am stripping all the spaces, new line character while using <xsl:strip-space elements="*"/> which works perfectly as desired. But have you confirmed that without this statement this is not already happening? You don't mention which processor you are using or what invocation parameters you are using. In XSLT 1.0 you could rely on the source document white-space-only text nodes to be preserved (except when using Microsoft). In XSLT 2.0 you cannot rely on this, because the *invocation* of the XSLT processor can change whether or not white-space-only text nodes in source documents are preserved. Note, for example, the invocation of Saxon has the following parameter: -strip:all|none|ignorable Here is an example where the white-space between "</journal-title>" and "<first-page>" is shown to be stripped or preserved without saying anything in the stylesheet about stripping: T:\ftemp>type pankaj.xsl <?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="text"/> </xsl:stylesheet> T:\ftemp>type pankaj.xml <element1><surname>Dajnoki</surname>, <givenname>K.</givenname> (<year>2002</year>) <article-title>XXXXX YYYY</article-title>. <journal-title>ZZZZZZ XXXX</journal-title> <first-page>43</first-page>-<last-page>46</last-page>.</element1> T:\ftemp>saxon9 -strip:all pankaj.xml pankaj.xsl Dajnoki, K. (2002) XXXXX YYYY. ZZZZZZ XXXX43-46. T:\ftemp>saxon9 -strip:none pankaj.xml pankaj.xsl Dajnoki, K. (2002) XXXXX YYYY. ZZZZZZ XXXX 43-46. T:\ftemp> But now I've come across the requirement where I need to preserve spaces between the tags in few specific elements generally the punctuations(see below example) I tried to use the <xsl:preserve-space> to sort out this issue but doesn't seems to be working Perhaps that is because the data model for your document, as created by your stylesheet processor, is already stripping the white-space-only text nodes before your stylesheet is invoked. and "xsl:strip-space" seems to overcoming the effect of "xsl:preserve-space" effects. Can we use both to get their respective effects or simply they cannot be used together? They can be used together. Consider the following examples where, in pankaj2.xsl all elements are having their white-space-only text nodes stripped with <xsl:strip-space/> but in pankaj3.xsl there is the override with <xsl:preserve-space/>: T:\ftemp>type pankaj2.xsl <?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:strip-space elements="*"/> <xsl:output method="text"/> </xsl:stylesheet> T:\ftemp>saxon9 -strip:none pankaj.xml pankaj2.xsl Dajnoki, K. (2002) XXXXX YYYY. ZZZZZZ XXXX43-46. T:\ftemp>type pankaj3.xsl <?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:strip-space elements="*"/> <xsl:preserve-space elements="element1 element2"/> <xsl:output method="text"/> </xsl:stylesheet> T:\ftemp>saxon9 -strip:none pankaj.xml pankaj3.xsl Dajnoki, K. (2002) XXXXX YYYY. ZZZZZZ XXXX 43-46. T:\ftemp> Note: Spaces between the tags with any punctuation appears correctly (like in <surname>Dajnoki</surname>, <givenname>K.</givenname>) but fails in case of a single space between tags > < (for instance in </journal-title> <first-page> and results into the </journal-title><first-page> ) Stripping and preserving white-space-only text nodes do not impact text nodes that are not white-space-only. When there is punctuation the node is not white-space-only. I hope this helps. . . . . . . . . . . Ken
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|