Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Таранова / Лекция-8_XSl.pptx
Скачиваний:
61
Добавлен:
19.05.2015
Размер:
473.84 Кб
Скачать

В предыдущих примерах таблице полностью с тегов в 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>

Соседние файлы в папке Таранова