[xml] =?utf-8?q?Does_not_support_the_expression_=3A_/descendant?= =?utf-8?b?Ojpub2RlKCkvcmVjL2NoaWxkOsKtOm5vZGUoKVsxXT8=?=



Hi,
I have a XML file (test.xml) as follows:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
  <table>
    <rec id="1">
      <para type="error" position="1"/>
      <para type="error" position="2"/>
      <para type="error" position="3"/>
    </rec>
    <rec id="2">
      <para type="warning" position="1"/>
      <para type="warning" position="2"/>
      <para type="warning" position="3"/>
    </rec>
    <rec id="3">
      <para type="info" position="1"/>
      <para type="info" position="2"/>
      <para type="info" position="3"/>
    </rec>
  </table>
</xml>
 
Appling command line "xmllint.exe --xpath /descendant::node()/rec/child::node()[1] test.xml", the output are several empty lines.
 
If I change the XPath _expression_ to /descendant::node()/rec/child::*[1] or /descendant::node()/rec/para[1], the output would be:
<para type="error" position="1"/><para type="warning" position="1"/><para type="info" position="1"/>
According to the XPath spec (V2.0 section 3.2.3 Unabbreviated Syntax) : child::node() selects all the children of the context node. Note that no attribute nodes are returned, because attributes are not children.
Shouldnât it have the same output as /descendant::node()/rec/child::*[1] and /descendant::node()/rec/para[1]?
As for the tools that I used:   (Win32 version from http://www.zlatkovic.com/libxml.en.html)
 
libxml2-2.7.8.win32 (depends on iconv-1.9.2.win32 and zlib-1.2.5.win32). A xmllint.exe tool has been included in the "bin" directory.