Roger,
The first solution I came up with is essentially what you had to begin with.
(
<value>A\, B</value>,
<value>A, B</value>,
<value>A\, B, C</value>
) !
not(tokenize(text(),',')[position() ne last()][not(ends-with(.,'\'))])
Produces:
true false false
This regex is more concise and produces the same result:
not(matches(text(),'(?:[^\\]),'))
Cheers,
Vincent
________________________________
From: Dimitre Novatchev dnovatchev(_at_)gmail(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Friday, November 3, 2017 3:11:27 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Need an XPath expression which checks that all commas are
escaped
not(contains(replace(., '\\,', ''), ','))
On Fri, Nov 3, 2017 at 11:02 AM, Costello, Roger L.
costello(_at_)mitre(_dot_)org
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
Hi Folks,
I need an XPath 2.0 expression for this:
Check that each comma in the <value>
element is escaped with a backslash.
Examples:
This is good:
<value>A\, B</value>
This is bad:
<value>A, B</value>
This is also bad, because one comma is escaped but the other is not:
<value>A\, B, C</value>
I created an XPath expression to see if the text is good:
tokenize(text(), ',')[position() lt last()][ends-with(., '\')]
I think that is correct. Is there a simpler XPath expression to solve this?
/Roger
--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
To achieve the impossible dream, try going to sleep.
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
Typing monkeys will write all Shakespeare's works in 200yrs.Will they
write all patents, too? :)
-------------------------------------
Sanity is madness put to good use.
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--