ms:string-compare-Funktion
Führt Zeichenfolgenvergleiche aus. Diese Funktion ist erforderlich, da zwei Zeichenfolgen mithilfe von XPath nicht lexikografisch verglichen werden können.
number ms:string-compare(string x, string y, [,string language _
[,string options]])
Parameter
- Zeichenfolge x
Zeichenfolgenwert für Vergleich. Werte, die keine Zeichenfolgen darstellen, werden vor dem Vergleich in einen Zeichenfolgenwert konvertiert.
- Zeichenfolge y
Zeichenfolgenwert für Vergleich. Werte, die keine Zeichenfolgen darstellen, werden vor dem Vergleich in einen Zeichenfolgenwert konvertiert.
- Zeichenfolgensprache [optional]
Definiert die Sprache zur Bestimmung der Sortierreihenfolge. Dies ist vergleichbar mit der Funktionsweise des<xsl:sort> lang
-Attributs (z. B."en-US"
oder"fr-CA"
). Wenn dieser Parameter ausgelassen wird oder eine leere Zeichenfolge darstellt, wird die Sprache von der Systemumgebung definiert (Sprache des aktuellen Threads).
Zeichfolgenoptionen [optional]
Standardmäßig wird beim Vergleich die Groß- und Kleinschreibung berücksichtigt. Dabei hat die Kleinschreibung Priorität vor der Großschreibung.Option Beschreibung u
Führt einen Vergleich unter Berücksichtigung der Groß- und Kleinschreibung aus. Dabei hat die Großschreibung Priorität vor der Kleinschreibung.
i
Führt den Vergleich aus, ohne dabei übliche Zeichenunterschiede zu berücksichtigen (z. B. Groß-/Kleinschreibung, Kana und Zeichenbreite). (Die Zeichenbreite ist nur für bestimmte Sprachen relevant.)
Rückgabewerte
Gibt einen der folgenden drei numerischen Werte zurück.
Wenn | Die Beispielfunktion gibt Folgendes zurück |
---|---|
x < y |
-1 |
x = y |
0 |
x > y |
1 |
Hinweise
Vergleiche zwischen Zeichenfolgen erfolgen in lexikografischer Reihenfolge (gemäß Wörterbuch). Die Angabe einer nicht unterstützten Sprache oder Option führt zu einem Laufzeitfehler. Für MSXML-Komponenten wird E_FAIL zurückgegeben.
Beispiel
Im folgenden Codebeispiel wird der Vergleich von zwei Zeichenfolgen mithilfe der ms:string-compare
-Funktion dargestellt. In dem Beispiel werden drei Zeichenfolgen, die Zahlen ("1", "2" und "3") enthalten, mit "2" verglichen. Die Ergebnisse der Vergleiche sind in der nach dem Code folgenden Tabelle dargestellt.
XML-Datei
<?xml version="1.0"?>
<string-sample>
<string>1</string>
<string>2</string>
<string>3</string>
</string-sample>
XSLT-Datei (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>
Bei den Vergleichen traten folgende Ergebnisse auf:
x, y | Ergebnis |
---|---|
"1" , "2" |
-1 |
"2" , "2" |
0 |
"3" , "2" |
1 |