ms:string-compare 函数
执行字符串比较。 因为使用 XPath 无法对两个字符串按字典顺序进行比较,所以需要此函数。
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
使比较不区分字符之间所有传统差异,例如大小写、假名和宽度。 (字符宽度仅适用于某些语言。)
返回值
返回下列三个数值之一。
如果 |
示例函数返回 |
---|---|
x < y |
-1 |
x = y |
0 |
x > y |
1 |
备注
字符串之间按字典顺序进行比较。 指定不受支持的语言或选项会导致发生运行时错误。 对于 MSXML 组件,返回 E_FAIL。
示例
以下代码示例显示如何使用 ms:string-compare 函数比较两个字符串。 该示例将三个数字字符串(“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 |