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

Краденные лабы / 8308ДовженкоАЕ_лр1

.pdf
Скачиваний:
2
Добавлен:
08.04.2023
Размер:
549.24 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра ВТ

ОТЧЕТ по лабораторной работе №1

по дисциплине «Распределенные системы и сети» Тема: Применение технологий XML/XSLT для оформления

HTML-страниц

Студентка гр. 8308

 

Довженко А.Е.

Преподаватель

 

 

Бекенева Я.А.

Санкт-Петербург, 2022

Цель работы

Построить XSLT-преобразования, осуществляющие преобразование исходных xml-документов в html-документы согласно заданиям 1-7. Убедится в том, что сгенерированные html-документы корректно отображаются браузером.

Результаты выполнения работы

При выполнении данной лабораторной работы было сформировано 3

файла:

input.xml, содержащий исходный xml-код;

output.html, содержащий полученный html-код;

transformer.xsl, содержащий код преобразователя.

Полные распечатки данных файлов представлены в приложениях А, Б и В соответственно.

2

Задание 1. Применить указанный цвет к надписи «название книги».

Исходник (XML)

 

Результат (HTML)

<library>

 

<font color="red">Название книги</font>

<book>Название книги</book>

 

 

<color>red</color>

 

 

</library>

 

 

 

Преобразователь (XSLT)

<h2>Задание 1</h2> <font>

<xsl:attribute name="color"> <xsl:value-of select="//library/color"/>

</xsl:attribute>

<xsl:value-of select="//library/book"/>

</font>

Результат работы преобразователя представлен на рис. 1.

Рис 1. Задание 1

3

Задание 2. Выделить все элементы первого порядка (элементом нулевого

порядка считать корневой элемент). Один абзац – один элемент.

Исходник (XML)

Результат (HTML)

<root>

<p>XXX id=x1</p>

<XXX id="x1">

<p>AAA id=a2</p>

<BBB id="b1"/>

 

<BBB id="b2"/>

 

</XXX>

 

<AAA id="a2">

 

<BBB id="b3"/>

 

<BBB id="b4"/>

 

<CCC id="c1">

 

<DDD id="d1"/>

 

</CCC>

 

<BBB id="b5">

 

<CCC id="c2"/>

 

</BBB>

 

</AAA>

 

</root>

 

 

 

Преобразователь (XSLT)

<h2>Задание 2</h2>

<xsl:for-each select="//root2/*">

<p><xsl:value-of select="name()"/> id=<xsl:value-of select="./@id"/></p>

</xsl:for-each>

Результат работы преобразователя представлен на рис. 2.

Рис 2. Задание 2

4

Задание 3. Вывести имена после id. Выделить id курсивом и жирным.

Исходник (XML)

Результат (HTML)

<employees>

<b><i>js0034</i></b> Joe Smith

<employee id="js0034">

<b><i>ma0012</i></b> Marry Ann

Joe Smith</employee>

 

<employee id="ma0012">

 

Marry Ann</employee>

 

</employees>

 

 

 

Преобразователь (XSLT)

<h2>Задание 3</h2>

<xsl:for-each select="//employees/*"> <b><i><xsl:value-of select="./@id"/> </i></b> <xsl:value-of select="."/><br/>

</xsl:for-each>

Результат работы преобразователя представлен на рис. 3.

Рис 3. Задание 3

5

Задание 4. Вывести таблицу, в которой указывается id родителя (если

родителя нет, то ничего не выводить).

Исходник (XML)

Результат (HTML)

<root>

<table border="1" cellpadding="6">

<AAA id="a1">

<tr><th colspan="2">Axis: child</th></tr>

<BBB id="b1"/>

<tr><th>Element</th><th>Node-set</th></tr>

<BBB id="b2"/>

<tr><td>AAA id = a1</td><td> </td></tr>

</AAA>

<tr><td>BBB id = b1</td><td>a1 </td></tr>

<AAA id="a2">

<tr><td>BBB id = b2</td><td>a1 </td></tr>

<BBB id="b3"/>

<tr><td>AAA id = a2</td><td> </td></tr>

<BBB id="b4"/>

<tr><td>BBB id = b3</td><td>a2 </td></tr>

<CCC id="c1">

<tr><td>BBB id = b4</td><td>a2 </td></tr>

<DDD id="d1"/>

<tr><td>CCC id = c1</td><td>a2 </td></tr>

</CCC>

<tr><td>CCC id = c2</td><td>c1 </td></tr>

<BBB id="b5">

<tr><td>BBB id = b5</td><td>a2 </td></tr>

<CCC id="c2"/>

<tr><td>CCC id = c3</td><td>b5 </td></tr>

</BBB>

</table>

</AAA>

 

</root>

 

 

 

Преобразователь (XSLT)

<h2>Задание 4</h2>

<table border="1" cellpadding="6"> <tr><th colspan="2">Axis: child</th></tr>

<tr><th>Element</th><th>Node-set</th></tr>

<xsl:for-each select="//root4//*">

<tr>

<td><xsl:value-of select="name()"/> id = <xsl:value-of select="./@id"/></td> <td><xsl:value-of select="../@id"/></td>

</tr>

</xsl:for-each>

</table>

Результат работы преобразователя представлен на рис. 4.

Рис 4. Задание 4

6

Полный текст результирующего html-кода:

<h2>Задание 4</h2>

<table border="1" cellpadding="6"> <tr>

<th colspan="2">Axis: child</th> </tr>

<tr> <th>Element</th><th>Node-set</th> </tr>

<tr>

<td>AAA id = a1</td><td></td> </tr>

