Основы ASP.NET 2.0


         

и повторяет шаблон для каждого


Чтобы внести в выходной поток XSLT-преобразования каждый XML-элемент, применяется тег XSL xsl:for-each. Элемент :for-each определяет местоположение элементов в XML-документе и повторяет шаблон для каждого из них:

<xsl:for-each select="Quotes/Quote"> </xsl:for-each>

Все, что находится в шаблоне, будет выводиться столько раз, сколько в исходном документе встретится элемент Quote, заключенный в тег Quotes.

Чтобы внести в выходной поток XSLT-преобразования значение XML-элемента, применяется тег XSL xsl:value-of:

<xsl:value-of select="Text"/> <hr/>

Данные можно отсортировать с помощью тега xsl:sort, который должен находиться внутри элемента xsl:for-each:

<xsl:sort select="Author" />

XSL может применять условия для показа и форматирования информации в зависимости от значений элементов. "Условный оператор" имеет вид <xsl:choose>, в который вложены элементы <xsl:when> и, возможно, <xsl:otherwise>. Условие задается в элементе <xsl:when> с помощью парамерта test:

<xsl:choose> <xsl:when test="Author='Марк Твен'"> <img src="http://www.tvkultura.ru/p/q_14406.jpg"></img> </xsl:when>

Окончательный вид файла трансформации:

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <body> <h1 style="background-color: RoyalBlue; color: white; font-size: 24pt; text-align: center; letter-spacing: 1.0em"> Известные цитаты </h1> <table border="0"> <tr style="font-size: 12pt; font-family: verdana; font-weight: bold"> <td style="text-align: center">Цитата</td> <td style="text-align: center">Автор</td> </tr> <xsl:for-each select="Quotes/Quote"> <xsl:sort select="Author" /> <tr style="font-size: 10pt; font-family: verdana"> <td> <xsl:value-of select="Text"/></td> <td> <xsl:choose> <xsl:when test="Author='Марк Твен'"> <img src="http://www.tvkultura.ru/ p/q_14406.jpg"></img> </xsl:when> <xsl:otherwise> <i><xsl:value-of select="Author"/></i> </xsl:otherwise> </xsl:choose> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>


Содержание  Назад  Вперед