xsl-list
[Top] [All Lists]

RE: xml nodes with spaces (at start, end, or just spaces) n ot showing correctly with xsl

2004-06-16 06:49:18
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 &lt; &gt; 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&lt;inserted&gt; &lt;/inserted&gt;quick&lt;deleted&gt;
&lt;/deleted&gt; brown fox&lt;inserted&gt;
&lt;/inserted&gt;jumped&lt;inserted&gt; &lt;/inserted&gt;over the
lazy&lt;deleted&gt; &lt;/deleted&gt; 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>
--+--


<Prev in Thread] Current Thread [Next in Thread>
  • RE: xml nodes with spaces (at start, end, or just spaces) n ot showing correctly with xsl, Pieter Reint Siegers Kort <=