МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра ВТ
ОТЧЕТ по лабораторной работе №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-документы корректно отображаются браузером, ошибки не обнаружены.