XPath 3.0, XPath 2.0, XPath 1.0 / XPath Funktionen / Stringfunktionen / XPath: concat

XPath: concat

XPath: concat

Die XPath-Funktion "concat" verkettet mehrere Informationen zu einem String.

XPath: concat

Erwartet werden hierbei mindestens zwei einzelne String-Parameter.


<xsl:value-of 
  select="concat(//Ort[1]/Mensch[1]/name, ', ', //Ort[1]/Mensch[2]/name)"/>

Falsch wäre jedoch


<xsl:value-of 
  select="concat(//Mensch[1]/name, ', ', //Mensch[2]/name)"/>

da diese XPath-Statements jeweils mehrere Items ansprechen würden


Fehlerlevel: fatal
Beschreibung: XPTY0004: A sequence of more than one item is not 
allowed as the first argument of concat()
URL: http://www.w3.org/TR/xpath20/#ERRXPTY0004

In XSL 3.0 / XPath 3.0 stehen besondere Verknüpfungsoperatoren zur Verfügung, die den Aufruf von concat überflüssig machen. So ergibt


<xsl:value-of  select="'x' || 'y' || 'z'"/>

... dieses Ergebnis:


<ergebnis>xyz</ergebnis>

Eine Sequenz aus mehreren so verketteten Einzelwerten erhalten wir durch diesen Aufruf:


<xsl:value-of select="(1 to 3) ! ('x' || 'y' || 'z')"/>

Die Sequenz sieht dann so aus:


<ergebnis>xyz xyz xyz</ergebnis>

Natürlich kann jede Einzelsequenz separat betrachtet werden:


    <xsl:template match="/">
        <ergebnis>
            <xsl:for-each select="(1 to 3) ! ('x' || 'y' || 'z')">
                <einzelwert>
                    <xsl:value-of select="."/>
                </einzelwert>
            </xsl:for-each>
        </ergebnis>
    </xsl:template>

Hier sehen wir einen Unterschied zu :


<ergebnis>
   <einzelwert>xyz</einzelwert>
   <einzelwert>xyz</einzelwert>
   <einzelwert>xyz</einzelwert>
</ergebnis>

wg / 29. Dezember 2017



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

Mobil: 0151. 750 360 61 * eMail: info2018@wilfried-grupe.de

www.wilfried-grupe.de/concat.html