Subject: RE: [xsl] Using translate() for single quotes in XSL1.0|
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 25 Aug 2006 21:55:44 +0100
The translate() function does one-to-one replacement of characters. To do anything else, use the replace() function in XSLT 2.0, or look at the FAQ under "replace" to see how to do it under 1.0. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Oleg Konovalov [mailto:olegkon@xxxxxxxxx] > Sent: 25 August 2006 21:12 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Cc: ythakare@xxxxxxxxxxx > Subject: [xsl] Using translate() for single quotes in XSL1.0 > > Hi, > > I am writing an XSL Transformer for SQL query and some of the > column values ("ASSOCIATION_NAME") in DB might have a single > quote in the name, which poses a problem in SQL. > > Example: > > <xsl:text> ... > (SELECT association_id > FROM ASSOCIATION > WHERE association_name='</xsl:text> > <xsl:value-of > select='$row/sht:Cell[sht:Name="ASSOCIATION_NAME"]/sht:Content > '/><xsl:text>' > ) )</xsl:text>... > > like: "MACY'S" > So I tried to use to replace 1 single quote in the column values with > 2 single quotes > which SQL should resolve using translate(value, "'", "''"). > But there is such a mishmash of quotes and double quotes that > it's impossible to resolve: > ... > <xsl:value-of select='translate( > $row/sht:Cell[sht:Name="ASSOCIATION_NAME"]/sht:Content, '"", "'''")'/> > > Any way around it, maybe via ASCII of single quotes ? > > > Thank you in advance, > Oleg.