Если я вас правильно понимаю, вы запрашиваете функцию умножения, которая работает со списками / последовательностями.
Поскольку такой встроенной функции afaik нет, для этого требуется определенная пользователем рекурсивная функция (в среде функционального программирования XQuery), например:
declare function local:rec-multiply($seq, $count) {
if(empty($seq)) then ()
else
let $prod := $seq[1],
$count := $count * $prod
return (
<count>{ $count }</count>,
local:rec-multiply($seq[position() > 1], $count)
)
};
count(tokenize(//Integer/@start, '\s'))
= local:rec-multiply(//Dimension/@value, 1)[last()]
Online Demo
Предупреждение: для этого кода требуется XQuery 3+, а обычные процессоры XSD поддерживают только XPath 2.0 (на самом деле часто это только подмножество).Если вы отмените это ограничение, вы также можете использовать функции XQuery для фальцевания влево / вправо, как упомянул Майкл Кей.
Однако, в конце концов, скорее всего, гораздо проще просто извлечь эти значения и выполнитьумножение и проверка на вашем языке программирования общего назначения.