function parseXML(s){
    var result=new ActiveXObject("MSXML2.DOMDocument.6.0");
    result.loadXML(s);
    return result;
}var sXml="\
<a id='a0'>\
   <b id='b1'>\
   <a id='a1'>\
   <b>\
   <a>...</a>\
   </b>\
   </a>\
   <b>\
   <a id='a2'>\
   <a id='a3'>...</a>\
   </a>\
   </b>\
   </b>\
</a>"var doc=parseXML(sXml);
var a=doc.selectNodes("//*[@id='b1']")[0];
var arNodes=a.selectNodes(".//a[not(ancestor::a)]");
for(var i=0;i<arNodes.length;i++){
    WScript.echo(arNodes[i].xml)
}
选择要求:1. tagname 为 a
2. 是 b1 的后代
3. 在 b1 的范围内没有任何 a 祖先所以,符合要求的只有 a1和a2, 而 a3 不符合现有问题:
not(ancestor::a) 会受到 a0 的影响就选不到 a1 和 a2了