[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] XML



>>>>> Jakub Wilk <jwilk@debian.org> writes:
>>>>> * Ivan Shmakov <oneingray@gmail.com>, 2012-11-26, 14:32:

 >> Seriously, XML takes a lot of concerns off an application
 >> programmer. It provides quoting, arbitrary hierarchical structure,
 >> support for different encodings, etc.  Why, don't you think that
 >> $ grep [[:lower:]]' FILE is ever supposed to work?  For surely it
 >> isn't: grep has no way to know the encoding of the input file, and
 >> relies on the locale instead.  On the contrary, XML allows for the
 >> encoding to be specified explicitly via a processing instruction.
 >> And then, there's XPath, which takes the input dataset structure
 >> into account.

 > How do you search for a lowercase letter in XPath?

	With fn:matches (WHERE, "\p{Ll}")?

	Specifically, if you're interested in all ENTRY elements, whose
	respective KEY's contain a lower-case letter, it may look
	something like the following:

//x:entry[fn:matches (x:key/text (), "\p{Ll}")]

	For instance, using xqilla(1) (xmlstarlet(1) doesn't seem to
	support fn:matches ()):

$ cat < cf.xml 
<!DOCTYPE cf>
<cf xmlns="urn:uuid:95364fc4-e68d-492e-a122-7b3b37bdab10">
  <entry>
    <key>there be an all-lowercase key</key>
    <value>all-lowercase key's value</value>
  </entry>
  <entry>
    <key>THERE BE AN ALL-UPPERCASE KEY</key>
    <value>all-uppercase key's value</value>
  </entry>
  <entry>
    <key>There be a Mixed-case Key</key>
    <value>mixed-case key's value</value>
  </entry>
</cf>
$ xqilla -i cf.xml \
      <(printf %s\\n '\
declare namespace x="urn:uuid:95364fc4-e68d-492e-a122-7b3b37bdab10";' \
            '//x:entry[fn:matches (x:key/text (), "\p{Ll}")]') 
<entry xmlns="urn:uuid:95364fc4-e68d-492e-a122-7b3b37bdab10">
    <key>there be an all-lowercase key</key>
    <value>all-lowercase key's value</value>
  </entry>
<entry xmlns="urn:uuid:95364fc4-e68d-492e-a122-7b3b37bdab10">
    <key>There be a Mixed-case Key</key>
    <value>mixed-case key's value</value>
  </entry>
$ 

-- 
FSF associate member #7257


Reply to: