пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ


Создание новых структурных единиц с помощью языка XSLT алгоритм преобразования XML-документа с помощью языка XSLT. Преобразования XML-документа в HTML, пример.

 

Чтобы парсер воспринял XML-документ как XSLT-определение, требуется указать использовать специальный корневой тег и определить специальное пространство имен. Например:

<?xml version="1.0" standalone="no"?>

<xsl:stylesheet

xmlns="http://www.w3.org/TR/REC-html40"

xmlns:xsl="http://www.w3.org/TR/WD-xsl"

version="1.0">

 

...

 

</xsl:stylesheet>

Корневой элемент «xsl:stylesheet» содержит в себе множество элементов «xsl:template», которые определяют правила преобразования. Например:

<xsl:template match="*|@*">

<xsl:copy>

<P><xsl:apply-templates select="@*|node()"/></P>

</xsl:copy>

</xsl:template>

 

<xsl:template match='text()'>

<P><xsl:value-of/></P>

</xsl:template>

В ходе обработки существует «текущий» узел обработки. Изначально, им является корневой элемент обрабатываемого XML-документа.

Парсер (например, MSXML) начинает просматривать шаблоны с самого последнего к самому первому – поиск шаблонов идет с конца XSLT. Каждый шаблон (элемент «xsl:template») содержит в себе атрибут “match” – его значение представляет собой выражение xPath. Если текущий узел (его параметры - имя, относительно местоположение, содержание) удовлетворяет этому выражению, то происходит обработка его содержимого, иначе происходит переход к следующему шаблону (который находится ближе к началу документа).

Специальный тег «xsl:apply-templates» позволяет произвести новый поиск шаблонов для указанных узлов (которые по-очереди будут текущими), причем множество обрабатываемых узлов указывается с помощью выражений xPath. В ходе обработки мы можем добавлять текст в результирующий документ. В XSLT есть возможность генерации тегов:

<xsl:element name="font">

<xsl:attribute name="color">

<!-- вычисляем значение цвета -->

</xsl:attribute>

</xsl:element>

Таким способом можно генерировать сложные документы с новой структурой или создавать узлы с различными значениями атрибутов.

. Преобразование в языке XSLT предстает в виде корректного (well-formed) XML документа [XML], соответствующего требованиям для пространств имен из Рекомендации XML [XML Names]. Оно может содержать как элементы, определяемые в XSLT, так и элементы, которые в XSLT не определены. Элементы, определяемые в XSLT, отличаются принадлежностью определенному пространству имен XML , которое в данной спецификации мы называем пространством имен XSLT. Таким образом, данная спецификация - это определение синтаксиса и семантики пространства имен XSLT.

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


 

 

 

 


06.01.2018; 20:01
хиты: 468
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь