xsl-list
[Top] [All Lists]

Re: [xsl] Need an XPath expression which checks that all commas are escaped

2017-11-03 14:45:48
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
--~--
<Prev in Thread] Current Thread [Next in Thread>