Я хочу, чтобы переменная имела значение элемента, если значение является числовым, но если это не так, я хочу, чтобы переменная имела значение 0
.Условная переменная select в XSLT
Другими словами, существует простой эквивалент следующего в XSLT?
var foobar = is_numeric(element value) ? element value : 0
Или как бы вы это написали?
<xsl:variable name="foobar" select=" ? " />
Что '(х, у)' делать, в первом примере? – Svish
@Svish, '(x, y)' формирует последовательность 'x' и' y', но как 'ELEMENT [. castable as xs: double] 'дает пустую последовательность, если содержимое' ELEMENT' не является двойным значением, это либо последовательность '(ELEMENT, 0)', либо просто последовательность '(0)'. И предикат '[1]' затем выбирает 'ELEMENT' или' 0'. –
@Svish, в частности, если в текущем контексте есть более одного дочернего элемента ELEMENT, тогда мой подход всегда будет возвращать '0' (потому что последовательность из более чем одного элемента не является« castable as xs: double »), тогда как Подход Майкла вернет первый дочерний элемент «ELEMENT», который можно отнести к «xs: double» (в случае «(x, y) [1]») или сумме всех таких «ELEMENT's» (в 'sum() '), или' 0', если ни один из них не будет соответствующим образом закрыт. –