<tr>

<td>BBB id = b1</td><td>a1</td> </tr>

<tr>

<td>BBB id = b2</td><td>a1</td> </tr>

<tr>

<td>AAA id = a2</td><td></td> </tr>

<tr>

<td>BBB id = b3</td><td>a2</td> </tr>

<tr>

<td>BBB id = b4</td><td>a2</td> </tr>

<tr>

<td>CCC id = c1</td><td>a2</td> </tr>

<tr>

<td>DDD id = d1</td><td>c1</td> </tr>

<tr>

<td>BBB id = b5</td><td>a2</td> </tr>

<tr>

<td>CCC id = c2</td><td>b5</td> </tr>

</table>

7

Задание 5. Вывести id, относящиеся к BBB красным цветом, к CCC –

синим цветом, к DDD – зелёным цветом.

Исходник (XML)

Результат (HTML)

<root>

<font color="red">BBB id=b1</font>

<AAA id="a1">

<font color="red">BBB id=b2</font>

<BBB id="b1"/>

<font color="red">BBB id=b3</font>

<BBB id="b2"/>

<font color="red">BBB id=b4</font>

</AAA>

<font color="red">BBB id=b5</font>

<AAA id="a2">

<font color="blue">CCC id=c1</font>

<BBB id="b3"/>

<font color="green">DDD id=d1</font>

<BBB id="b4"/>

 

<CCC id="c1">

 

<DDD id="d1"/>

 

</CCC>

 

<BBB id="b5">

 

<CCC id="c2"/>

 

</BBB>

 

</AAA>

 

</root>

 

 

 

Преобразователь (XSLT)

<h2>Задание 5</h2>

<xsl:for-each select="//root5//BBB">

<font color="red">

<xsl:value-of select="name()"/> id=<xsl:value-of select="./@id"/><br/> </font>

</xsl:for-each>

<xsl:for-each select="//root5//CCC">

<font color="blue">

<xsl:value-of select="name()"/> id=<xsl:value-of select="./@id"/><br/> </font>

</xsl:for-each>

<xsl:for-each select="//root5//DDD">

<font color="green">

<xsl:value-of select="name()"/> id=<xsl:value-of select="./@id"/><br/> </font>

</xsl:for-each>

Результат работы преобразователя представлен на рис. 5:

Результирующий html-код:

<h2>Задание 5</h2>

<font color="red">BBB id=b1<br> </font><font color="red">BBB id=b2<br> </font><font color="red">BBB id=b3<br> </font><font color="red">BBB id=b4<br> </font><font color="red">BBB id=b5<br> </font><font color="blue">CCC id=c1<br> </font><font color="blue">CCC id=c2<br> </font><font color="green">DDD id=d1<br> </font>

Рис 5. Задание 5

8

Задание 6. Раскрасить название цвета в соответствующий цвет.

Исходник (XML)

Результат (HTML)

<root>

<TABLE><TR><TD style="color:blue">blue</TD></TR></TABLE>

<color>blue</color>

<TABLE><TR><TD style="color:navy">navy</TD></TR></TABLE>

<color>navy</color>

<TABLE><TR><TD style="color:yellow">yellow</TD></TR></TABLE>

<color>yellow</color>

<TABLE><TR><TD style="color:green">green</TD></TR></TABLE>

<color>green</color>

<TABLE><TR><TD style="color:lime">lime</TD></TR></TABLE>

<color>lime</color>

<TABLE><TR><TD style="color:red">red</TD></TR></TABLE>

<color>red</color>

 

</root>

 

 

 

 

Преобразователь (XSLT)

<h2>Задание 6</h2>

<xsl:for-each select="//root6/color">

<TABLE>

<TR> <TD>

<xsl:attribute name="style">color:<xsl:value-of select="."/></xsl:attribute> <xsl:value-of select="."/>

</TD> </TR>

</TABLE>

</xsl:for-each>

Результат работы преобразователя представлен на рис. 6.

Результирующий html-код:

<h2>Задание 6</h2> <TABLE>

<TR>

<TD style="color:blue">blue</TD> </TR>

</TABLE>

<TABLE> <TR>

<TD style="color:navy">navy</TD> </TR>

</TABLE>

<TABLE> <TR>

<TD style="color:yellow">yellow</TD> </TR>

</TABLE>

<TABLE> <TR>

<TD style="color:green">green</TD> </TR>

</TABLE>

Рис 6. Задание 6 <TABLE>

<TR>

<TD style="color:lime">lime</TD> </TR>

</TABLE>

<TABLE> <TR>

<TD style="color:red">red</TD> </TR>

</TABLE>

Задание 7. Добавить точку после последнего имени.

Исходник (XML)

 

Результат (HTML)

<list>

 

<p>A, B, C, D.</p>

<entry name="A"/>

 

 

<entry name="B"/>

 

 

<entry name="C"/>

 

 

<entry name="D"/>

 

 

</list>

 

 

 

 

 

 

Преобразователь (XSLT)

<h2>Задание 7</h2> <p>

<xsl:for-each select="//entry"> <xsl:value-of select="./@name"/>

<xsl:if test="last() != position()">, </xsl:if> <xsl:if test="last() = position()">.</xsl:if>

</xsl:for-each>

</p>

Результат работы преобразователя представлен на рис. 7.

Рис 7. Задание 7

Выводы.

В результате выполнения лабораторной работы были построены XSLT-

преобразования, осуществляющие преобразование исходных xml-документов в html-документы согласно заданиям 1-7. Сгенерированные html-документы корректно отображаются браузером, ошибки не обнаружены.