2011-04-07 96 views
1

可能重複:
Ignoring 'A' and 'The' when sorting with XSLT排序按首字母

我的地點清單,但一些論文地方有「的」前面的詞。我需要通過丟棄'the'來按字母順序排序這些地方。如山,應該只是山。我可以通過使用子字符串去掉'the'這個詞來顯示這個名字,但是這個排序似乎不能讀取這個。

我有這個到目前爲止。什麼回來

<xsl:sort data-type="text" order="ascending" select="@places" /> 

例如:

阿爾法
西格瑪
公測

想它帶回來:

阿爾法
測試
西格瑪

這只是我如何去除它起名字的例子:

<xsl:choose> 
     <xsl:when test="substring((@places), 0, 4) = 'The'"> 
      <xsl:value-of select="substring(
            (@places), 
            4, 
            string-length(@places) 
           )" /> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:value-of select="@places" /> 
     </xsl:otherwise> 
</xsl:choose> 

回答

1

用途:

<xsl:sort select="substring(@places, 5 * starts-with(@places,'the ')" /> 

注意:您也可以使用translate()功能不區分大小寫。

+0

感謝您的快速回復,但它似乎並沒有工作....我試過它仍然保持相同的順序,就好像'The'仍然在那裏.translate將從名稱的其餘部分刪除所有的t,h和e 。道歉...即時通訊不是最好的在這 – Hatzi 2011-04-08 09:17:44

+0

我似乎已經得到它使用...感謝你的幫助 – Hatzi 2011-04-08 09:44:40

+0

@Hatzi:這個'substring(@places,5)* starts-with(@places,'The')'**不是我寫的**。 'substring-after()'解決方案並不完全正確:子字符串可能在任何地方,而不是在第一個位置。 – 2011-04-08 12:36:26