XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Manikandan SurendranathSubject: normalise whitespace in the output
Author: Manikandan Surendranath
Date: 18 May 2005 01:27 AM
Hi,

The xslt I am writing requires list items to be concantinated. But the problem I have is the additional white space I am getting in the output. Below is model that recreates the issue I am facing.

Input XML
<?xml version="1.0"?>
<root>
<p>The fruites recomended</p>
<ul>
<li>apple</li>
<li>orange</li>
<li>banana</li>
</ul>
</root>

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

<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>

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

<xsl:template match="ul">
<p>
<xsl:apply-templates select="@*|node()"/>
</p>
</xsl:template>

<xsl:template match="li">
<xsl:if test="preceding-sibling::li">,</xsl:if><xsl:apply-templates select="@*|node()"/>
</xsl:template>

</xsl:stylesheet>

Current output
<?xml version='1.0' ?>
<root>
<p>The fruites recomended</p>
<p>
apple
,orange
,banana
</p>
</root>

Expected output
<?xml version='1.0' ?>
<root>
<p>The fruites recomended</p>
<p>apple,orange,banana</p>
</root>

Postnext
Ivan PedruzziSubject: normalise whitespace in the output
Author: Ivan Pedruzzi
Date: 18 May 2005 03:16 AM
Hi Manikandan,

You need to override the match template where text nodes are not relevant

match='*' matches only elements
match='node()' matches element, text node, comments, processing instructions, etc

Hope this helps
Ivan Pedruzzi
Stylus Studio Team


<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

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

<xsl:template match="root">
<xsl:apply-templates select="*"/>
</xsl:template>

<xsl:template match="ul">
<b>
<xsl:apply-templates select="*"/>
</b>
</xsl:template>

<xsl:template match="li">
<xsl:if test="preceding-sibling::li">,</xsl:if>
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
</xsl:stylesheet>

Posttop
Manikandan SurendranathSubject: normalise whitespace in the output
Author: Manikandan Surendranath
Date: 18 May 2005 08:09 AM
Yes I reduced most of the unnecessary whitespace. Thanks.

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.