[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: RE: [xsl] Help quoting sequence elements


Subject: RE: RE: [xsl] Help quoting sequence elements
From: cknell@xxxxxxxxxx
Date: Thu, 05 Jul 2007 15:28:18 -0400

I'm all for short-windedness (how's that for malapropistic neologism?), but when I try to substitute:

<xsl:value-of select="for $i in $code-list return concat('''', $i, '''')" 
  separator=", "/> 

<xsl:value-of select="concat('''', $code-list, '''')" 
  separator=", "/> 

my XSLT processor tells me:

XPTY0004: A sequence of more than one item is not allowed as the second argument of concat()

So how would I write the shorter expression?

Thanks.

-- 
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     Michael Kay <mike@xxxxxxxxxxxx>
Sent:     Tue, 3 Jul 2007 21:06:32 +0100
To:       <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Subject:  RE: [xsl] Help quoting sequence elements

<xsl:value-of select="for $i in $code-list return concat('''', $i, '''')" 
  separator=", "/> 

Incidentally, the expression

for $i in $code-list return $i

is just a long-winded way of writing

$code-list

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: cknell@xxxxxxxxxx [mailto:cknell@xxxxxxxxxx] 
> Sent: 03 July 2007 20:48
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Help quoting sequence elements
> 
> I have this variable defined in my stylesheet:
> 
> <xsl:variable name="code-list" 
> select="document('../../hiring-report/xml/position-translation
> .xml')/position-translation/position/code[@pf='pf']" />
> 
> In a template, I have this element:
> <xsl:value-of select="for $i in $code-list return $i" />
> 
> which produces output like this:
> ACC ACT AO ATT AUD BA CI CLK ...
> 
> This is good, but I need output like this:
> 
> 'ACC',' ACT',' AO',' ATT',' AUD',' BA',' CI',' CLK', ...
> 
> That is to say, I need the individual elements of the 
> sequence to be surrounded by single quotes and separated by commas.
> 
> I've been reviewing some examples, but can't figure out how 
> to employ concat() to get the result I need. I'm at the point 
> where I've concluded that there is something fundamental I 
> don't understand here and I'm asking for someone to point it out.
> 
> Thanks. 
> 
> This produces
> 
> --
> Charles Knell
> cknell@xxxxxxxxxx - email


Current Thread
Keywords