Subject: Re: [xsl] reading a .xsv file in xslt From: ac <ac@xxxxxxxxxxxxx> Date: Wed, 03 Feb 2010 05:27:53 -0500 |
Thank you, ac
On 3 February 2010 04:11, ac <ac@xxxxxxxxxxxxx> wrote:
Hi,
Andrew, your code is fine but it seems that, to read lines, the line
<xsl:variable name="lines" select="tokenize($csv, ' ')"
as="xs:string+" />
should be more like
<xsl:variable name="lines" select="tokenize($csv, '\r?\n')"
as="xs:string+" />
as there could be spaces in the cells, and as the end-of-line would not be
recognized anyway.
What do you think?
That's from it being displayed as html (which i should probably fix)... if you use the download link to get the file instead then you can see that it tokenizes on a carriage return:
<xsl:variable name="lines" select="tokenize($csv, '
')" as="xs:string+"/>
Also, but purely as a matter of taste and case, since all cell values are
strings, I would tend to use attributes, replacing
<elem name="{.}">
<xsl:value-of select="$lineItems[$pos]" />
</elem>
with
<xsl:attribute name="{.}" select="$lineItems[$pos]"/>
See below.....
Finally, one may also have to handle the case of csv files that do not have
an initial header line with all valid QName strings.
It can - that's why the name is stored as a name attribute on a general <elem> element, so that they dont have to be QNames.
I get a lot of csv files (e.g. from the bank) where the first line is a
blank line
Use normalize-space on the entire csv text (the string returned from unparsed-text) then use it again on the column names.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] reading a .xsv file in xs, Wolfgang Laun | Thread | Re: [xsl] reading a .xsv file in xs, Andrew Welch |
Re: [xsl] best practices, insert PI, Andrew Welch | Date | Re: [xsl] are all strings in a sequ, ac |
Month |