Содержание
Ходом выполнения преобразования в XSLT, как и в других языках программирования, можно управлять. Для этого предусмотрены инструкции xsl:for-each, xsl:if, xsl:choose, xsl:when, xsl:otherwise.
Инструкция xsl:for-each
Инструкция xsl:for-each позволяет организовать циклическую обработку узлов, или, проще говоря, повторение. Она будет полезна если для ряда узлов необходимо выполнить одни и те же действия.
Синтаксис:
1 2 3 4 | <xsl:for-each select = "XPath"> Инструкции или фиксированные конечные элементы </xsl:for-each> |
Атрибуты:
select– обязательный атрибут, содержит выражение на языке XPath, результатом обработки которого должен быть набор узлов. Для каждого узла из этого набора будут выполнены инструкции и фиксированные конечные элементы, содержащиеся внутри инструкцииxsl:for-each. Узлы обрабатываются в том порядке, как они следуют в исходном дереве, если нет указаний относительно сортировки.
Инструкция xsl:if
Инструкция xsl:if позволяет выполнить обработку с условием. Она аналогична конструкции if-then, присутствующей во многих языках программирования.
Синтаксис:
1 2 3 4 | <xsl:if test = "XPath"> Инструкции или фиксированные конечные элементы </xsl:if> |
Атрибуты:
test– обязательный атрибут, задает выражение на языке XPath. Это выражение обрабатывается, а его результат преобразуется в булево значение. Если результатом являетсяtrue, содержащиеся внутри элементаxsl:ifинструкции и фиксированные конечные элементы выполняются. Если результатом являетсяfalse, никаких действий не производится.
Инструкции xsl:choose, xsl:when, xsl:otherwise
Инструкции xsl:choose, xsl:when, xsl:otherwise образую конструкцию, которая позволяет выполнить более сложную по сравнению с инструкцией xsl:if обработку с условием. Она позволяет выбрать из нескольких альтернативных вариантов один.
Синтаксис:
1 2 3 4 5 6 7 8 | <xsl:choose> <xsl:when test = "XPath"> Инструкции или фиксированные конечные элементы </xsl:when> <xsl:otherwise> Инструкции или фиксированные конечные элементы </xsl:otherwise> </xsl:choose> |
Элемент xsl:choose содержит один или несколько элементов xsl:when и необязательный элемент xsl:otherwise. Элементы xsl:when и xsl:otherwise содержат другие инструкции и фиксированные конечные элементы. Когда процессор встречает конструкцию xsl:choose, он поочередно проверяет все содержащиеся в ней элементы xsl:when.
Каждый элемент xsl:when имеет единственный атрибут test, являющийся обязательным. Значением данного атрибута является выражение на языке XPath. Это выражение обрабатывается, а его результат преобразуется в булево значение. Если результатом является true, содержащиеся внутри элемента xsl:when инструкции и фиксированные конечные элементы выполняются, и обработка конструкции xsl:choose прекращается. То есть выполняется содержимое только первого элемента xsl:when, при проверке которого было получено true.
Если результатом является false, процессор переходит к следующему элементу xsl:when. Если ни один из элементов xsl:when не показал true, выполняются инструкции из элемента xsl:otherwise. Если же он отсутствует, то никаких действий не производится вообще.

