1 / 33

XML Path Language 1.0 (XPath 1.0)

Java Advanced. XML Path Language 1.0 (XPath 1.0). Содержание. Введение Пути Выражения Функции Заключение. Часть 1. Введение. XPath. Язык выбора узлов XML- документов XPath рассматривает XML- документ в виде дерева Встраиваемый язык XSLT XPointer. Контекст.

melody
Download Presentation

XML Path Language 1.0 (XPath 1.0)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Advanced XML Path Language 1.0(XPath 1.0)

  2. Содержание • Введение • Пути • Выражения • Функции • Заключение Java Advanced / XPath 1.0

  3. Часть 1 Введение

  4. XPath • Язык выбора узлов XML-документов • XPath рассматривает XML-документ в виде дерева • Встраиваемый язык • XSLT • XPointer Java Advanced / XPath 1.0

  5. Контекст • Предоставляется внешними средствами • Текущий узел (current node) • Набор переменных (variable bindings) • Библиотека функций (function library) • Набор префиксов пространств имен (set of namespace declarations) Java Advanced / XPath 1.0

  6. Типы данных • node-set – набор узлов • boolean – логический • number– число с плавающей точкой • string – строка (unicode) Java Advanced / XPath 1.0

  7. Основные конструкции • Location path – пути • Выбор набора узлов • Expressions – выражения • Вычисления над наборами узлов • Functions – функции • Произвольные функции Java Advanced / XPath 1.0

  8. Часть 2 Location paths

  9. Location Path • Путь состоит из последовательности шагов • Типы путей • Абсолютный • Относительный • Абсолютный – вычисляется относительно корня документа • (‘/’ | ‘//’) step ((‘/’ | ‘//’) step)*| ‘/’ • Относительный – вычисляется относительно текущего узла • step ((‘/’ | ‘//’) step)* Java Advanced / XPath 1.0

  10. Правила работы • Проинициализировать множество текущих узлов (МТУ) текущим узлом (для относительного пути) либо корнем (для абсолютного пути) • Для каждого узла из МТУ отложить один шаг и положить результат в множество следующих узлов (МСУ) • МТУ := МСУ • Если путь не кончился, перейти к шагу 2 • Выдать МТУ в качестве результата Java Advanced / XPath 1.0

  11. Location step • Основные части • Axis (ось) – определяет какие узлы будут рассматриваться с точки зрения текущего узла • Node test (проверка узла) – типы или имена узлов • Predicates (предикаты) – условия на узлы (не обязательно) • Синтаксис • axis ‘::’ node-test (‘[‘ predicate ’]’)* • Пример • child::p[position() = 1] Java Advanced / XPath 1.0

  12. Типы осей (1) Java Advanced / XPath 1.0

  13. Типы осей (2) • attribute – ось атрибутов • namespace – ось префиксов (не используется) Java Advanced / XPath 1.0

  14. Node tests • Каждая ось имеет основной тип узла • attribute – атрибут • namespace – пространство имен • Остальные – элемент • Синтаксис • node-name • * • ( ‘text()’ | ‘node()’ | ‘processing-instruction()’ | ‘comment()’) • ‘processing-instruction(’ имя ‘)’ Java Advanced / XPath 1.0

  15. Примеры • child::p – дети, имеющие имя p • ancestors::* – все предки • attribute::href – атрибут href • attribute::* – все атрибуты • descendants::text() – все текстовые узлы Java Advanced / XPath 1.0

  16. Сокращенный синтаксис • Ось по умолчанию – children • @ – префикс атрибута • [n] – предикат, выбирающий n-й элемент • . – текущий узел • ..–родитель • //step – потомки узла • Пример.//p/@warning – сокращение для • self::node()/descendant-or-self::node()/child::p/attribute::warning Java Advanced / XPath 1.0

  17. Predicates • Предикат – произвольное условие на текущий узел • Узел берется, если предикат выполняется • Может быть несколько предикатов • Примеры • a[@href = “help.html”] • a[@href = “help.html”][5] • a[5][@href = “help.html”] • a[img[@alt]] • a[@href and @title] Java Advanced / XPath 1.0

  18. Часть 3 Выражения

  19. Основные выражения • $var– ссылка на переменную • (expr)– выражение в скобках • “literal” – строка • -10 – число • id(arg1, arg2, …) – вызов функции Java Advanced / XPath 1.0

  20. Выбор узлов • |– объединение путей • a | img • /, //– конструирование путей • a//img • Фильтры • Основное выражение • Фильтр + предикаты Java Advanced / XPath 1.0

  21. Логические выражения • Операции • or – логическое или • and – логическое и • =, !=– сравнение на равенство (неравенство) • <, >, <=, >= – сравнения • Наборы узлов • Пустой false • Не пустой true Java Advanced / XPath 1.0

  22. Сравнения • При сравнении учитывается тип значений • Строки – лексикографически • Числа – по величине • При сравнении двух наборов узлов выражение истинно, если найдется по элементу в первом множестве и втором множестве, связанные отношением • Значение считается набором узлов из одного узла Java Advanced / XPath 1.0

  23. Численные выражения Операции • +, - – сложение и вычитание • *, div, mod – умножение, деление, взятие остатка • - – унарный минус • Основные выражения Java Advanced / XPath 1.0

  24. Часть 4 Стандартные функции

  25. Над множествами узлов (1) • Местоположение • position() – номер текущего узла в наборе • last() – номер последнего узла в наборе • count(node-set) – количество узлов Java Advanced / XPath 1.0

  26. Над множествами узлов (2) • Имена • name(node-set?) – имя текущего / первого в наборе узла • local-name(node-set?) – локальное имя узла • namespace-uri(node-set?) – имя пространства имен • Выбор • node-set id(object)– выбор элементов по идентификатору Java Advanced / XPath 1.0

  27. Функции над строками (1) • string(object) – приведение к строке • concat(str1, str2, …) – конкатенация строк • starts-with(s1, s2) – s1начинается с s2 • contains(s1, s2) – s1содержит s2 • string-length(string?) – длина строки • normalize-space(string?) – нормализация пробелов в строке Java Advanced / XPath 1.0

  28. Функции над строками (2) • Подстроки • substring-before(s1, s2)– часть s1до первого вхождения s2 • substring-after(s1, s2)– часть s1после первого вхождения s2 • substring(s, off, len?) – подстрока s, начиная с off, длиной lenсимволов • translate(s, from, to) – для каждого символа из s: если он содержится во from, то заменить его на соответствующий символ из to Java Advanced / XPath 1.0

  29. Логические функции • boolean(object) – преобразование к логическому типу • not(boolean)– логическое отрицание • true() – истина • false()– ложь • lang(name)– проверка языка узла (атрибут xml:lang) Java Advanced / XPath 1.0

  30. Числовые функции • number(object?) – преобразование к числу • sum(node-set)– сумма наборов узлов • round(number) – округление к ближайшему • floor(number) – округление вниз • ceiling(number) – округление вверх Java Advanced / XPath 1.0

  31. Часть 5 Заключение

  32. Ссылки • XML Path Language (XPath) version 1.0 // http://www.w3.org/TR/1999/REC-xpath-19991116 • Перевод спецификации на русский // http://www.rol.ru/news/it/helpdesk/xpath01.htm • Валиков А. Технология XSLT Java Advanced / XPath 1.0

  33. Вопросы Java Advanced / XPath 1.0

More Related