文字列の比較を実行します。XPath を使用する場合は 2 つの文字列を辞書順で比較できないため、この関数を使う必要があります。
number ms:string-compare(string x, string y, [,string language _
[,string options]])
パラメータ
- string x
比較のための文字列値です。比較の前に、非文字列値は文字列値に変換されます。
- string y
比較のための文字列値です。比較の前に、非文字列値は文字列値に変換されます。
- string language[オプション]
並べ替え順序を決定する言語を定義します。これは、<xsl:sort> lang
属性 ("en-US"
や"fr-CA"
など) に似ています。このパラメータが省略されているか、空の文字列である場合、言語はシステム環境 (現在のスレッドの言語) によって決まります。
string options[オプション]
既定では、比較で大文字と小文字が区別され、小文字の順位が上になります。オプション description u
大文字と小文字を区別する比較を行い、大文字の順位を上にします。
i
大文字小文字、カタカナ、文字幅など、文字間に存在するすべての伝統的な違いを区別しない比較を行います (文字の幅は一部の言語にのみ当てはまります)。
戻り値
次の 3 つの数値のいずれかを返します。
If | 関数から返される値の例 |
---|---|
x < y |
-1 |
x = y |
0 |
x > y |
1 |
解説
文字列の比較は辞書順で行われます。サポートされていない言語またはオプションを指定すると、ランタイム エラーが発生します。MSXML コンポーネントの場合は、E_FAIL が返されます。
例
ms:string-compare
関数を使用して 2 つの文字列を比較する方法を次のコード サンプルに示します。このサンプルでは、数値を表す 3 つの文字列 ("1"、"2"、"3") と "2" を比較します。比較の結果をコードの後の表に示します。
XML ファイル
<?xml version="1.0"?>
<string-sample>
<string>1</string>
<string>2</string>
<string>3</string>
</string-sample>
XSLT ファイル (translate.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ms="urn:schemas-microsoft-com:xslt">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="/string-sample">
<xsl:for-each select="string">
<xsl:value-of select="ms:string-compare(., '2', 'en-US', 'i')"/>,
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
比較の結果は次のとおりです。
x, y | 結果 |
---|---|
"1" , "2" |
-1 |
"2" , "2" |
0 |
"3" , "2" |
1 |