XPath 3.0, XPath 2.0, XPath 1.0 / XPath Funktionen / XPath: Sequence-Funktionen / XPath: Der Vergleich von leeren Sequences mit leeren Strings

XPath: Der Vergleich von leeren Sequences mit leeren Strings

XPath: Der Vergleich von leeren Sequences mit leeren Strings

➪ Der Vergleich von leeren Sequenzen mit leeren Elementen liefert immer false(). Um eine Vergleichbarkeit herzustellen, ist eine string-Konvertierung der Sequenz und des Elements hilfreich.

Ein bemerkenswertes Thema ist der Vergleich leerer Sequences mit leeren Strings, der in jedem Fall false() ergibt. Das heißt:

Um das zu demonstrieren, definieren wir uns zwei Variablen v1 und v2


<xsl:variable name="v1">
    <ROOT><wert1></wert1></ROOT>
</xsl:variable>
<xsl:variable name="v2">
    <WURZEL></WURZEL>
</xsl:variable>

Wird geprüft, ob $v1 und $v2 gleich sind, dann ist das ebenso false() wie die Prüfung, ob $v1 und $v2 NICHT gleich sind.

Will man die Prüfung aussagekräftig durchführen, so lohnt sich ein Casting der werte auf string:


<xsl:template match="/">
    <ergebnis>
        <xsl:choose>
            <xsl:when 
                test="string($v1/ROOT/wert1) 
                = string($v2/WURZEL/wert2)">
                OK
            </xsl:when>
            <xsl:otherwise>NOT OK</xsl:otherwise>    
        </xsl:choose>
    </ergebnis>
</xsl:template>

Hier lautet das Ergebnis "OK".

Eine Prüfung auf xs:string liefert dagegen "NOT OK" (vgl. ).


<xsl:template match="/">
    <ergebnis>
        <xsl:choose>
            <xsl:when 
                test="xs:string($v1/ROOT/wert1) 
                = xs:string($v2/WURZEL/wert2)">
                OK
            </xsl:when>
            <xsl:otherwise>NOT OK</xsl:otherwise>    
        </xsl:choose>
    </ergebnis>
</xsl:template>

Dasselbe "NOT OK" erhalten wir auch bei


<xsl:when 
    test="xs:string($v1/ROOT/wert1) 
    != xs:string($v2/WURZEL/wert2)">
    OK
</xsl:when>

Alternativ können wir es mit der - Funktion versuchen:


<xsl:choose>
  <xsl:when 
       test="deep-equal($v1, $v2)">OK</xsl:when>
  <xsl:otherwise>NOT OK</xsl:otherwise>
</xsl:choose>

wg / 16. März 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf:

Vorname
Nachname
Mailadresse







Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/vergleich_leere_Sequence_leerstring.html