0

私は問題があります。いくつかの項目があり、次のような用語が含まれています。

<term>Emploee's earnings...</term>
<term>Emploee Withholdings...</term>
<term>...value of an...</term>
<term>...value of a...</term>

論理的には、「an」冠詞は「a」の後にある必要があります。また、「従業員」は「従業員」の後にある必要があります。問題は、xsl:sort? でそれを行う方法です。どうもありがとう!

4

2 に答える 2

0

真の自然言語によるソート、たとえば本のタイトルが最初の「The」または「A」を無視してソートされるレベルでは、ほとんどの XSLT エンジンの能力を超えていることがわかると思います。さらに言えば、最も汎用的な並べ替えユーティリティ。これは、アプリケーションに大きく依存するためです。たとえば、電話帳で "McMillan" と "Macmillan" がどのように並べ替えられているかを確認してください。

データを正規化する関数を記述できる場合 (たとえば、不要な先頭の定冠詞または不定冠詞を削除することによって)、XSLT 2.0 では、この関数を xsl:sort の select 属性で呼び出して、並べ替えの前にキーを正規化できます。

于 2013-06-10T09:13:41.600 に答える
0

あなたの問題が何であるかはよくわかりません。:apply-templates (または for-each) 内で xsl:sort を使用すると、必要に応じて並べ替える必要があります。

<xsl:apply-templates select="term" >
    <xsl:sort select="text()"/>
</xsl:apply-templates>

言語固有の処理を適応させるために、「lang」属性を追加できます。一部の文字を無視したい場合は、 を使用できますtranslate()
アポストロフィを無視する例 (ここでは必要ありません):

<xsl:apply-templates select="term" >
    <xsl:sort select='translate(text(),"&apos;", "")'/>
</xsl:apply-templates>
于 2013-06-10T08:22:21.523 に答える