我正在学习一些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
的简单排序有什么不同?
答案 0 :(得分:2)
表达式:
select="RCODE[1]"
表示选择第一个RCODE
孩子。
如果Data
元素有多个RCODE
子元素,并且您尝试同时按所有子元素进行排序,则会出现错误(在XSLT 2.0中),因为一个以上的序列一项不被允许作为@select
的{{1}}属性 - 请参阅:https://www.w3.org/TR/xslt20/#err-XTTE1020