简化XSLT函数:将排序和合并功能合并到列表中的函数中

时间:2018-09-20 11:48:04

标签: xslt xpath

我的XSLT函数是:

<xsl:function name="cdocfx:getDisplayableDiagnoses">
    <xsl:param name="clinicalDiagnosis"/>
    <xsl:param name="entityIdList"/>

    <!-- sortedDXList contains all the diagnosis in the sorted order based on priority -->
    <xsl:variable name="sortedDXList" as="element()*">
        <xsl:perform-sort select="$clinicalDiagnosis[@is-active='true']">
            <xsl:sort select="cdocfx:getDxPriority(.)" order="ascending"/>
            <xsl:sort select="fn:upper-case(cdocfx:getDxDisplay(.))" order="ascending"/>        
        </xsl:perform-sort>

    </xsl:variable>

    <!-- dxList contains all the diagnosis which are to be displayed in sorted order  -->
    <xsl:variable name="dxList" as="element()*">
        <xsl:for-each select="$sortedDXList">
            <xsl:if test="cdocfx:shouldDisplayDiagnosis(.,$entityIdList)= true()">
                <xsl:copy-of select="."/>
            </xsl:if>
        </xsl:for-each>
    </xsl:variable>

    <xsl:copy-of select="$dxList"/>
</xsl:function>

在这里,我不想创建两个列表。
我想创建一个列表。
我该如何实现?

1 个答案:

答案 0 :(得分:1)

似乎整个功能都可以做到

List<WpPostmeta> lstRecord = new ArrayList<WpPostmeta>();

WpPostmeta wpPostmeta = new WpPostmeta();
wpPostmeta.setPostId(wpPosts.getId());
wpPostmeta.setMetaKey("_sku");
wpPostmeta.setMetaValue("");
lstRecord.add(wpPostmeta);


WpPostmeta wpPostmeta1 = new WpPostmeta();
wpPostmeta1.setPostId(wpPosts.getId());
wpPostmeta1.setMetaKey("_regular_price");
wpPostmeta1.setMetaValue(reqularPrice[0]);
lstRecord.add(wpPostmeta1);


saveAll(lstRecord);


public Boolean saveAll(List<WpPostmeta> lstData){
    wpPostmetaRepository.saveAll(lstData);
    return true;
}

除非您有特殊的原因要使用变量并复制这些元素。