[xsl] filter using contains with multiple values

Subject: [xsl] filter using contains with multiple values
From: "Raimund Kammering raimund.kammering@xxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 2 Mar 2016 18:42:52 -0000
Hi,

I created a filter statement using two variables to a) specify the node of
interest and b) the value to be matched:

XSL is like this:
...
<xsl:if test="*[name()=$filter]=contains(., $filter_value)b>
b&

feed with the following XML:

<list>
  <entry>
    <keyword>Log</keyword>
    <location>A</location>
  </entry>
  <entry>
    <keyword>Log</keyword>
    <location>B</location>
  </entry>
  <entry>
    <keyword>Problem</keyword>
    <location>A</location>
  </entry>
  <entry>
    <keyword>Info</keyword>
    <location>B</location>
  </entry>
</list>

so that setting bfilterb to bkeywordb and bfilter_valueb to
bLogb will only match the first two bentryb nodes. Fine so far, but
now
I would like to allow to pass in a flexile number of values for the
bfilter_valueb, like bLogb or bInfob to match the first two plus
the
last entry. I guess the solution would be to do this in kind of a loop, but
how can this be done with bfilter_valueb being a
simple XSL variable or is exactly this the weakness of the approach?

Ibrunning Saxon version: 9.1.0.8 so that Ibm able to use XSLT and XPath
2.0.

Thanks,
Raimund

Current Thread