[1]在XSLT排序中意味着什么?

时间:2017-08-09 22:33:12

标签: xml xslt

我正在学习一些XSLT代码(应用于XML数据)以便理解它并在Python中重写(应用于等效的SQL数据存储)。正如你可以想象的那样,我试图通过尽可能少地理解XSLT来完成它,尽管我仍然花费大量时间查找语法。这是我自己无法弄清楚的一个,TIA。

XSL脚本主要有以下几种:

<xsl:template match="dataroot" mode="prior_install">
    <xsl:for-each-group select="Data" group-by="SN">
        <xsl:variable name="sn_list" as="node()*">
            <xsl:perform-sort select="current-group()">
                <xsl:sort select="INIT_DT" data-type="text" order="ascending"/>
                <xsl:sort select="COPY" data-type="number" order="ascending"/>
                <xsl:sort select="RCODE[1]" data-type="text" order="descending"/>
            </xsl:perform-sort>
        </xsl:variable>
        <xsl:for-each select="$sn_list">
            (IRRELEVANT MATERIAL REMOVED)
        </xsl:for-each>
    </xsl:for-each-group>
</xsl:template>

[1]排序键中RCODE[1]的含义是什么?这与仅仅RCODE的简单排序有什么不同?

1 个答案:

答案 0 :(得分:2)

表达式:

select="RCODE[1]"

表示选择第一个RCODE孩子。

如果Data元素有多个RCODE子元素,并且您尝试同时按所有子元素进行排序,则会出现错误(在XSLT 2.0中),因为一个以上的序列一项不被允许作为@select的{​​{1}}属性 - 请参阅:https://www.w3.org/TR/xslt20/#err-XTTE1020