Ходом выполнения преобразования в 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
. Если же он отсутствует, то никаких действий не производится вообще.