有人可以解释为什么这个JavaScript代码输出零而不是一个?此外,当元素// [e [2]和// e [3]被交换时它起作用,为什么?
doc = new ActiveXObject("MSXML2.DOMDocument.4.0");
doc.loadXML(
"<r> " +
" <e id='a'> " +
" <e id='b'/> " +
" <e id='c'/> " +
" </e> " +
"</r> ")
doc.setProperty("SelectionNamespaces", "xmlns:ms='urn:schemas-microsoft-com:xslt'");
WScript.Echo(doc.selectNodes("/r/e[ms:string-compare(e/@id,'c','en-US', 'i')=0]/@id").length);
答案 0 :(得分:1)
有人可以解释一下为什么会这样 JavaScript代码输出为零 一个?此外,当元素// e [2]和 // e [3]被交换然后它有效,为什么?
因为你的扩展功能公司是
number ms:string-compare(string x, string y, [,string language _
[,string options]])
因此,对节点集求值的e/@id
最内层表达式将转换为获取节点集中第一个节点的字符串。
如果没有扩展名,您可以使用:
/r/e[e/@id[translate(.,'C','c')='c']]/@id"