
- •XSLT
- •XPath
- •Шаг доступа состоит из трех частей: необязательной оси, проверки узла и необязательного предиката.
- •Оси выборки XPath
- •Оси — это база языка XPath.
- •Дочерняя ось и ось потомков
- •Оси братьев
- •Родительская ось и ось
- •Предикат
- •Операторы и специальные символы
- •Функции множеств узлов
- •Функция: number sum(node-set) возвращает сумму результатов преобразований строковых значений всех узлов в аргументном
- •Функция: string string(object?) преобразует объект в строку
- •Проверки типов узлов
- •string-length
- •Выбираются все атрибуты @id //@id
- •В общем случае в преобразовании участвуют три документа:
- •Процесс обработки делится на три стадии.
- •XSLT имеет некоторые ограничения:
- •xsl:stylesheet
- •xsl:template
- •Атрибуты элемента xsl:template
- •Корневое правило
- •xsl:value-of
- •Когда для каждого узла из некоторого набора требуется выполнить однотипную обработку, то применяется
- •В предыдущих примерах таблице полностью с тегов в XML-файле. изменять. Добавим в тег
- •xsl:sort
- •Условия
- •Элемент XSL:IF - фильтр
- •Переменные в XSLT
- •xsl:apply-templates
- •xsl:number
- •Атрибут format позволяет определить форматную строку, используемую как шаблон при выводе номера. Например,
- •from- указывающий, с какой точки начинается отсчет.
- •xsl:choose
- •xsl:attribute
- •Параметры в XSLT

В предыдущих примерах таблице полностью с тегов в XML-файле. изменять. Добавим в тег
<xsl:for-each select="tutorial/enimals/dogs/dog"> атрибут order-by
<xsl:for-each select="tutorial/enimals/dogs/dog" order-by="dogName">
<xsl:for-each select="tutorial/enimals/dogs/dog"
order-by="number(dogWeight)">
<xsl:for-each
select="tutorial/enimals/dogs/dog" order-by=" dogName;number(dogWeight) ">

xsl:sort
<xsl:sort order="ascending" select="dogName"/>
Если элемент xsl:sort присутствует в элементе xsl:for-each, то он всегда должен стоять сразу после элемента xsl:for-each. Синтаксис элемента xsl:sort достаточно очевиден. В нем используются два атрибута: атрибут order - способ сортировки (по возрастанию или по убыванию, ascending или descending) и атрибут select - имя поля, по которому производится сортировка.

<xsl:for-each select="tutorial/enimals/dogs/dog"> <xsl:sort order="ascending" select="dogName"/>
<tr bgcolor="#F5F5F5">
<td><xsl:value-of select="dogName"/></td> <td align="right"><xsl:value-of select="dogWeight"/> <xsl:value-of select="dogWeight/@caption"/></td> <td><xsl:value-of select="dogColor"/></td> </tr>
</xsl:for-each>

Условия
Вывести на экран только тех у кого вес больше 10 кг.
<xsl:for-each select="tutorial/enimals/dogs/dog[do gWeight>10]" >

Элемент XSL:IF - фильтр
<xsl:for-each select="tutorial/enimals/dogs/dog[dogWeight>10]" >
<xsl:if test="dogWeight>10"> <tr bgcolor="#F5F5F5">
<td><xsl:value-of select="dogName"/></td>
<td align="right"><xsl:value-of select="dogWeight"/> <xsl:value-of select="dogWeight/@caption"/></td>
<td><xsl:value-of select="dogColor"/></td> </tr>
</xsl:if>
</xsl:for-each>

Переменные в XSLT-таблицах определяются с помощью инструкции <xsl:variable>.
Имя (строка) и значение (XPath-выражение) создаваемой переменной задаются с помощью атрибутов name и select. Например, инструкция
<xsl:variable name="width" select="50" />.
определяет переменную с именем $width (к значению name добавляется знак доллара — признак имени переменной), хранящую 50.
Атрибут select не является обязательным, так как значение переменной можно задать в теле элемента:
<xsl:variable name="width">50</xsl:variable>.

Переменные в XSLT
<xsl:variable name=“dogs">
<xsl:value-of select="count(tutorial/enimals/dogs/dog) "/>
</xsl:variable>
……………..
<xsl:value-of select="$dogs"/>

xsl:apply-templates
Шаблон, описанный ранее, применяется только по отношению к корневому узлу. Выполняется тривиальное действие по замене полного XML- документа HTML- документом. Можно также применять шаблоны по отношению к дочерним элементам узла, с которым установлено соответствие. В этих целях применяется элемент <xsl :apply- templates>.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/">
<HTML> <xsl:apply-templates/> </HTML> </xsl:template>
<xsl:template match="tutorial/enimals/dogs"> <xsl:for-each select="dog" >
<p>
<xsl:value-of select="dogName"/> </p>
</xsl:for-each> </xsl:template> </xsl:stylesheet>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/"> <HTML> <xsl:apply-templates/> </HTML> </xsl:template>
<xsl:template match="dog">
<xsl:for-each select="dogName|dogWeight" > <p>
<xsl:value-of select="."/> </p>
</xsl:for-each> </xsl:template> </xsl:stylesheet>