|
Subject: [xsl] Need an XPath expression which returns all xs:pattern elements containing a regex that permits an unbounded number of characters From: "Roger L Costello costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 4 Apr 2024 12:28:59 -0000 |
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,.}"/>
I do not want either of the following xs:pattern elements because -- due to
the escape symbol -- they do not permit an unbounded number of characters:
<xs:pattern value="A\*"/>
<xs:pattern value="A\+"/>
I created an XPath 2.0 expression to find the desired xs:pattern elements:
xs:pattern[
contains(@value, '*') or
contains(@value, '+') or
contains(@value, '{1,}') or
contains(@value, '{0,}')
]
Eek! That is not correct. It incorrectly returns the xs:pattern elements with
escaped asterisk and escaped plus symbols:
<xs:pattern value="A\*"/>
<xs:pattern value="A\+"/>
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? Is that the best approach? Is there a better approach?
Bonus points if you can answer this question: Is my XPath expression catching
all xs:pattern elements that have a regex that permits an unbounded number of
characters?
Note: For reasons that I will not explain, the XPath expression must be an
XPath 2.0 expression.
/Roger
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] indenting maps on write, Graydon graydon@xxxx | Thread | Aw: [xsl] Need an XPath expression , Martin Honnen martin |
| Re: [xsl] indenting maps on write, David Carlisle d.p.c | Date | Aw: [xsl] Need an XPath expression , Martin Honnen martin |
| Month |