Informatika / Palaguta_K.O._Movna_model_suchasnogo_informatsiynogo_prostorumetodichkaMetod._vkaz._ta_zavd2011
.pdf4.У поле 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