xsl-list
[Top] [All Lists]

RE: CSV file from an XML source file using XSLT

2003-08-20 05:41:25
Hi,

So this is interesting. Obviously the pound sign wasn't the problem at al.
The XML source comes from MS Access. It would seem that Access uses a 2019
(a right single quotation) and not an real apostrophe (0027). So although I
do have control over the input, I can't seem to change it. 

It's strange I transformed this data into various XML formats (encoded to
ISO) but they do not give me a problem. However I did use the cdata elements
command which I guess avoided the issue?

I am trying to understand your translate function. My XSL is quite simple
(sample below), the only challenge is that the Description field  in the
source XML has these 2019s in it. I would be grateful of any further help
anyone can give.

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output encoding="ISO-8859-1" method="text" indent="no" />
<xsl:template match="dataroot">
"Term","Term2","Description"
<xsl:for-each select="XMLFeed">
"<xsl:value-of select="Term"/>","<xsl:value-of
select="Term2"/>","<xsl:value-of select="Description"/>",</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

 



  



-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Matt Trimmer
Sent: 17 August 2003 21:44
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] CSV file from an XML source file using XSLT



Thank you very much!
 



  



-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf 
Of 
G. Ken Holman
Sent: 17 August 2003 21:13
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] CSV file from an XML source file using XSLT


At 2003-08-17 18:54 +0100, Matt Trimmer wrote:
Thanks for this, but this is what I am doing and I get:

Output character not available in this encoding (decimal 8217).

Transformation failed.

Yes, of course it would ... that character is:

2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA
QUOTATION MARK;;;;

... and that isn't a text character in any character set
other than Unicode.

At 2003-08-16 00:11 +0100, Matt Trimmer wrote:
I need to make the CSV file ISO as opposed UTF
otherwise common viewers such as excel will not read the
information in
the CSV file properly.

Then you can't use the right single quotation mark, because
that isn't an 
ISO character ... the error message is precise and 
unambiguous: you are 
asking to output a character that is not available in your 
desired encoding.

Perhaps you could use a single quote in its place.  If you 
don't have
control over your input, you might consider the translate() 
function as I 
have in the example below, where I first replicate your 
problem (you didn't 
give us any sample code to work with) and then suggest the 
use of the function.

I hope this helps.

............ Ken


T:\ftemp>type trimmer.xsl
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:myns="dummy"
                 version="1.0">

<xsl:output method="text" encoding="iso-8859-1"/>

<myns:input> Here is a single comma quotation mark:
&#8217;</myns:input>

<xsl:template match="/">
   <xsl:value-of select="document('')/*/myns:input"/>
</xsl:template>

</xsl:stylesheet>

T:\ftemp>saxon trimmer.xsl trimmer.xsl
Error at xsl:value-of on line 11 of file:/T:/ftemp/trimmer.xsl:
   Output character not available in this encoding (decimal
8217) Transformation failed: Run-time errors were reported

T:\ftemp>type trimmer2.xsl
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:myns="dummy"
                 version="1.0">

<xsl:output method="text" encoding="iso-8859-1"/>

<myns:input> Here is a single comma quotation mark:
&#8217;</myns:input>

<xsl:template match="/">
   <xsl:value-of select="translate(document('')/*/myns:input,
                                   '&#8217;',&#34;'&#34;)"/>
</xsl:template>

</xsl:stylesheet>

T:\ftemp>saxon trimmer2.xsl trimmer2.xsl
  Here is a single comma quotation mark: '
T:\ftemp>rem Done!

T:\ftemp>


--
Instructor-led on-site corporate, government & user group
training for XSLT and XSL-FO world-wide; please contact us 
for the details; Next public European delivery:  3-day 
XSLT/2-day XSL-FO 2003-09-22

G. Ken Holman                 
mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
ISBN 0-13-065196-6                       Definitive XSLT and XPath
ISBN 0-13-140374-5                               Definitive XSL-FO
ISBN 1-894049-08-X   Practical Transformation Using XSLT and XPath
ISBN 1-894049-11-X               Practical Formatting Using XSL-FO
Member of the XML Guild of Practitioners:     http://XMLGuild.info
Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc


 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