Поскольку XSLT - это XML, а с помощью XQuery вы можете создавать XML, вы, конечно же, можете создавать XSLT на лету и вставлять данные, которые вы собрали в другом месте в XQuery, следующий пример, конечно, глупый, но он создает некоторые данные в XQuery, создает XSLTТаблица стилей на лету вводит некоторые из этих данных непосредственно в виде значения параметра, а затем запускает XSLT:
declare namespace xsl = "http://www.w3.org/1999/XSL/Transform";
let $elements := (1 to 3)!<root><data>{.}</data></root>,
$stylesheet :=
<xsl:stylesheet version="2.0">
<xsl:param name="data-elements" as="element()*">{$elements!data}</xsl:param>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="foo[. = $data-elements]"/>
</xsl:stylesheet>,
$input := <root><list><foo>a</foo><foo>2</foo><foo>10</foo><foo>1</foo></list></root>
return transform:transform($input, $stylesheet, ())