Ahh, good point, yes I should be more clear about the differences.  You are right, it is about working with a list of elements that all have the same tag_name.  The XPAth implementation we have cannot handle this - i.e. ``element_by_parent()`` would only return the first match.  We have some XML structures in schema that do this, so I found it convenient to just write special accessor generator for it.  For example:

     <capabilities>
       <host>
         <topology>
             <cell id='0'>
               <cpus num='4'>
                 <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
                 <cpu id='1' socket_id='3' core_id='0' siblings='1'/>
                 <cpu id='2' socket_id='0' core_id='1' siblings='2'/>
                 <cpu id='3' socket_id='3' core_id='1' siblings='3'/>
     ...

I will add more/better comments and documentation for this.  Thanks.