Опубликован: 19.07.2010 | Доступ: свободный | Студентов: 1535 / 82 | Оценка: 4.07 / 3.43 | Длительность: 20:59:00
Лекция 8:

Объектная модель DOM XML

Пример разметки XML файла

Возвращаясь к рассмотренному ранее примеру, добавив в XML файл ссылку на XSL файл, получим следующий код разметки:

<?xml version="1.0" encoding="windows-1251" ?>
<!DOCTYPE mailbox SYSTEM "mailbox.dtd">
<?xml-stylesheet href="mailbox.xsl" type="text/xsl" ?>

<mailbox>
 <message uid='1'>
  <body>Проверка почтового ящика</body>
  <head>
    <to>user2@myhp.edu</to>
    <to>user3@myhp.edu</to>
    <from>user1@myhp.edu</from>
    <subject>Test</subject>
    <cc></cc>
    <notify></notify>
  </head>
 </message>
 <message uid='2'>
  <body>Это письмо не является спамом</body>
  <head>
    <to>user2@myhp.edu</to>
    <from>user4@myhp.edu</from>
    <subject>Интересное предложение</subject>
    <notify></notify>
  </head>
 </message>
</mailbox>

После загрузки данного документа в веб-браузере его вид кардинально изменится:

 Вид XML документа в веб-браузере (добавлены DTD и XSL)

Рис. 10.2. Вид XML документа в веб-браузере (добавлены DTD и XSL)

Содержимое XSL файла mailbox.xsl приводится ниже:

<?xml version="1.0" encoding="windows-1251"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match = "mailbox">
    <h2 align="center" color="red">Почтовый ящик</h2>
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match = "message">
    <table align="center" border="0" width="80%" bgcolor="gray">
	 <tr><td width="20%"><b>From:</b></td><td><xsl:value-of select="head/from"/></td></tr>
	 <tr>
	    <td width="20%"> <b>To:</b> </td>
	    <td> <xsl:for-each select="head/to">
		 <xsl:apply-templates/>, 
		 </xsl:for-each>
	    </td>
	 </tr>
	 <tr><td width="20%"><b>Subject:</b></td><td><xsl:value-of select="head/subject"/></td></tr>
	 <tr><td width="20%"><b>CC</b></td><td><xsl:value-of select="head/cc"/></td></tr>
	 <tr><td width="20%"><b>Notify</b></td><td><xsl:value-of select="head/notify"/></td></tr>
	 <tr><td colspan="2">
		<textarea cols="120%" rows="3"> <xsl:value-of select="body"/> </textarea>
	 </td></tr>
    </table>
    <br/><hr/><br/>
</xsl:template>

</xsl:stylesheet>
XSLT и XPath

XSLT можно определить следующим образом:

  • XSLT обозначает XSL Transformations.
  • XSLT является самой важной частью XSL преобразования
  • XSLT позволяет преобразовывать один XML в другой XML документ.
  • XSLT использует XPath для перемещения по структуре XML документа.
  • XSLT является W3C рекомендацией с ноября 1999 года.

XSLT используется для преобразования XML документа в другой XML документ либо в документ другого распознаваемого браузерами типа, например HTML или XHTML. Обычно XSLT делает это, преобразуя каждый XML элемент в соответствующий ему (X)HTML элемент.

С помощью XSLT можно добавлять или удалять элементы и атрибуты в результирующем документе. Также возможна перегруппировка и сортировка элементов, фильтрация элементов при отображении и многое другое.

В результате применения таблицы стилей XSLT, состоящей из набора шаблонов, к XML -документу (исходное дерево) образуется конечное дерево, которое может быть другой XML - структурой, HTML - документом или обычным текстом. Правила выбора данных из исходного дерева записываются на языке запросов XPath. XSLT применяется в основном в веб-программировании и для генерации отчётов.

В процессе преобразования XSLT использует XPath для поиска частей исходного документа, соответствующих одному или более заданных шаблонов. Когда соответствие найдено XSLT преобразует найденную часть исходного документа в соответствующую часть результирующего документа.

Подавляющее большинство браузеров имеют поддержку XML и XSLT.

Internet Explorer

Начиная с 6 версии, Internet Explorer поддерживает XML, пространства имен, CSS, XSLT и XPath. Версия 5 не совместима с официальной W3C XSL Рекомендацией.

Mozilla Firefox

Начиная с версии 1.0.2, Firefox поддерживает XML и XSLT (CSS) .

Mozilla

Mozilla содержит Expat for XML парсер поддерживает отображение XML+CSS. Также имеет поддержка пространства имен. Реализует XSLT преобразования.

Netscape

Начиная с версии 8, Netscape использует в качестве ядра Mozilla, и поэтому имеет такую же поддержку XML/XSLT.

Opera

Начиная с версии 9, Opera поддерживает XML и XSLT (CSS) . Версия 8 поддерживает только XML+CSS.

Благодаря XSLT реализуется отделение данных от их представления в Рамках парадигмы MVC (Model-view-controller) .

XPath (XML Path Language) - язык запросов к элементам XML -документа. XPath был разработан для организации доступа к частям документа XML в файлах трансформации XSLT и является стандартом консорциума W3C. В языке XPath используется компактный синтаксис, отличный от принятого в XML. Начиная с версии 2.0, XPath является составной частью языка XQuery. XPath призван помочь обходить всевозможные деревья, получать необходимые элементы из другой ветви относительно точки обхода, распознавать предков, потомков, атрибуты элементов. Это полноценный язык навигации по дереву.

Для нахождения элемента(ов) в дереве документа используются пути адресации.

Каждый шаг адресации состоит из трех частей:

  • оси, например child:: ;
  • условия проверки узлов, например имена элементов документа body, html;
  • предиката, например attribute::class.

Дополнением к ядру языка является набор функций, которые делятся на 5 групп: системные функции, функции с множествами, строковые функции, логические функции, числовые функции.

XSL-FO

XSL-FO (eXtensible Markup Language Formatting Objects) - рекомендованный W3C язык разметки предпечатных материалов. По-сути, XSL-FO - это унифицированный язык представления. Он не имеет семантической разметки (как в HTML ) и сохраняет все данные документа внутри себя (в отличие от CSS, который модифицирует представление по умолчанию для внешнего HTML или XML -документа) .

В результате применения XSLT - преобразования к исходному XML документу получается его описание на языке XSL-FO. FO - процессор конвертирует XSL-FO -документ в какой-либо читаемый и/или печатаемый формат. Наиболее часто используется преобразование в PDF либо PS ; некоторые FO -процессоры могут давать на выходе RTF -файлы либо просто показывать документ в окне.

XQuery

XQuery - язык запросов, разработанный для обработки данных в формате XML.

В настoящее время рабочими группами консорциума W3C ведутся работы по развитию этого стандарта данного языка, с добавлением выражений для свободного поиска по тексту и для внесения изменений в XML документы и базы данных, а также для процедурных операций.

В рамках стандарта SQL:2006 разработаны механизмы для встраивания XQuery -запросов непосредственно в SQL -запросы.

Наталья Алмаева
Наталья Алмаева
Россия
Андрей Лучицкий
Андрей Лучицкий
Россия