I've had the opposite problem with MSXML. I have had inconsistent
experiences as far as white space goes with its processor. Generally,
it removes _all_ white space, which makes debugging difficult -- Try to
find the piece of code you are looking for when the entire document has
no breaks or tabs.
I played around with xsl:preserve-space, xsl:strip-space, and xsl:output
indent="yes". output[(_at_)indent] helped, but it just broke the lines very
frequently -- didn't actually indent.
My point is that maybe there are options or shortcomings in your xml
processor that make it shade into the grey area on things like whitespace.
Mike
Macaulay,Malcolm (US) wrote:
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">	</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(_at_)microsoft(_dot_)com]
Sent: Thursday, October 10, 2002 2:18 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] 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 ' '. 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 '	' instead. I'm pretty sure that that is the tab
character ...
Rich
-----Original Message-----
From: Macaulay,Malcolm (US) [mailto:Malcolm(_dot_)Macaulay2(_at_)cnare(_dot_)com]
Sent: Thursday, October 10, 2002 10:55 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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