Реализация XPath в Firefox следует общим стандартам DOM и це ком отличается от реализации XPath в IE. Реализация в Firefox по ляет выполнять выражения XPath как в документах XML, так и в j кументах HTML. В основе реализации находятся два первичных екта: XPathEvaluator и XPathResult.
Класс XPathEvaluator вычисляет заданное выражение XPath с помои метода evaluateO, который принимает пять аргументов: строку с i ражением XPath, контекстный узел, к которому должно быть прв нено выражение, интерпретатор пространств имен (функцию, кот будет обрабатывать пространства имен в выражении), тип результ (существует десять различных типов результата) и объект XPath Res в который будут помещаться результаты выборки (если в этом а; менте передается значение null, будет создан и возвращен новый i ект XPathResult).
Прежде чем двинуться дальше, необходимо разобраться с различв типами результата, которые могут возвращаться методом evaluate Список их приводится ниже:
• XPathResult. ANY_TYPE - не какой-то конкретизированный тип, угодно тип. Метод возвращает тип, который естественным обр вытекает из вычисления выражения.
• XPathResult.ANY_UNORDERED_NODE_TYPE- возвращает набор узлов, стоящий из единственного узла, к которому можно обратиться' рез свойство singleNodeValue. В случае если требуемый узел не бу найден, возвращается значение null. Возвращаемый узел мо быть, а может не быть первым узлом в документе, соответст щим заданному критерию отбора.
• XPathResult. B00LEAN_TYPE - возвращает логическое значение.
• XPathResult. FIRST_ORDERED_NOOE_TYPE - возвращает набор узлов, стоящий из единственного узла, к которому можно обратиться« рез свойство singleNodeValue класса XPathResult. Возвращаемый; обязательно будет первым узлом в документе, соответствующим] данному критерию отбора.
• XPathResult. NUMBER_TYPE - возвращает числовое значение.
• XPathResult. ORDERED_NODE_ITERATOR_TYPE - возвращает упорядс ный (в порядке следования в документе) набор узлов, который ] но последовательно обойти с помощью метода (итератора) itera Next(). Этот метод позволяет обратиться к любому узлу в наборе.
• XPathResult. ORDERED_NODE_SNAPSHOT_TYPE - возвращает упорядочен (в порядке следования в документе) статический набор узлов, дификации узлов, выполняемые в документе, не оказывают : ния на результат.
• XPathResult. STRING_TYPE - возвращает текстовую строку.
• XPathResult. UNORDERED_NODE_ITERATOR_TYPE - возвращает неупорядо¬ченный набор узлов, обойти который можно с помощью уже упоми¬навшегося метода iterateNext(). Однако порядок следования узлов в наборе может совпадать, а может не совпадать с порядком следо¬вания узлов в документе.
• XPathResult.UNORDERED,NODE_SNAPSHOT_TYPE - возвращает неупорядо¬ченный статический набор узлов. Модификации узлов, выполняе¬мые в документе, не оказывают влияния на результат.
Чаще всего используется тип XPathResult. ORDERED_NODE_ITERATOR_TYPE:
I
I
L-var oEvaluator = new XPathEvaluatorO; v var sXPath = "book/author";
;var oResuit = oEvaluator,evaluate(sXPath,oXmlDom,documentElement,null, * XPathResult.0R0ERED_N00E_ITERAT0R_TYPE, null);
var aNodes = new Array;
i if (oResuit != null) { z. ' var oElement;
§,.- while (oElement = oResuit. iterateNextO) { aNodes.push(oElement);
Этот фрагмент кода создает и вычисляет выражение XPath bock/autho г в контексте корневого элемента документа. Поскольку запрошен резуль¬тат типа ORDERED_NODE_ITERATOR_TYPE, в качестве результата возвращается набор узлов, обойти который можно посредством метода iterateNextO.
По своему действию метод iterateNextO напоминает свойство nextSib-Iing узла DOM в том смысле, что он выбирает следующий узел из ре¬зультирующего набора и возвращает значение null по достижении конца набора. Эта функция может быть использована в цикле while, как в предыдущем примере, где цикл продолжает работу до тех пор, кока в oElement не появится пустая ссылка, и добавляет очередной узел • массив aNodes с помощью метода push(). Заполненный массив может пользоваться, как в IE, что позволяет получать доступ к элементам сива в цикле for.
Коттеджи строительство проекты бассейны. Строительство бассейнов в Сочи. . Сенатор Вячеслав Кантор - досье . Найдем! Тут удивительный miele m 8160 b. м. Кузьминки.