Hi Andrew,
The following xslt may help you:
<?xml version='1.0' ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="inserted" >
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="deleted" >
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
It outputs:
<?xml version="1.0" encoding="UTF-16"?>
<Text>The quick brown fox jumped over the lazy dog.</Text>
You will however retain spaces that were already there (that's why you now
get two spaces before the words 'brown' and 'dog').
HTH,
<prs/>
-----Original Message-----
From: Andrew Madigan [mailto:Andrew_Madigan(_at_)skillsoft(_dot_)com]
Sent: Wednesday, June 16, 2004 2:47 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] xml nodes with spaces (at start, end, or just spaces) not
showing correctly with xsl
Hi,
I am trying to display xml that has formatting and also has a form of 'track
changes' in a browser using xsl.
The 'track changes' is implemented by using <inserted> and <deleted> tags to
identify changes (these are escaped with < > etc. in the XML).
I want to display the latest version of the content so I show insertions and
do not show deletions.
Sample XML (snippet):
<Text>The<inserted> </inserted>quick<deleted>
</deleted> brown fox<inserted>
</inserted>jumped<inserted> </inserted>over the
lazy<deleted> </deleted> dog.</Text>
....which without the escaping becomes:
<Text>The<inserted> </inserted>quick<deleted> </deleted> brown fox<inserted>
</inserted>jumped<inserted> </inserted>over the lazy<deleted> </deleted>
dog.</Text>
So I am trying to get this to show as "The quick brown fox jumped over the
lazy dog."
Sample XSL 1 (snippet):
<xsl:template match="deleted"/>
<xsl:template match="inserted">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="br">
<br/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="i">
<i>
<xsl:apply-templates/>
</i>
</xsl:template>
<xsl:template match="b">
<b>
<xsl:apply-templates/>
</b>
</xsl:template>
Sample XML 2 (snippet):
<xsl:template match="deleted"/>
<xsl:template match="inserted">
<xsl:copy-of-select='.'/>
</xsl:template>
<xsl:template match="br">
<br/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="i">
<i>
<xsl:apply-templates/>
</i>
</xsl:template>
<xsl:template match="b">
<b>
<xsl:apply-templates/>
</b>
</xsl:template>
I have tried both of these solutions and neither work. I need to be able to
have formatting inside the insertions - hence the attempt to use
<xsl:apply-templates/>.
The output I am getting is "Thequick brown foxjumpedover the lazy dog."
- as though the spaces were never inserted.
Thanks in advance for any help or suggestions.
Andy
--+------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--