Инструкция choose
Среди нескольких возможных альтернатив элемент xsl:choose выбирает одну. Он состоит из последовательности элементов xsl:when, за которой следует необязательный элемент xsl:otherwise. Каждый элемент xsl:when имеет единственный атрибут test, который задает некое выражение. Содержимое элементов xsl:when и xsl:otherwise является шаблоном.
Если обрабатывается элемент xsl:choose, поочередно проверяются все элементы xsl:when. При этом обрабатывается соответствующее выражение, а полученный объект преобразуется в булевый тип как при вызове функции boolean. Обрабатывается содержимое первого, и только первого элемента xsl:when, при проверке которого было получено true. Если ни один из xsl:when не показал true, подставляется значение элемента xsl:otherwise. Если ни один из xsl:when не показал true, а элемент xsl:otherwise отсутствует, то ничего не создается.
Первым должен идти элемент xsl:choose, а за ним дополнительные (один или несколько) элементы xsl:when, если требуется обрабатывать значение не подпадающее ни под одно из условий имеющихся элементов xsl:when, то вы можете добавить элемент xsl:otherwise.
Прототип:
<!-- Category: instruction --> <xsl:choose> <!-- Content: (xsl:when+, xsl:otherwise?) --> </xsl:choose> <xsl:when test = boolean-expression> <!-- Content: template --> </xsl:when> <xsl:otherwise> <!-- Content: template --> </xsl:otherwise>
XSL-шаблон:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/document"> <html> <head> <title><xsl:value-of select="title"/></title> </head> <body> <!-- Выбираем узлы structure --> <xsl:for-each select="structure"> <p> <!-- Проверка на параметр id --> <xsl:choose> <xsl:when test="@id = 1"> <font color="red">Значение:</font> </xsl:when> <xsl:when test="@id > 1"> Значение: </xsl:when> <xsl:otherwise> Значение: </xsl:otherwise> </xsl:choose> <xsl:value-of disable-output-escaping="yes" select="value"/> </p> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
В результате получится HTML-документ:
<html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-16"> <title>Заголовок 1</title> </head> <body> <p><font color="red">Значение:</font> aaa</p> <p>Значение: bbb</p> </body> </html>