环境: eXist-db 4.2.1,XQuery 3.1,XSLT2.0
我需要使用XQuery在eXist-DB中执行XSLT转换。XSLT需要在数百个文档中搜索节点属性值上的匹配。从eXist seems to not work中的XSLT调用collection()。
我已经对解决这个问题的其他方法做了一些探索,由于找不到任何东西,我在这里发布了两个问题:
xquery transform:transform()上的参数在这里是不够的)谢谢您的意见和参考。
发布于 2018-10-23 18:19:38
由于XSLT是XML,使用XQuery,您当然可以动态构造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, ())https://stackoverflow.com/questions/52947485
复制相似问题