xslt

Управляющие конструкции в XSLT

В XSLT есть операторы управления — управляющие конструкции, что делает его близким к программированию. Среди управляющих операторов в XSLT различают:

  • условный оператор if;
  • оператор выбора;
  • цикл;
  • рекурсия.

Условная конструкция

Разберем синтаксис:

<xsl:if test="expression">
   <!-- content:template -->.
</xsl:if>

В первую строчку подсовывается любое XPath выражение. Если это выражение true, то контент (содержимое if) будет обработан. Если false — ничего не произойдет.

Внимание! У конструкции if нет else. Поэтому чаще используют конструкцию, в которой else есть — это конструкция выбора.

Конструкция выбора

Рассмотрим синтаксис:

<xsl:choose>
   <xsl:when test="boolean-expression">
      <!-- content:template -->
   </xsl:when>
   <xsl:when test="boolean-expression">
      <!-- content:template -->
   </xsl:when>
   <xsl:otherwise>
      <!-- content -->
   </xsl:otherwise>
</xsl:choose>

Т.е. здесь множественный выбор, несколько условий. Процессор последовательно проверяет условия до первого совпадения. Какое условие первое совпадает, тот блок и обрабатывается. Если хоть одно условие сработало, остальные уже не проверяются. Если не сработало ни одно из условий, тогда выполняется блок otherwise (иначе).

Циклическая конструкция

Синтаксис:

<xsl:for-each select="expression">
   <!-- content:(xsl:sort*,template) -->
</xsl:for-each>

Т.е. это цикл. В первую строку вставляется любое XPath выражение (expression), выбирающее набор узлов. Дальше для каждого из выбранных узлов выполняется все, что написано внутри тела for-each.

Рекурсивная конструкция

Синтаксис:

<xsl:template match="myElement">
   ...
      <xsl:apply-templates select="myElement"/>
   ...
</xsl:template>

Здесь используется рекурсия (вызов самого себя). Шаблон myElement выбирает шаблон myElement и сам себя начинает гонять.

Сортировка значений

Многие конструкции связаны с подвыборкой элементов (например, apply-templates, for-each), т.е. они берут набор узлов.

Те элементы, которые слпряжены с выборкой элементов, обрабатывают найденные узлы по принципу как они ему встретились, т.е. как они написаны в исходном файле. Довольно часто нам нужно их поменять местами. И тогда используют конструкцию сортировки:

<xsl:sort
   select="expression" <!-- по какому выражению сортировать -->
   lang="language-code" <!-- правила какого языка использовать -->
   data-type="text|numver|qname" <!-- как рассматривать данные: текст, цифра, возможное расширение конкретного процессора -->
   order="ascending|descending" <!-- сортировать по возрастанию|убыванию  -->
   case-order="upper-first|lower-first"/> <!-- сначала большие или маленькие буквы -->



Добавить комментарий

Ваш e-mail не будет опубликован.