» » » Алексей Валиков - Технология XSLT


Авторские права

Алексей Валиков - Технология XSLT

Здесь можно скачать бесплатно "Алексей Валиков - Технология XSLT" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство БХВ-Петербург, год 2002. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Алексей Валиков - Технология XSLT
Рейтинг:
Название:
Технология XSLT
Издательство:
БХВ-Петербург
Год:
2002
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Технология XSLT"

Описание и краткое содержание "Технология XSLT" читать бесплатно онлайн.



Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.

Для начинающих и профессиональных программистов






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

Пример

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

<element

 name="имя элемента"

 context-position="позиция в контексте"

 context-size="размер контекста"

 string-value="строковое значение">

 ...

</element>

Листинг 3.26. Преобразование

<xsl:stylesheet

 version="1.0"

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


 <xsl:output indent="yes"/>

 <xsl:strip-space elements="*"/>


 <xsl:template match="*">

  <element

   name="{name()}"

   context-position="{position()}"

   context-size="size()"

   string-value="{.}">

   <xsl:apply-templates select="*"/>

  </element>

 </xsl:template>


</xsl:stylesheet>

Листинг 3.27. Входящий документ

<data>

 <part>

  <item>A</item>

  <item>B</item>

  <item>C</item>

 </part>

 <part>

  <value>D</value>

  <value>E</value>

  <value>F</value>

 </part>

</data>

Листинг 3.28. Выходящий документ

<element name="data"

 context-position="1" context-size="1" string-value="ABCDEF">

 <element name="part"

  context-position="1" context-size="2" string-value="ABC">

 <element name="item"

  context-position="1" context-size="3" string-value="A"/>

 <element name="item"

  context-position="2" context-size="3" string-value="B"/>

 <element name="item"

  context-position="3" context-size="3" string-value="C"/> </element>

 <element name="part"

  context-position="2" context-size="2" string-value="DEF">

 <element name="value"

  context-position="1" context-size="3" string-value="D"/>

 <element name="value"

  context-position="2" context-size="3" string-value="E"/>

 <element name="value"

  context-position="3" context-size="3" string-value="F"/>

 </element>

</element>

Модель преобразования

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

Контекст преобразования

При выполнении преобразования каждая из его инструкций, каждый из элементов обрабатывается в некотором контексте. Контекст преобразования состоит из двух частей: из текущего множества узлов и из текущего узла, которые показывают, что именно обрабатывается в данный момент. XSLT-процессор поочередно обрабатывает каждый из узлов текущего множества (при этом делая этот узел текущим узлом) и объединяет результаты в одно дерево.

Контекст преобразования тесно связан с контекстом вычисления выражений:

□ текущий узел контекста преобразования соответствует контекстному узлу вычисления выражений;

□ позиция текущего узла в текущем обрабатываемом множестве соответствует позиции контекста вычисления выражений;

□ размер текущего множества узлов соответствует размеру контекста вычисления выражений.

Контекст преобразования может изменяться только двумя элементами — xsl:apply-templates и xsl:for-each. Каждый из этих элементов вычисляет множество узлов, которое становится текущим и затем обрабатывается. После этого контекст преобразования восстанавливается до того состояния, каким он был перед обработкой.

Изменения контекста могут быть продемонстрированы на следующем примере.

Листинг 3.29. Входящий документ

<summer>

 <month>June</month>

 <month>July</month>

 <month>August</month>

</summer>

Этому документу соответствует следующее дерево (рис. 3.19):

Рис. 3.19. Дерево входящего документа

Листинг 3.30. Преобразование

<xsl:stylesheet

 version="1.0"

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


 <xsl:template match="/">

  <html>

   <head>

    <title>Summer</title>

   </head>

   <body>

    <xsl:apply-templates select="summer"/>

   </body>

  </html>

 </xsl:template>


 <xsl:template match="summer">

  <table>

   <tr>

    <xsl:apply-templates select="month"/>

   </tr>

  </table>

 </xsl:template>


 <xsl:template match="month">

  <td>

   <xsl:value-of select="."/>

  </td>

 </xsl:template>


</xsl:stylesheet>

Забегая вперед скажем, что в изначальном контексте преобразования текущее множество состоит из единственного узла — корневого узла документа. Он становится текущим и обрабатывается соответствующим шаблоном.

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

<xsl:template match="/">

 <html>

  <head>

   <title>Summer</title>

  </head>

  <body>

   <xsl:apply-templates select="summer"/>

  </body>

 </html>

</xsl:template>

Тело этого шаблона выполняется в том самом изначальном контексте, о котором мы только что упомянули: текущее множество состоит из корневого узла, он же является и текущим узлом. Мы можем показать контекст, выделяя текущее множество, пунктиром, а текущий узел — полужирной линией (рис. 3.20).

Рис. 3.20. Первоначальный контекст преобразования

Атрибут select элемента xsl:apply-templates задает выражение, вычисляющее множество узлов, которые должны быть обработаны. Выражение summer, которое содержит этот атрибут, является относительным путем выборки, который возвращает все дочерние элементы summer текущего узла. Поскольку текущим узлом в данном контексте является корневой узел дерева, значением выражения summer будет множество узлов, состоящее из субэлемента summer, корневого узла.

При выполнении элемента xsl:apply-templates процессор сделает это вычисленное множество узлов текущим множеством и начнет поочередно обрабатывать его узлы, делая их при этом текущими. Иначе говоря, выполнение элемента

<xsl:apply-templates select="summer"/>

сведется к выполнению шаблона, обрабатывающего элемент summer. Этот шаблон выглядит следующим образом:

<xsl:template match="summer">

 <table>

  <tr>

   <xsl:apply-templates select="month"/>

  </tr>

 </table>

</xsl:template>

Выполняться он будет в следующем контексте (рис. 3.21):

Рис. 3.21. Контекст шаблона элемента summer

Атрибут select элемента xsl:apply-templates, который присутствует в этом шаблоне, вычисляет новое текущее множество: путь выборки month возвращает все дочерние элементы month текущего узла. Текущим узлом является элемент summer, то есть новое текущее множество будет состоять из трех его дочерних элементов month. Таким образом, процессор будет поочередно выполнять шаблоны в каждом из трех следующих контекстов, показанных на рис. 3.22.

Рис. 3.22. Изменение контекста при выполнении шаблона элемента month

Шаблон, вычисляемый в каждом из этих контекстов, имеет следующий вид:

<xsl:template match="month">

 <td>

  <xsl:value-of select="."/>

 </td>

</xsl:template>

Элемент xsl:value-of этого шаблона создает в элементе td текстовый узел, значение которого равно строковому значению выражения ".", то есть строковому значению текущего узла, и в каждом случае это будет строковое значение соответствующего элемента month.

Контекст преобразования позволяет более четко определить такие понятия, как "обработка узла", "применение шаблона к узлу" и так далее. Все эти выражения означают одно: выполнение соответствующего шаблона с данным узлом в качестве текущего.

Выполнение преобразования

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


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Технология XSLT"

Книги похожие на "Технология XSLT" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Алексей Валиков

Алексей Валиков - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Алексей Валиков - Технология XSLT"

Отзывы читателей о книге "Технология XSLT", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.