Q:

parse xml with python - select children based on grandparent's siblings

I am trying to use ElementTree to parse an xml file.  Given the xml below, I need to write to file the 'chain_id' (under heading 'm') and 'name' (under heading 'r'), but only if the following criteria are met: 1.) 'css' (under heading 'i') is not -0, and 2.) 'bsa' > 0
I can keep track of the 'name' when the second criterion is met:
for r in root.iter('r'):
        name = r.find('name').text
        bsa = r.find('bsa').text
        if eval(bsa) > 0:
            print name

but I end up getting a lot of names I don't need because I can't figure out how to make this conditional on the first criterion.  I have looked into Xpath, but I am having difficulty implementing it.
To summarize, I am only interested in the children and great-grandchildren of 'm' if the sibling of 'm' ('css') has a certain value.
The xml file is fairly large, with > 20  'i's, at least two 'm's for each 'i', and >100 'r's for each 'm'.
I would prefer to do this with standard python methods (not lxml or beautiful stone soup)
<pi>
  <pe>
    <ni>20</ni>
    <i>
      <id>1</id>
      <css>-0</css>
      <m>
        <id>1</id>
        <chain_id>B</chain_id>
        <int_nres>19</int_nres>
        <rs>
          <r>
            <ser_no>1</ser_no>
            <name>MET</name>
            <seq_num>0</seq_num>
            <asa>157.15526405</asa>
            <bsa>0</bsa>
          </r>
          <r>
           .
           .
           .            
          </r>  
      <m>
        .
        .
        .
      </m>
    </i>
    <i>
      .
      .
      .
    </i>
  </pe>
</pi>

A:

myxml=ET.parse('path_to_yourxml')
for elem in myxml.getroot().findall('pi/pe/i'):
    if elem.find('css').text!='-0':
        for elem1 in elem.findall('m'):
            if eval(elem1.find('rs/r/bsa').text)>0:
                print elem1.find('rs/r/name').text

