Стивен Холзнер - XSLT

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "XSLT"
Описание и краткое содержание "XSLT" читать бесплатно онлайн.
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
<xsl:template match="DAY">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
<xsl:template match="DISTANCE">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
<xsl:template match="//*[contains(@UNITS, 'miles')]">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:text>You should switch to kilometers.</xsl:text>
</xsl:template>
</xsl:stylesheet>
Вот результирующий документ:
<HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
<TD>Distance</TD>
</TR>
<TR>
<TD>Mercury</TD>
<TD>.0553 (Earth = 1)</TD>
<TD>1516 You should switch to kilometers.</TD>
<TD>58.65 days</TD>
<TD>43.4 You should switch to kilometers.</TD>
</TR>
<TR>
<TD>Venus</TD>
<TD>.815 (Earth = 1)</TD>
<TD>3716 You should switch to kilometers.</TD>
<TD>116.75 days</TD>
<TD>66.8 You should switch to kilometers.</TD>
</TR>
<TR>
<TD>Earth</TD>
<TD>1 (Earth = 1)</TD>
<TD>2107 You should switch to kilometers.</TD>
<TD>1 days</TD>
<TD>128.4 You should switch to kilometers.</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Помимо работы с наборами узлов, числами и строками, можно работать и с логическими значениями (true/false).
Логические значения XPath
Логические (Boolean) выражения XPath вычисляются либо в истину (true), либо в ложь (false), и обычно они используются только в предикатах. Для чисел ноль принимается за ложь, другие значения — за истину. Пустая строка, "", также считается ложью, все остальные строки — истиной.
Для генерации логических результатов true/false в XPath можно применять ряд логических операций, как мы видели в обзоре в главе 4:
• != означает «не равно»;
• < означает «меньше, чем» (в документах XML используйте <);
• <= означает «меньше или равно» (в документах XML используйте <=);
• = означает «равно» (программисты на С, С++, Java и JavaScript, обратите внимание: эта операция пишется как один знак =, а не два);
• > означает «больше, чем»;
• >= означает «больше или равно».
Для связи логических выражений логическими операциями And и Or используются ключевые слова and и or, слово not инвертирует логический смысл выражения, как в следующем примере, где я выбираю все элементы <PLANET>, кроме первого и последнего:
<xsl:template match="PLANET[not(position() = 1) and not(position() = last())]">
<xsl:value-of select="."/>
</xsl:template>
Следующий пример уже встречался нам в главе 5, он использует логическую операцию not и операции = и !=:
<xsl:template match="PLANET">
<xsl:if test="NAME[not(text())]">
<xsl:message terminate="yes">
Each planet must have a name!
</xsl:message>
</xsl:if>
<xsl:value-of select="NAME"/>
<xsl:choose>
<xsl:when test="position()!=last()">, </xsl:when>
<xsl:when test="position()=last()-1">and </xsl:when>
<xsl:otherwise>.</xsl:otherwise>
</xsl:choose>
</xsl:template>
Кроме того, имеется функция true, всегда возвращающая истину, и функция false, всегда возвращающая ложь. Есть также функция lang, при помощи которой вы можете проверить язык, установленный в атрибуте документа xml:lang: эта функция возвращает истину, если язык, который вы передали в эту функцию, такой же, как и установленный в документе язык.
Как вы видели, существуют все виды выражений XPath, в том числе возвращающие узлы, числа, строки и логические значения. Наиболее важным типом выражений XPath является путь расположения; для создания путей расположена XPath первоначально и задумывался, поэтому оставшаяся часть главы будет посвящена работе с ними.
Создание путей расположения XPath
Вы уже знакомы со взглядом на документы с позиции XPath; например, в XPath определено семь типов узлов документа:
• Корневой узел. Самое начало документа. Этот узел представляет в XPath весь документ;
• Узлы элементов. Представляют элементы в деревьях XPath, обозначенные открывающим и соответственным закрывающим тегами или единственным пустым тегом элемента;
• Узлы атрибутов. Значение атрибута после раскрытия ссылок на сущность и отбрасывания окружающих символов-разделителей;
• Узлы комментариев. Текст комментариев, не включая <!-- и -->;
• Узлы пространств имен. Объявление пространства имен. В XPath узел пространства имен добавляется во все элементы для каждого активного пространства имен, включая пространства имен по умолчанию;
• Узлы инструкций обработки. Содержат текст инструкции обработки, не включая <? и ?>;
• Текстовые узлы. Текст PCDATA. Текстовые узлы по умолчанию в XPath нормализованы, поэтому расположенные рядом текстовые узлы немедленно объединяются.
Для задания узла или набора узлов в XPath служит путь расположения (location path). Путь расположения, в свою очередь, состоит из одного или более шагов расположения (location step), также называемых просто шагами, разделенных / или //. Если путь расположения начинается с /, он называется абсолютным путем расположения, поскольку путь задается от корневого узла; иначе путь называется относительным, начинаясь от контекстного узла.
Шаги расположения, строительные блоки путей расположения, во многом похожи на образцы шага (step patterns), формирующие образцы выбора, которые мы видели в главе 4. В частности, шаг расположения образован из оси (axis), условия узла (node test) и предикатов (которых может и не быть) по такому образцу: axis::nodetest[predicate]. Например, в выражении ancestor::NAME[position() > 100], ancestor — это имя оси, NAME — условие узла и [position() >100] — предикат. (Предикат сам содержит законченное выражение XPath, обычно возвращающее логическое значение.) Пути расположения создаются при помощи одного или более шагов расположения, таких как /descendant::PLANET/child::NAME, который выбирает все элементы <NAME> с родителем <PLANET>.
Шаги XPath похожи на образцы шага из главы 4, так как общий их вид одинаков — axis::nodetest[predicate] — но в данном случае нужно рассмотреть значительно больше материала. Например, осей теперь тринадцать, а не две.
Шаги расположения XPath, часть 1: оси
В пути расположения ancestor::NAME, адресующем элемент <NAME>, который является предком контекстного узла, ancestor выступает осью. XPath поддерживает много различных осей, ниже приведен полный список:
• ось ancestor содержит предков (ancestor) контекстного узла, то есть родителей контекстного узла, родителей этих родителей и т.д., вплоть до корневого узла (включая его);
• ось ancestor-or-self содержит контекстный узел и его предков;
• ось attribute содержит атрибуты контекстного узла;
• ось child содержит детей контекстного узла;
• ось descendant содержит потомков (descendant) контекстного узла, то есть его детей, детей этих детей и т.д.;
• ось descendant-or-self содержит контекстный узел и его потомков;
• ось following содержит все узлы в том же документе, такие же, как контекстный узел, встретившиеся после контекстного узла;
• ось following-sibling содержит всех последующих братьев контекстного узла. «Брат» — узел, расположенный на том же уровне, что и контекстный узел;
• ось namespace содержит узлы пространств имен контекстного узла;
• ось parent содержит родителя контекстного узла;
• ось preceding содержит все узлы до контекстного узла;
• ось preceding-sibling содержит всех предшествующих «братьев» контекстного узла;
• ось self содержит контекстный узел.
В следующем примере шаблона я воспользовался осью descendant для выбора потомков контекстного узла, куда входят дочерние узлы, узлы-внуки, узлы-правнуки и т.д.:
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "XSLT"
Книги похожие на "XSLT" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Стивен Холзнер - XSLT"
Отзывы читателей о книге "XSLT", комментарии и мнения людей о произведении.