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

Re: [xsl] How to create predicate dynamically

Subject: Re: [xsl] How to create predicate dynamically
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Fri, 25 May 2012 12:32:23 +0100

If it needs to be completely dynamic, then you need something like saxon:evaluate(), and you need to solve the problem with the apostrophes ;-)

One way to do that (and also to protect against code injection) is to generate a call using parameters:

saxon:evaluate("*[@type = $p1 or @type=$p2]", 'mc', 'ti')

But I wonder if it does need to be completely dynamic? Would

<xsl:variable name="x" select="('mc', 'ti')"/>
<... *[@type = $x] >

solve the problem?

Michael Kay

On 25/05/2012 10:55, Jesper Tverskov wrote:

I need to create predicates like the following dynamically:

[@type = 'mc' or @type='ti']

I need the full content of the predicate to be created in a variable
"x", to be inserted in the predicate like:

//qa [$x]

I have tried using saxon:evaluate() but run into problems with
apostrophes. What to do?

Jesper Tverskov

Current Thread