С пояснением, что экземпляр последовательности, как и все остальное в XPath / XSLT, является неизменным, ответ положительный :
Повторениенад последовательностью :
<xsl:for-each select="$seq">
<!-- Whatever necessary code here -->
<!-- . is the current item of the sequence-->
</xsl:for-each>
Добавить элемент в последовательность (создает новую последовательность, которая является результатомэта операция):
insert-before($target as item()*,
$position as xs:integer,
$inserts as item()*) as item()*
Сводка : Возвращает новую последовательность, построенную из значения $ target со значением $ insert, вставленным впозиция определяется значением $ position.(На значение $ target не влияет построение последовательности.)
.
3. Объединение двух последовательностей (создает новую последовательность, являющуюся результатом этой операции):
$seq1 , $seq2
.
.4. Удалить элемент из последовательности :
remove($target as item()*, $position as xs:integer) as item()*
Summary : Возвращает новую последовательность, построенную из значения $ targetпри удалении элемента в позиции, указанной значением $ position
.
.5. Извлечение подпоследовательности из последовательности :
subsequence($sourceSeq as item()*,
$startingLoc as xs:double,
$length as xs:double) **as item**()*
Сводка : Возвращает непрерывную последовательность элементов в значении $sourceSeq начинается с позиции, обозначенной значением $ startLoc, и продолжается для количества элементов, обозначенного значением $ length.
И есть еще много полезных стандартных XPath2.0 работает над последовательностями .
Примечание : единственная особенность, которой нет в последовательности XPath 2.0, - это "вложенность".Последовательность всегда "плоская", и элемент последовательности не может быть самой последовательностью.Существуют способы имитации многоуровневых последовательностей - например, элемент может быть узлом, а его дочерние узлы могут рассматриваться как вложенные последовательности.
Обновление : Вот как этиФункции могут быть удобно использованы для решения обновленного вопроса ОП:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:my="my:my" >
<xsl:template match="/">
<xsl:sequence select="my:populateSequence((), 1, 10)"/>
</xsl:template>
<xsl:function name="my:populateSequence" as="xs:integer*">
<xsl:param name="pSeq" as="xs:integer*"/>
<xsl:param name="pStart" as="xs:integer"/>
<xsl:param name="pEnd" as="xs:integer"/>
<xsl:sequence select=
"if($pStart gt $pEnd)
then $pSeq
else my:populateSequence(($pSeq, $pStart), $pStart+1, $pEnd)
"/>
</xsl:function>
</xsl:stylesheet>
Когда это преобразование XSLT 2.0 применяется к любому XML-документу (не используется), получается требуемый результат :
1 2 3 4 5 6 7 8 9 10