Subject: Re: [xsl] XPath expression which checks that a string is between 1 and 10 characters in length? From: "Eliot Kimber ekimber@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 26 Jul 2016 13:29:57 -0000 |
How about: if (string(.) != '') then string-length(.) le 10 else false() That requires casting the context to a string twice but calculating string-length() once. Or matches(., '..?.?.?.?.?.?.?.?') (Can I do that with '..?{0,10}'? Reviewing the syntax it looked like the quantifier could only be a single digit.) Cheers, Eliot > On July 26, 2016 at 7:01 AM "Wolfgang Laun wolfgang.laun@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > > Just for fun: > > string-length() idiv 2 le 5 > > Optimization by obfuscation. Phooey. > -W > > On 26 July 2016 at 13:55, Martin Honnen martin.honnen@xxxxxx < > xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > > On 26.07.2016 13:51, Costello, Roger L. costello@xxxxxxxxx wrote: > > > > I need an XPath expression which returns true if the string in <A> is > >> between 1 and 10 characters in length, and false otherwise. > >> > >> For example, the XPath expression should return true on this XML: > >> > >> <A>hi</A> > >> > >> Here's an inefficient XPath expression: > >> > >> (string-length(.) gt 0) and (string-length(.) le 10) > >> > >> It's inefficient because it computes the string length twice. > >> > >> Is there a more efficient XPath expression to solve this problem? > >> > > > > Well, in XPath 3 you can use > > > > let $l := string-length() > > return ($l gt 0 and $l le 10)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath expression which ch, Wolfgang Laun wolfga | Thread | Re: [xsl] XPath expression which ch, Dimitre Novatchev dn |
Re: [xsl] XPath expression which ch, Wolfgang Laun wolfga | Date | Re: [xsl] XPath expression which ch, Dimitre Novatchev dn |
Month |