首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将参数发送到XSLT中的函数时对列表进行排序

将参数发送到XSLT中的函数时对列表进行排序
EN

Stack Overflow用户
提问于 2018-09-10 14:24:11
回答 1查看 37关注 0票数 0

我根据某些条件创建了一个列表(xml的文档片段),并希望根据列表中的一个属性进行排序?我怎样才能做到这一点?

这是呼叫模板

代码语言:javascript
复制
<xsl:call-template name="tempDiagnosisByNomenId">
    <xsl:with-param name="dxNomenId" select="$nomenId"/>
    <xsl:with-param name="dxList" select="key('keyDxByNomenId', $nomenId, $root-node)[@is-active='true']"/>
    <xsl:with-param name="hasDxOrders" select="$hasDxOrders"/>
</xsl:call-template>

我想根据属性对参数dxList进行排序,然后将其发送给函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 17:07:48

在没有看到XML输入的情况下提出问题是很困难的,但是如果您更改了

代码语言:javascript
复制
<xsl:with-param name="dxList" select="key('keyDxByNomenId', $nomenId, $root-node)[@is-active='true']"/>

代码语言:javascript
复制
<xsl:with-param name="dxList" as="node()*">
  <xsl:perform-sort select="key('keyDxByNomenId', $nomenId, $root-node)[@is-active='true']">
    <xsl:sort select="@some-attribute"/>
  </xsl:perform-sort>
</xsl:with-param>

然后,应该将key函数调用返回的节点作为参数dxList传递,并根据some-attribute属性进行排序,而不是按照key函数调用返回的正常文档顺序进行排序。请参阅perform-sort https://www.w3.org/TR/xslt20/#element-perform-sort上的规范。

作为另一种选择,您可以使用xsl:function定义一个函数,该函数只有一个输入参数,并在函数体中使用xsl:perform-sort,然后可以通过在select表达式中调用该函数来使xsl:with-param更紧凑。

在具有高阶函数支持的XSLT3中,您可以直接使用sort函数,例如

代码语言:javascript
复制
<xsl:with-param name="dxList" select="sort(key('keyDxByNomenId', $nomenId, $root-node)[@is-active='true'], (), function($node) { $node/@some-attribute })"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52252142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档