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了
http://blog.csdn.net/avon520/archive/2008/11/21/3345919.aspx