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

请参见

参考

XML 架构 (XSD) 参考

XML 数据类型引用