Subject: RE: XSLT and comma's in XML data
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 17 Feb 2005 09:16:46 -0000
|
CSV files unfortunately have many conventions but no standards. One of the
conventions is that when a field contains a comma, you put the field in
quotes. I've no idea what you are supposed to do if the field also contains
quotes. It would probably be a good idea to do some experiments with the
software that's expected to read this CSV file.
It probably does no harm to put the field in quotes unconditionally: I
assume you can tackle that on your own.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Ian Vaughan [mailto:i.vaughan@xxxxxxxxxxxxxxxxxxxxxxx]
> Sent: 17 February 2005 09:02
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: XSLT and comma's in XML data
>
> I am having a problem with my XML a snippet of which is shown below
>
>
> <PropertyAddress>
>
> <apd:A_5LineAddress>
> <apd:Line>Bank, Street</apd:Line>
> <apd:Line />
> <apd:Line />
> <apd:Line>Town</apd:Line>
> <apd:PostCode></apd:PostCode>
> </apd:A_5LineAddress>
>
> </PropertyAddress>
> ...........................etc
>
> The problem I am finding is that in the XML some fields such as
> <apd:Line> sometimes has data that contains a comma such as
> 'Bank,Street'
>
> Then when parsing this through the XSLT it is locating the comma
> seperating 'Bank,Street' and splitting up the data
>
> Any ideas on a solution would be most helpful
>
>
> This is the XSLT
>
> ----------------------------------------------------------
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:apd="http://www.govtalk.gov.uk/people/AddressAndPersonal
> Details">
> <xsl:output method="text" />
>
> <xsl:template match="/">
> <xsl:text>UniqueRecordID, RegistrationNumber, RegisteredName,
> Address1,
> Address2, Address3, Address4,PostCode, DateComplete,
> DescriptionOfWorkItems
> </xsl:text>
> <xsl:apply-templates select="//BuildingRecord"/> </xsl:template>
>
> <xsl:template match="BuildingRecord">
> <xsl:text> </xsl:text>
> <xsl:apply-templates select=".//*[not(*)] | .//apd:*/*"/>
> </xsl:template>
>
> <xsl:template match="BuildingRecord//* | apd:*/* ">
> <xsl:if test="position() > 1 ">,</xsl:if>
> <xsl:value-of select="normalize-space(.)"/> </xsl:template>
>
>
> </xsl:stylesheet>
>
> -----------------------------------------------------------
|