2017-08-09 36 views
0

爲了理解它並使用Python重寫(應用於等效的SQL數據存儲),我正在探討一些XSLT代碼(應用於XML數據)。正如你可以想象的那樣,儘管仍然花費大量時間查找語法,但我試圖通過對XSLT的理解儘可能少地理解它。這是我無法弄清楚自己,TIA。[1]在XSLT排序中的含義是什麼?

的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排序有何區別?

回答

2

表達:

select="RCODE[1]" 

裝置選擇第一RCODE孩子。

如果Data元素有一個以上的RCODE兒童,並嘗試通過所有的人一下子進行排序,你會得到一個錯誤(XSLT 2.0),因爲多個項目的順序是不允許的的xsl:sort@select屬性 - 請參閱:https://www.w3.org/TR/xslt20/#err-XTTE1020

+0

啊,我看到了那種描述的參考,但我不明白它,因爲它沒有談到有多個孩子,因爲我的XML數據是站立在一個數據庫表,我從來沒有在一個分支上有多個'RCODE'值。恰好解釋道。 –

相關問題