Subject: Re: [xsl] Need an XPath expression which returns all xs:pattern elements containing a regex that permits an unbounded number of characters From: "Piez, Wendell A. (Fed) wendell.piez@xxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 4 Apr 2024 14:38:08 -0000 |
Holla again, With every reason to trust David C, nonetheless wouldn't it be fine if we could, say, set up a bunch of unit tests to actually determine which of these subtle incantations do as we think they do? An XSpec sheet could be wired to test both regex-based and parsing-based solutions as implemented in XSLT, to give Roger the confidence he needs in his approach. I jump in to mention of XSpec mainly because these questions are surrounded by the problem of what's "easy". It depends. Maybe paper-napkin analysis followed by some interactive free-form testing is good enough. Cheers, Wendell From: David Carlisle d.p.carlisle@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Sent: Thursday, April 4, 2024 10:21 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Need an XPath expression which returns all xs:pattern elements containing a regex that permits an unbounded number of characters On Thu, 4 Apr 2024 at 14:48, Willem Van Lishout willemvanlishout@xxxxxxxxx<mailto:willemvanlishout@xxxxxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx<mailto:xsl-list-service@xxxxxxxxxxxx rytech.com>> wrote: Is this even possible, theoretically speaking? As soon as you start using lookaheads, square brackets, and so on, your patterns will likely fail. I don't think regex can parse regex. I don't think the regex needs to be parsed here: you can destructively normalise it before testing eg replace ( replace(replace(,.'\s','') , '\\.' , 'x'), `\{-0-9]*,\}`,'*`) would get rid of all white space, replace \-quoted characters by x and a{ 99, } constructs by a* which should simplify looking for * and + David 4 Apr 2024, at 20:15, "David Carlisle d.p.carlisle@xxxxxxxxx<mailto:d.p.carlisle@xxxxxxxxx>" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx<mailto:xsl-list-service@xxxxxxxxxxxx rytech.com>> wrote: On Thu, 4 Apr 2024 at 13:29, Roger L Costello costello@xxxxxxxxx<mailto:costello@xxxxxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx<mailto:xsl-list-service@xxxxxxxxxxxx rytech.com>> wrote: Hi Folks, I want to find, in an XML Schema, all xs:pattern elements containing a regex that permits an unbounded number of characters. Here are examples of xs:pattern elements that I want to find: <xs:pattern value="A*"/> <xs:pattern value="A+"/> <xs:pattern value="A{0,.}"/> <xs:pattern value="A{1,.}"/> How to fix my XPath expression? Is the solution to add a second predicate: xs:pattern[ contains(@value, '*') or contains(@value, '+') or contains(@value, '{1,}') or contains(@value, '{0,}') ][ not(contains(@value, '\*')) and not(contains(@value, '\+')) ] Is that correct? No. A pattern \\* matches an unbounded list of backslashes but fails your test as it contains \* A pattern X{5,} matches an unbounded list of X of at least 5 but doesn't match your first predicate. XSL-List info and archive<http://www.mulberrytech.com/xsl/xsl-list> EasyUnsubscribe<http://lists.mulberrytech.com/unsub/xsl-list/3166594> (by email) XSL-List info and archive<http://www.mulberrytech.com/xsl/xsl-list> EasyUnsubscribe<http://lists.mulberrytech.com/unsub/xsl-list/2739265> (by email) XSL-List info and archive<http://www.mulberrytech.com/xsl/xsl-list> EasyUnsubscribe<http://lists.mulberrytech.com/unsub/xsl-list/3302254> (by email<>)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Need an XPath expression , David Carlisle d.p.c | Thread | Re: [xsl] Need an XPath expression , David Carlisle d.p.c |
Re: [xsl] indenting maps on write, Graydon graydon@xxxx | Date | Re: [xsl] indenting maps on write, Piez, Wendell A. (Fe |
Month |