MSXML字符串比较问题

时间:2010-12-17 16:36:51

标签: xml msxml xpath

有人可以解释为什么这个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);

1 个答案:

答案 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"