Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Informatika / Palaguta_K.O._Movna_model_suchasnogo_informatsiynogo_prostorumetodichkaMetod._vkaz._ta_zavd2011

.pdf
Скачиваний:
31
Добавлен:
22.02.2016
Размер:
1.88 Mб
Скачать

4.У поле XPath expression введіть вираз

//name/descendant::*

і натисніть на кнопці Select Nodes. Тепер програма знайшла у дереві документа всі вузли name (// у виразі) і виділила жовтим кольором вузли, які є нащадками вузла nameь – вузли lname, fname, mnane.

5.У поле XPath expression введіть вираз

//lname/parent::*

і натисніть на кнопці Select Nodes. Програма знайшла у дереві документа всі вузли lname (// у виразі) і виділила жовтим кольором вузли, які є батьківськими вузлами вузла lname - вузли name.

6. У поле XPath expression введіть вираз

//lname/ancestor::*

51

натисніть на кнопці Select Nodes. Програма знайшла у дереві документа всі вузли lname і виділила жовтим кольором усі батьківські вузли до кореневого елемента по відношенню до вузла lname - вузли name, вузли employee і вузол employees.

7.Завершіть роботу з програмою XPath Visualiser.

8.Для знайомства з розширюваною мовою стилів для перетворень XSLT (eXtensible Stylesheet Language for Transformations) у середовищі програ-

ми Блокнот введіть уміст документа MyStyle1.xsl для перетворення XML

– документа employees.xml на HTML – документ:

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"> <html>

<body>

<h2>Інформація про співробітників підприємства</h2> <br/> <h3>Кількість співробітників:

<xsl:value-of select="count(//employee)"/></h3> <table border="1">

<tr align="center"> <td> П І Б</td> <td> Посада </td>

<td> Оклад, грн. </td> </tr>

<xsl:apply-templates select="//employee"/> </table>

</body>

</html>

</xsl:template>

<xsl:template match="employee"> <tr>

<td> <xsl:value-of select="name"/> </td> <td> <xsl:value-of select="post"/> </td>

<td align="center"> <xsl:value-of select="salary"/> </td> </tr>

</xsl:template>

</xsl:stylesheet>

Коментар:

8.1.XSLT – документ – це правильно оформлений XML – документ, тому він починається з оголошення XML – документа

<?xml version="1.0" encoding="UTF-8">.

52

8.2.Кореневим елементом документа є елемент <xsl:stylesheet>, який визначає, що далі у документі знаходиться таблиця стилів, написана мовою XSLT версії 1.0, елемент також задає простір імен.

8.3.Елементові <xsl:stylesheet> підпорядковані два елементи <xsl:template>, що визначають шаблонні правила.

8.4.Перший елемент <xsl:template> визначає шаблонне правило, за яким формується вихідний документ – файл у форматі HTML. Всередині контейнеру <body> формується заголовок таблиці, виводиться інформація про кількість елементів employee у вхідному документі. Ці данні обираються за допомогою елемента <xsl:value-of>, атрибут select обирає і підраховує з використанням функції count() кількість вузлів, що відповідають XPath – виразу //employee – кількість співробітників.

8.5.У вихідному документі також формується шапка таблиці зі стовпцями ПІБ, посада, оклад, для виведення інформаційних рядків застосовується шаблонне правило для всіх елементів employee вхідного документа – елемент <xsl:apply-templates>.

8.6.Друге шаблонне правило застосовується до вхідного документа, зокрема до всіх вузлів починаючи з елементів employee - <xsl:template match="employee">. У ньому описано формування інформаційних ряд-

ків таблиці, які містять значення елементів name (всіх підпорядкованих елементів), post і salary.

9.Відредагуйте документ employees.xml так, щоб до нього підключалась таблиця стилів MyStyle1.xsl:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="MyStyle1.xsl"?>

<employees>

<employee sheetnumber="132"> <name><lname>Петренко</lname> <fname>Максим</fname> <mname>Іванович</mname></name> <post>директор</post>

. . .

Коментар:

9.1. Таблиця стилів підключається за допомогою команди обробки

<?xml-stylesheet type="text/xsl" href="MyStyle1.xsl"?>

у прологовій частині документа, власно атрибут href визначає конкретний файл – таблицю стилів.

10.Розчиніть файл employees.xml у браузері ІЕ. У вікні браузера документ буде виглядати так:

53

11.Якщо у вікні браузера ІЕ подати команду Вид – Просмотр HTML – кода, то буде виведено вміст вхідного файлу employees.xml. Для перегляду коду вихідного файлу на комп’ютер можна встановити програму iexmltls, яка розширює базові можливості програми ІЕ. У випадку коли цю програму встановлено, за допомогою команди контекстного меню документа View XSL Output можна вивести вихідний документ у HTML коді, який виглядатиме так:

54

12.Як і будь-який HTML – документ щойно створений документ може вміщувати різні параметри форматування, визначені у тому числі і за допомогою таблиць стилів CSS. Відредагуйте файл MyStyle1.xsl в такий спосіб:

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"> <html>

<body style="background:wheat">

<h2>Інформація про співробітників підприємства</h2> <br/> <h3>Кількість співробітників:

<xsl:value-of select="count(//employee)"/></h3> <table border="1">

<tr style="background:silver; color:blue; text-align:center; font-size:16pt; font-weight:bolder">

<td> П І Б</td> <td> Посада </td>

<td> Оклад, грн. </td> </tr>

55

<xsl:apply-templates select="//employee"/> </table>

</body>

</html>

</xsl:template>

<xsl:template match="employee">

<tr style="background:mintcream; color:darkgreen; font-size:14pt"> <td> <xsl:value-of select="name"/> </td>

<td> <xsl:value-of select="post"/> </td>

<td align="center"> <xsl:value-of select="salary"/> </td> </tr>

</xsl:template>

</xsl:stylesheet>

Коментар:

12.1.Атрибут style тегів <body>, <tr> надає можливість застосування локальних стилів CSS для оформлення документа.

13.Документ employees.xml у вікні браузера тепер виглядає так:

56

14.При формуванні вихідних документів на основі вхідних XML - документів з використанням мови XSLT можна використовувати також елемент <xsl:if> для визначення умови відбору інформації. Розглянемо застосування елемента <xsl:if> на прикладі документа MyStyle2.xsl:

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"> <html>

<body>

<h2>Інформація про співробітників підприємства, що мають дітей

</h2> <br/> <table border="1"> <tr align="center"> <td> П І Б</td> <td> Посада </td>

<td> Кількість дітей </td> </tr>

<xsl:apply-templates select="//employee"/> </table>

</body>

</html>

</xsl:template>

<xsl:template match="employee">

<xsl:if test="(children)>0">

<tr>

<td> <xsl:value-of select="name"/> </td> <td> <xsl:value-of select="post"/> </td>

<td align="center"> <xsl:value-of select="children"/> </td> </tr>

</xsl:if>

</xsl:template>

</xsl:stylesheet>

Коментар:

14.1.Документ формує вихідний HTML – файл, у якому міститься таблиця з колонками ПІБ, посада, кількість дітей. Елемент <xsl:if> надає можливість обрати відомості лише про тих співробітників, значення елемента children яких більше 0.

15.Підключить таблицю стилів MyStyle2.xsl до файлу employees.xml, перегляньте файл employees.xml у вікні браузера ІЕ, тепер документ виглядає так:

57

16.Розглянемо ще один приклад застосування елемента <xsl:if> для вибору із документа employees.xml інформації лише про співробітників, що мають вищу освіту. Створіть файл MyStyle3.xsl з таким умістом:

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"> <html>

<body>

<h2>Інформація про співробітників підприємства з вищою освітою

</h2> <br/> <table border="1"> <tr align="center"> <td> П І Б</td> <td> Посада </td> <td> Освіта </td> </tr>

<xsl:apply-templates select="//employee"/> </table>

</body>

</html>

</xsl:template>

<xsl:template match="employee"> <xsl:if test="(education)='вища'">

58

<tr>

<td> <xsl:value-of select="name"/> </td> <td> <xsl:value-of select="post"/> </td>

<td align="center"> <xsl:value-of select="education"/> </td> </tr>

</xsl:if>

</xsl:template>

</xsl:stylesheet>

17.Після підключення файлу MyStyle3.xsl до файлу employees.xml XML –

документ у вікні браузера виглядатиме так:

18.У XSLT – документах можна організувати розгалуження не лише за допомогою елемента <xsl:if>, а і з використанням елемента <xsl:choose> одразу по багатьох напрямках. Розглянемо такий приклад застосування елемента <xsl:when>. У вихідному документі виводиться інформація про оклади співробітників підприємства, при чому, якщо оклад менше 1000 грн., інформація виводиться червоним кольором на жовтому тлі, більше 1000 грн. але менше 2000 грн. – синім кольором, більше 2000 грн. – зеленим кольором напівжирним шрифтом. Створіть файл MyStyle4.xsl з таким умістом:

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"> <html>

<body>

<h2>Інформація про співробітників підприємства</h2> <br/> <h3>Кількість співробітників:

59

<xsl:value-of select="count(//employee)"/></h3> <table border="1">

<tr align="center"> <td> П І Б</td>

<td> Табельний номер</td> <td> Посада </td>

<td> Оклад, грн. </td> </tr> <xsl:apply-templates select="//employee"/> </table>

</body>

</html>

</xsl:template>

<xsl:template match="employee">

<xsl:choose>

<xsl:when test="salary < 1000">

<tr style="color:red; background:yellow"> <td> <xsl:value-of select="name"/> </td>

<td align="center"> <xsl:value-of select="@sheetnumber"/> </td> <td> <xsl:value-of select="post"/> </td>

<td align="center"> <xsl:value-of select="salary"/> </td> </tr>

</xsl:when>

<xsl:when test="(salary > 1000) and (salary < 2000)"> <tr style="color:blue">

<td> <xsl:value-of select="name"/> </td>

<td align="center"> <xsl:value-of select="@sheetnumber"/> </td> <td> <xsl:value-of select="post"/> </td>

<td align="center"> <xsl:value-of select="salary"/> </td> </tr>

</xsl:when>

<xsl:when test="salary > 2000">

<tr style="color:green; font-weight:bold"> <td> <xsl:value-of select="name"/> </td>

<td align="center"> <xsl:value-of select="@sheetnumber"/> </td> <td> <xsl:value-of select="post"/> </td>

<td align="center"> <xsl:value-of select="salary"/> </td> </tr>

</xsl:when>

</xsl:choose>

</xsl:template>

</xsl:stylesheet>

Коментар:

60