[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: removing tab formatting during XSLT?

Subject: RE: removing tab formatting during XSLT?
From: "Macaulay,Malcolm (US)" <Malcolm.Macaulay2@xxxxxxxxx>
Date: Thu, 10 Oct 2002 16:13:23 -0500
xslt apply
Thanks Richard, Joerg, and Michael,

That works great. I did the transform using Instant Saxon and all the tabs were gone. I need to have a play with MSXML in my application and confirm that this works. I've been using XMLSpy, but this is misleading me, because:

 - XMLSpy indents (i.e. 'pretty-prints') the resulting XML if your use it's 'Apply XSL' facility
 - XMLSpy does not however format files which you open

Thanks again!

cheers

Malcolm



-----Original Message-----
From: Richard Lander [mailto:rlander@xxxxxxxxxxxxx]
Sent: Thursday, October 10, 2002 3:16 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE:  removing tab formatting during XSLT?


Does this help?

<?xml version="1.0"?> 
<xslt:stylesheet xmlns:xslt="http://www.w3.org/1999/XSL/Transform" version="1.0">

	<xslt:template match="/">
		<xslt:apply-templates/>
	</xslt:template>
	
	<xslt:template match="node() | @*">
		<xslt:copy>
			<xslt:apply-templates select="node() | @*"/>
		</xslt:copy>
	</xslt:template>

	<xslt:template match="text()">
		<xslt:value-of select="normalize-space(.)"/>
	</xslt:template>	

</xslt:stylesheet>

Rich 
 
-----Original Message-----
From: Macaulay,Malcolm (US) [mailto:Malcolm.Macaulay2@xxxxxxxxx] 
Sent: Thursday, October 10, 2002 1:01 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx

Thanks Richard,

Still no go however. I changed my XLST to:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
	
	<xsl:strip-space elements="*"/>
	
	<xsl:template match="/">
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template match="*">
		<!-- recreate the element -->
		<xsl:element name="{name()}">
			<xsl:apply-templates/>
		</xsl:element>
	</xsl:template>
	
	<xsl:variable name="tab">&#x9;</xsl:variable>
	
	<xsl:template match="text()">
		<xsl:value-of select="translate(. , $tab , '')"/>
	</xsl:template>

</xsl:stylesheet> 

However the match="text()" template does not get invoked on the * element below:

<?xml version="1.0"?>
<A>
	*<B att="att">a</B>
	<C>b</C>
	<D>c</D>
</A>

I'm clearly misunderstanding this. Is there a text element in the * position?

Any additional help would be greatly appreciated.

cheers

Malcolm


-----Original Message-----
From: Richard Lander [mailto:rlander@xxxxxxxxxxxxx]
Sent: Thursday, October 10, 2002 2:18 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE:  removing tab formatting during XSLT?


I've done this sort of thing before ... 

You have two problems, as I see it.

1- you are referencing a named entity (nbsp;) w/o really doing so. You would need to use '&nbsp;'. Still, that probably doesn't make any sense, given that a non-breaking space isn't the same as a tab.

2. You should search on '&#x9;' instead. I'm pretty sure that that is the tab character ...

Rich
 
-----Original Message-----
From: Macaulay,Malcolm (US) [mailto:Malcolm.Macaulay2@xxxxxxxxx] 
Sent: Thursday, October 10, 2002 10:55 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx

Could someone please enlighten me on how I can remove tab formatting from my resulting XML.

Here's an example:

Source XML:

<?xml version="1.0"?>
<A>
	<B att="att">a</B>
	<C>b</C>
	<D>c</D>
</A>

Desired output XML (i.e. the same as input but with all tabs removed):

<?xml version="1.0"?><A><B att="att">a</B><C>b</C><D>c</D></A>

XSLT (which doesn't work):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
	
	<xsl:strip-space elements="*"/>
	
	<xsl:template match="/">
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template match="*">
		<!-- recreate the element -->
		<xsl:element name="{name()}">
			<!-- copy existing attributes-->
			<xsl:for-each select="@*">
				<xsl:copy/>
			</xsl:for-each>
			<xsl:apply-templates/>
		</xsl:element>
	</xsl:template>
	
	<xsl:variable name="tab">nbsp;</xsl:variable>
	
	<xsl:template match="text()">
		<xsl:value-of select="translate(. , $tab , '')"/>
	</xsl:template>

	<!-- original attempt	
	<xsl:template match="text()">
		<xsl:value-of select="normalize-space(.)"/>
	</xsl:template>
 	-->
 
</xsl:stylesheet>

I want to remove the tabs because this significantly reduces the size of the file.

Thanks in advance.

cheers

Malcolm

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.