Может кто-нибудь объяснить, почему это
Код 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"