
- •Міністерство освіти і науки україни
- •Донецьк - 2010
- •Розділ 1. Розвиток інформаційного суспільства, мова html
- •Тема 1. Розвиток інформаційного суспільства
- •1.1. Інформація та її роль у глобалізованому світі
- •1.2. Теорії інформаційного суспільства
- •1.3. Побудування інформаційного суспільства в Україні
- •1.4. Мови розмітки – тенденції розвитку
- •1.5. Міжнародні установи, що регулюють розробку і впровадження сучасних засобів подання інформації
- •Тема 2. Мова розмітки гіпертексту html
- •2.1. Структура html - документа
- •2.2. Форматування даних на сторінці
- •2.3. Створення гіперпосилань
- •2.4. Escape - послідовності
- •2.5. Горизонтальні лінії
- •Тема 3. Створення списків, таблиць
- •3.1. Списки
- •3.2. Таблиці
- •3.3. Фрейми
- •Тема 4. Робота з зображеннями
- •3.1. Використання зображень на web - сторінці
- •4.2. Гіперпосилання у вигляді зображення, створення мапи посилань
- •4.3. Біглий рядок
- •Тема 5. Каскадні листи стилів css
- •5.1. Призначення, синтаксис css
- •5.2. Застосування таблиць стилів css
- •Тема 6. Створення форм
- •6.1.Форми
- •6.2. Засоби розробки сценаріїв опрацювання інформації форми
- •Тест за змістовим модулем 1 «Розвиток інформаційного суспільства, мова html»
- •Розділ 2. Мова сценаріїв JavaScript
- •Тема 7. Основи мови JavaScript
- •7.1. Мова JavaScript: основні поняття
- •7.2. Організація розгалужених обчислювальних процесів
- •If (умова) {блок операторів 1}
- •7.3. Організація циклічних обчислювальних процесів
- •While (умова) { оператори_циклу }
- •Do { оператори_циклу } while (умова)
- •7.4. Функції
- •Тема 8. Опрацювання форм
- •8.1. Об’єкти браузера
- •8.2. Обробка подій
- •8.3. Робота з текстовими полями
- •8.4 Використання перемикачів у сценаріях
- •8.5. Застосування списків
- •8.6. Робота з прапорцями
- •Тест за змістовим модулем 2 «Мова сценаріїв JavaScript»
- •Розділ 3. Розширювана мова розмітки xml, обробка xml – документів
- •Тема 9. Створення xml – документів, опис шаблону документа
- •9.1. Загальні відомості
- •9.2. Структура xml - документа
- •9.3. Опис шаблону документа dtd
- •9.4. Перевірка правильності xml - документів
- •9.5. Демонстрація xml – документів з використанням
- •Тема 10. Простори імен, xml - схеми
- •10.1. Простори імен xml
- •10.2. Розробка xml - схеми
- •10.3. Визначення умов на значення елементів і атрибутів
- •Тема 11. Мова xPath, мова xslt
- •11.1. Мова xPath
- •11.2. Розширювана мова стилів для перетворень xslt
- •Тема 12. Мова xQuery
- •12.1. Призначення мови xQuery, xQuery – процесор Saxon
- •12.2. Формування запитів xQuery
- •12.3. Конструктори, арифметичні операції та функції
- •12.4. Умовний оператор if
- •If (умова) then
- •Тема 13. Xml – аналізатори і перетворення інформації
- •13.2. Об’єктна модель документа, dom - аналізатори
- •13.3. Застосування об’єктної моделі dom
- •Об’єкт ixmldomNamedNodeMap – невпорядкована колекція вузлів, обраних за ім’ям
- •Тема 14. Застосування xml – технологій на практиці
- •14.1. Використання xml податковою адміністрацією України
- •14.2. Мова xbrl - Extensible Business Report Language
- •14.3. Мова ebXml - Electronic Business xml
- •14.4. Мова cXml - Commerce xml
- •Тест за змістовим модулем 3 «Розширювана мова розмітки xml, обробка xml – документів»
- •Теми рефератів
- •Глосарій
- •Література
- •Основні засади розвитку інформаційного суспільства в україні на 2007 - 2015 роки
- •I. Загальні положення
- •II. Завдання, цілі та напрями розвитку інформаційного суспільства в україні
- •III. Національна політика розвитку інформаційного суспільства в україні
- •IV. Організаційно-правові основи розвитку інформаційного суспільства в україні
- •V. Очікувані результати
- •Множина кольорів у html
Тема 11. Мова xPath, мова xslt
11.1. Мова xPath
XML Path Language (мова XML Path, XPath) розроблено для того, щоб надати можливість обирати окремі частини XML – документа. На теперішній час розроблено дві рекомендації концерну W3C щодо мови XPath – версія 1.0 (рекомендація від 16 листопада 1999 р.) і версія 2.0 (рекомендація від 23 січня 2007 р. http://www.w3.org/TR/2007/REC-xpath20-20070123).
Модель даних XPath подає більшість частин XML – документа у вигляді дерева вузлів. Кореневим вузлом є власно сам документ, він є вершиною ієрархії вузлів, вузли елементів є дочірніми по відношенню до нього. Кожний елемент XML – документа є вузлом. Кореневому вузлу підпорядковані також вузли коментарів і вузли команд обробки. Текстові вузли є текстовим умістом елементів, простори імен подаються вузлами просторів імен. Рядкове значення вузла елемента є результатом конкатенації (об’єднання) значень усіх текстових вузлів, які є його нащадками, у тому порядку, в якому вони розташовані в документі. Кожний атрибут подається вузлом атрибуту. Вузол елемента, з яким пов’язаний вузол атрибуту, називається батьківським по відношенню до вузла атрибута. У XPath атрибути не є дочірніми по відношенню до батьківських елементів, звернення до них потрібно виконувати по вісі атрибутів. У моделі даних не подається оголошення документа та оголошення типу документа.
Для вибору частини документа потрібно визначити вираз, що повертає певну множину вузлів, який називається шляхом місцезнаходження (location path). Цей вираз може бути абсолютним і описувати шлях пошуку починаючи зі стартової точки – кореневого вузла, або відносним – описувати шлях відносно місця старту – так званого контексту. Контекстним вузлом (context node) є вузол, у якому можна так сказати знаходиться аналізатор. Це конкретний вузол, який включає у тому числі позицію і розмір контексту – тобто це конкретний вузол у дереві вузлів.
Вираз (або оператор XPath) складається з етапів локалізації (location steps) – конструкцій, які надають змогу визначити послідовність вибору частини документі. Етапи локалізації відокремлюються у виразі символом /, включають такі складові:
axis_name::node_test[predicates]
axis_name – ім’я типу осі, що визначає напрям пошуку вузлів.
node_test – тести вузлів, дозволяють обирати з певної осі конкретні вузли або елементи, можуть приймати значення: * - усі вузли, ім’я вузла тощо.
predicates – надають можливість визначити умови відбору.
Усього в XPath існує 13 видів осів, найбільш поширені представлені у табл. 11.1.
Таблиця 11.1 – Вісі XPath
Вісь |
Назва |
Опис |
Приклад |
1 |
2 |
3 |
4 |
child |
Дочірня вісь |
Обирає вузли, які є безпосередніми нащадками певного вузла, використовується за замовчуванням |
child::students/child::student/child::birthday – обираються усі елементи birthday за напрямом: дочірні елементи кореневого вузла students, дочірні елементи student, далі дочірні елементи birthday (оскільки вісь child використовується за замовчуванням можна було визначити students/student/birthday) |
attribute |
Вісь атрибутів |
Використовується для вибору атрибутів, пов’язаних з вузлом елемента (можна заміняти ім’я осі на дві двокрапки та @) |
child::students/child::student/attribute::number – обирає всі атрибути number елемента student (теж саме: students/student/@number) |
descendant |
Вісь нащадків |
Обирає всіх нащадків певного вузла |
students/student/descendant::* - обираються усі гілки елементів нижче елементів student |
following-sibling |
Наступний вузол того ж рівня |
Використовується для вибору вузлів того ж рівня нижче по дереву вузлів |
//name/following-sibling::* - обирає елементи birthday, які знаходяться на тому ж рівні, що і елементи name, але нижче по дереву вузлів |
Продовження табл. 11.1
1 |
2 |
3 |
4 |
preceding-sibling |
Попередній вузол того ж рівня |
Використовується для вибору вузлів того ж рівня нижче по дереву вузлів |
//last_name/preceding-sibling::* - обираються вузли first_name як такі, що знаходяться на тому ж рівні, що і last_name вище по дереву вузлів |
following |
Вісь наступних вузлів |
Обирає всі наступі вузли у порядку розташування їх у документі |
//name/following::* - обирає всі елементи після першого елемента name |
parent |
Батьківська вісь |
Обирає вузол, батьківський по відношенню до контекстного вузла |
//name/parent::* - обирає всі батьківські елементи елементів name – елементи student |
ancestor |
Вісь батьків |
Обирає вузол, батьківський по відношенню до контекстного вузла, батьківський по відношенню до батьківського і далі до кореневого вузла |
//name/ancestor::* - обирає всі батьківські елементи елементів name до кореневого вузла – елементи student і students |
descendant-or-self |
Вісь нащадків і себе |
Включає всі вузли – нащадки і контекстний вузол |
//name/descendant-or-self::* - обирає елемент name і всіх його нащадків |
ancestor-or-self |
Вісь батьків і себе |
Включає всі батьківські вузли і контекстний вузол |
//name/ancestor-or-self ::* - обирає елемент name і всіх його батьків до вершини дерева |
self |
Власна вісь |
Обирає контекстний вузол |
|
При визначенні тестів вузлів можна використовувати крім імені вузла і символу * також такі типи тестів вузлів:
node() - відповідає всім вузлам певної осі, у тому числі вузлам елементів, текстовим вузлам, вузлам атрибутів тощо;
text() - відповідає всім текстовим вузлам певної осі;
префікс:* - обирає вузли у певному просторі імен, якому відповідає префікс;
comment() – відповідає вузлам коментарів визначеної осі.
Приклади застосування різних типів тестів вузлів:
//name/descendant::node() |
- обирає елементи і їх уміст, які є нащадками елемента name: first_name і last_name |
//name/descendant::text() |
- обирає текстовий уміст елементів, які є нащадками елемента name: first_name і last_name |
//node() |
- обирає все дерево вузлів документа, включаючи елементи і їх текстовий уміст |
У виразах XPath можна також використовувати функції множин вузлів:
position() – повертає вузол з відповідним порядковим номером (функція за замовчуванням);
count() – повертає кількість вузлів.
Наприклад,
book[position()=1] – звернення до першого елемента book
Оскільки функция position() використовується за замовчуванням, результат не зміниться, якщо звернення записати так:
book[1]
Для засвоєння правил формування виразів XPath доцільно використовувати програму, яка працює з XML – документами із застосуванням мови XPath. До цих програм належить достатньо проста і розповсюджувана безкоштовно програма XPath Visualiser. У вікні цієї програми можна розчинити XML – документ, ввести у поле XPath expression вираз XPath, для вибору відповідних вузлів у дереві документа натиснути на кнопку Select Nodes. У результаті програма виділяє у дереві документа вузли, що відповідають XPath виразу. Вікно програми XPath Visualiser наведено на рис. 11.1.
Рисунок 11.1 - Вікно програми XPath Visualiser