Опубликован: 04.07.2012 | Уровень: специалист | Доступ: платный
Лекция 9:

Введение в XML. Структура XML документа. Объектная модель DOM XML

Объявление XSL

Корневым элементом, указывающим на то, что документ является XSL таблицей стилей является следующий:

<xsl:stylesheet>

или полностью равноценный ему

<xsl:transform>

В соответствии с W3C XSLT Рекомендацией корректный способ объявления таблицы стилей XSL выглядит следующим образом:

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

или

<xsl:transform version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Для того чтобы XSLT элементы, атрибуты и характеристики были доступны в начале документа необходимо объявить пространство имен XSLT:

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

указывающее на официальное пространство имен W3C XSLT. При этом также следует указать атрибут version="1.0".

Реализация преобразования с помощью сценария.

XSLT преобразование из XML в XHTML выполняемое самими браузерами на основе таблицы стилей XSL является не всегда желательным, поскольку может поддерживаться не всеми браузерами.

Использование в качестве альтернативы JavaScript позволяет:

  • Выполнять проверку типа браузера
  • Использовать подходящие таблицы стилей в зависимости от типа браузера и потребностей пользователей.

Другим решением для браузеров, не поддерживающих XSLT является преобразование XML в XHTML на веб-сервере.

Пример разметки 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).

увеличить изображение
Рис. 13.4. Вид 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 призван помочь обходить всевозможные деревья, получать необходимые элементы из другой ветви относительно точки обхода, распознавать предков, потомков, атрибуты элементов. Это полноценный язык навигации по дереву.

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

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

  1. оси, например child:: ;
  2. условия проверки узлов, например имена элементов документа body, html;
  3. предиката, например 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-запросы.

Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?

 

Галина Башкирова
Галина Башкирова

Здравствуйте, недавно закончила курс по проф веб программиованию, мне прислали методические указания с примерами тем, однако темы там для специальности 

Системный администратор информационно-коммуникационных» систем.
Мне нужно самой найти тему? или делать по высланным темам

 

Елена Кашникова
Елена Кашникова
Россия, братск