문자열을 비교합니다. XPath를 사용하여 두 문자열을 사전순으로 비교할 수 없기 때문에 이 함수가 필요합니다.
number ms:string-compare(string x, string y, [,string language _
[,string options]])
매개 변수
- string x
비교할 문자열 값입니다. 비교하기 전에 비문자열 값은 문자열 값으로 변환됩니다.
- string y
비교할 문자열 값입니다. 비교하기 전에 비문자열 값은 문자열 값으로 변환됩니다.
- string language[옵션]
정렬 순서를 결정하는 언어를 정의합니다. 이 매개 변수는"en-US"
,"fr-CA"
등의<xsl:sort> lang
특성과 유사합니다. 이 매개 변수를 생략한 경우 또는 매개 변수가 빈 문자열인 경우 시스템 환경에 의해 현재 스레드의 언어로 언어가 정의됩니다.
string options[옵션]
기본적으로 대/소문자를 구분하며 소문자를 먼저 비교합니다.옵션 설명 u
대/소문자를 구분하며 대문자를 먼저 비교합니다.
i
대/소문자, 가나, 너비 등 문자 간의 일반적인 모든 차이에 대해 대/소문자를 구분하지 않고 비교합니다. 문자 너비는 일부 언어에만 적용됩니다.
반환 값
다음 세 숫자 값 중 하나를 반환합니다.
x와 y의 관계 | 예제 함수가 반환하는 값 |
---|---|
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 |