[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XPath expression which checks that all commas are escaped
> not(contains(replace(., '\\,', ''), ',')) And, of course: not(matches(., '[^\\],')) Cheers, Dimitre On Fri, Nov 3, 2017 at 12:14 PM, Dimitre Novatchev <dnovatchev@gmail.com> wrote: > not(contains(replace(., '\\,', ''), ',')) > > On Fri, Nov 3, 2017 at 11:40 AM, Costello, Roger L. <costello@mitre.org> wrote: >> Hi Folks, >> >> Do you deal with Request for Comments (RFCs)? Then the following might come >> in handy someday. >> >> Note: Thanks to Martin Honnen for helping me with the XPath expression >> (below). >> >> Some RFCs (e.g., vCard) have this rule: >> >> >> >> Each comma in a value must be escaped with a backslash. >> >> >> >> Examples: >> >> >> >> This value is good: >> >> >> >> A\, B >> >> >> >> This value is bad: >> >> >> >> A, B >> >> >> >> This value is also bad, because one comma is escaped but the other is not: >> >> >> >> A\, B, C >> >> >> >> Suppose the RFC has an XML representation. Or, you have used something like >> DFDL to convert the data to XML. >> >> Then, this XPath expression checks to see that each comma is properly >> escaped: >> >> every $token in tokenize(., ',')[position() lt last()] satisfies >> ends-with($token, '\') >> >> >> >> That XPath expression can be used in Schematron like this: >> >> <sch:pattern id="Escaping-Rules"> >> >> <sch:rule context="value"> >> >> <sch:assert test="every $token in tokenize(., ',')[position() lt >> last()] satisfies ends-with($token, '\')"> >> A COMMA character in a value MUST be escaped with >> a BACKSLASH character (U+005C). >> </sch:assert> >> >> </sch:rule> >> >> </sch:pattern> > > > > -- > 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. -- 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.
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|