Перейти к содержанию

xsl:on-empty

Используется для того, чтобы сделать потоковой конструкцию условного содержимого. Выводит вложенное содержимое только в том случае, если содержащая последовательность не генерирует "обычного" содержимого.

Если эта инструкция появляется в конструкторе последовательности, она должна идти после всех остальных инструкций.

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

Доступна в XSLT 3.0. Начиная с версии Saxon 9.8, доступна во всех изданиях. Реализована в Saxon-PE и Saxon-EE начиная с Saxon 9.7.

  • Категория: инструкция
  • Содержимое: sequence-constructor
  • Допустимые родительские элементы: любой элемент XSLT, модель содержимого которого - sequence-constructor; любой литеральный элемент результата

Атрибуты

select?
expression

Заметки по реализации Saxon

Новый в XSLT 3.0 и реализованный начиная с Saxon 9.7.

Примеры

Следующий код генерирует замещающий текст при отсутствии содержимого, однако он не является гарантированно-потоковым, поскольку обрабатывает дочерние элементы item-for-sale более одного раза:

1
2
3
4
<xsl:apply-templates select="item-for-sale"/>
<xsl:if test="empty(item-for-sale)">
    <p>There are no items for sale.</p>
</xsl:if>

Чтобы сделать его потоковым, его можно переписать с помощью инструкции xsl:on-empty:

1
2
3
4
5
6
<xsl:sequence>
    <xsl:apply-templates select="item-for-sale"/>
    <xsl:on-empty>
        <p>There are no items for sale.</p>
    </xsl:on-empty>
</xsl:sequence>

Ссылки

См. также

Комментарии