Re: [xsl] Case-insensitive filter match for template wanted

Subject: Re: [xsl] Case-insensitive filter match for template wanted
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 28 Mar 2017 09:57:07 -0000
> So I tried:
> <x:template match="section[ parameter/@name='Rule' ][ upper-case(
parameter/value/@entry ) = 'INPUT' ]" mode="processes" >
>
> But that gives me (using Saxon HE9.7.0.5):
> bA sequence of more than one item is not allowed as the first argument of
upper-case() ("INPUT", .....b

Well you could write

> match="section[ parameter/@name='Rule' ][ parameter/value/upper-case(@entry)
= 'INPUT' ]"

But the "correct" way to do case-insensitive matching is to use a collation:

> match="section[ parameter/@name='Rule' ][ parameter/value@entry = 'INPUT'
]"
> default-collation="http://www.w3.org/2013/collation/UCA?strength=2";

It depends a bit about whether you care what happens to characters like
"dotless i" (which probably aren't going to appear in your input unless you
are Turkish).


Michael Kay
Saxonica

Current Thread