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


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

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

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

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

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

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

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

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

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



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

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






Рис. 3.14. Другой путь выборки

Выбранное множество узлов имело бы вид (рис. 3.15):

Рис. 3.15. Выбранное множество

Для представления одного узла дерева в XSLT используется множество, состоящее из единственного узла. В предыдущем примере результатом выборки /A (выбрать узел A, находящийся в корне документа) было бы множество, состоящее из единственного узла (рис. 3.16).


Рис. 3.16. Множество, состоящее из единственного узла

Несмотря на то, что множества узлов неупорядочены, во многих случаях обработка узлов множества производится в порядке просмотра документа. Некоторые элементы, обрабатывающие множества (такие, как xsl:apply-templates и xsl:for-each) позволяют предварительно выполнять их сортировку при помощи элемента xsl:sort.

Множества узлов можно сравнивать при помощи операторов "=" (равно) и "!=" (не равно). В отличие от равенства математических множеств, равенство множеств узлов A и B в XSLT означает то, что найдется узел a, принадлежащий множеству A и узел b, принадлежащий множеству B такие, что их строковые значения будут равны. Неравенство множеств означает наличие в них как минимум пары узлов с различными строковыми представлениями. Такие определения делают возможным при сравнении двух множеств одновременное выполнение равенства и неравенства.

Пример Листинг 3.2. Входящий документ A

<numbers>

 <int>1</int>

 <byte>2</byte>

 <int>2</int>

 <byte>3</byte>

</numbers>

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

<xsl:stylesheet

 version="1.0"

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


 <xsl:output method="text"/>


 <xsl:template match="numbers">

  <xsl:value-of select="int = byte"/>

  <xsl:text> and </xsl:text>

  <xsl:value-of select="int != byte"/>

 </xsl:template>

</xsl:stylesheet>

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

true and true

Этот пример показывает, что множество дочерних элементов int элемента numbers одновременно считает как равным, так и неравным множеству дочерних элементов byte.

Приведем еще несколько примеров.

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

<numbers>

 <int>1</int>

 <byte>2</byte>

 <int>3</int>

 <byte>4</byte>

</numbers>

Результат:

false and true

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

<numbers>

 <int>1</int>

 <byte>1</byte>

 <int>1</int>

</numbers>

Результат:

true and false

С математической точки зрения операции сравнения множеств определены в XSLT, мягко говоря, странно. Например, единственный случай, когда для двух множеств не будет выполняться неравенство ("!=") — это когда все узлы обоих множеств будут иметь одинаковое строковое представление. Вместе с тем, операции сравнения множеств очень часто используются в качестве условий и потому нужно хорошо понимать различия между ними и математическими операциями сравнения.

XSLT определяет единственную операцию над множествами — операцию объединения "|". Выражение "$A | $B" возвратит множество узлов, присутствующих либо в $A, либо в $B, либо и там, и там.

В XSLT нет встроенного оператора, который позволил бы установить принадлежность узла некоторому множеству. Для этой цели используется очень хитроумный прием, основанный на использовании функции count, которая возвращает количество узлов множества. Представим, что множество $node содержит некоторый узел, и мы хотим проверить, входит ли он во множество $nodeset. Сделать это можно при помощи выражения

count($nodeset) = count($node | $nodeset)

которое будет истинным тогда и только тогда, когда $node полностью принадлежит $nodeset.

Этот метод позволяет реализовать в XSLT другие операции над множествами — пересечение, разность и симметрическую разность. Подробное описание этих операций приводится в главе 11.

В XSLT также нет оператора, который позволил бы проверить тождественность двух узлов. Например, если каждое из множеств $A и $B содержит по одному узлу, при помощи простого оператора равенства ($A = $B) мы не сможем проверить, один и тот же это узел или два разных узла с одинаковыми текстовыми значениями.

Для того чтобы корректно выполнить такое сравнение, можно использовать функцию generate-id, которая для каждого из узлов дерева генерирует уникальный строковый идентификатор, присущий только этому узлу и никакому другому, причем для одних и тех же узлов идентификаторы всегда будут генерироваться одинаковыми. Таким образом, для проверки тождественности двух узлов, содержащихся во множествах $A и $B, будет достаточно сравнить их уникальные идентификаторы:

generate-id($А) = generate-id($В)

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

При преобразовании в булевый тип пустое множество узлов преобразуется в false, а непустое — в true. Например, чтобы проверить, есть ли у текущего узла атрибут value, можно написать:

<xsl:if test="@value">

 <xsl:text>Value attribute exists here.</xsl:text>

</xsl:if>

Выражение @value возвратит непустое множество, состоящее из узла атрибута value, если он есть в текущем элементе, или пустое множество, если такого атрибута нет. В первом случае логическим эквивалентом будет true, во втором — false, то есть текст будет выведен только в случае наличия атрибута value.

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

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

<catalog>

 <item>A</item>

 <item>B</item>

 <item>C</item>

 <item>D</item>

</catalog>

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

<xsl:stylesheet

 version="1.0"

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


 <xsl:output method="text"/>


 <xsl:template match="/">

  <xsl:value-of select="catalog/item"/>

 </xsl:template>


</xsl:stylesheet>

Результат:

A

При преобразовании множества узлов в число, множество сначала приводится к строке, а затем строка преобразуется в численное значение. Проще говоря, численным значением множества узлов будет численное значение первого узла в порядке просмотра документа.

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

<numbers>

 <integer>1</integer>

 <real>1.5</real>

 <integer>2</integer>

 <real>2.6</real>

 <integer>3</integer>

 <real>3.7</real>

</numbers>

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

<xsl:stylesheet

 version="1.0"

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


 <xsl:output method="text"/>


 <xsl:template match="/">

  <xsl:value-of select="numbers/real — numbers/integer"/>

 </xsl:template>


</xsl:stylesheet>

Результат:

0.5

Результирующий фрагмент дерева (result tree fragment)

Четыре типа данных, описанных выше, заимствованы языком XSLT из XPath. Вместе с тем, XSLT имеет и свой собственный тип данных, называемый result tree fragment (результирующий фрагмент дерева).

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

<xsl:template match="href">

 <B>You may visit the <A HREF="{location}">following link</A>.</B>

</xsl:template>

Если мы применим это правило к части документа

<href>

 <location>http://www.xsltdev.ru</location>

</href>

то получим следующий результат:

<B>You may visit the <A HREF="http://www.xsltdev.ru">following link</A>.</B>

В терминах деревьев выполнение этого шаблона показано на рис. 3.17.

Рис. 3.17. Часть дерева входящего документа и часть дерева сгенерированного документа

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


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

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

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


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

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

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

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

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

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

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