xsl:where-populated¶
Используется для того, чтобы сделать условное построение контента потоковым. Используется для того, чтобы избежать вывода элемента обертки, если у него нет дочерних элементов.
Доступно в XSLT 3.0. Начиная с Saxon 9.8, доступен во всех редакциях. Реализовано в Saxon-PE и Saxon-EE начиная с Saxon 9.7.
- Категория: инструкция
- Содержимое: sequence-constructor
- Допустимые родительские элементы: any XSLT element whose content model is sequence-constructor; any literal result element
- Элемент не имеет атрибутов
Заметки по реализации Saxon¶
Новый в XSLT 3.0 и реализованный начиная с Saxon 9.7.
Подробности¶
Содержащийся конструктор последовательности оценивается обычным образом, но любой элемент в результате работы конструктора последовательности, который "считается пустым", отбрасывается. Примерами элементов, которые "считаются пустыми", являются элементы без дочерних элементов (даже если у них есть атрибуты), а также узлы и атомарные значения, строковое значение которых имеет нулевую длину. Узлы документов считаются пустыми, если у них нет дочерних элементов, а также пустые карты и массивы. Текстовые узлы, содержащие пробельные символы, НЕ считаются пустыми.
Чаще всего инструкция имеет одну дочернюю инструкцию, которая создает узел элемента; узел элемента отбрасывается, если он не имеет содержимого.
Хотя эта инструкция была придумана для того, чтобы сделать код потоковым, она может быть одинаково удобна и в непотоковых приложениях.
Примеры¶
Следующий код генерирует элемент обертки для непустой последовательности, однако он не является гарантированно-потоковым, поскольку обрабатывает дочерние элементы event
более одного раза:
1 2 3 4 5 |
|
Чтобы сделать его потоковым, его можно переписать с помощью инструкции xsl:where-populated
:
1 2 3 4 5 |
|