Из_за ограничений, присущих прикладному интерфейсу XPath в IE, программ_ ный код примера 21.10 способен обрабатывать только те запросы, которые воз_
536 Глава 21. JavaScript и XML

вращают один или более узлов документа. В IE невозможно выполнить XPath_ выражение, которое возвращало бы строку или число. Однако прикладной ин_ терфейс для W3C позволяет это сделать с помощью, например, такого фрагмента:
// Определить количество тегов <p> в документе
var n = document.evaluate("count(//p)", document, null, XPathResult.NUMBER_TYPE, null).numberValue;
// Извлечь текст второго абзаца
var text = document.evaluate("//p[2]/text()", document, null, XPathResult.STRING_TYPE, null).stringValue;
По поводу этих двух простых примеров есть два замечания. Во_первых, для вы_ полнения XPath_выражения без предварительной компиляции в них вызывается метод document.evaluate(). В противоположность этому в примере 21.10 применя_ ется метод document.createExpression(), который компилирует XPath_выражение в форму, допускающую многократное использование скомпилированного выраже_ ния. Во_вторых, обратите внимание, что в этих примерах работа ведется с HTML_ тегом <p> объекта document. В броузере Firefox XPath_выражения могут использо_ ваться для работы как с XML_документами, так и с HTML_документами.
Дополнительные сведения о W3C XPath API вы найдете в четвертой части книги в разделах, посвященных объектам Document, XPathExpression и XPathResult.