XPath 3.0, XPath 2.0, XPath 1.0 / XPath-Funktionen / XPath: Sequenz-Funktionen / head, tail, snapshot

head, tail, snapshot

head, tail, snapshot

➪ Weitere XPath-Funktionen bieten zusätzliche Möglichkeiten, Sequenzen auszuwerten.

Auf dieser Seite:

Wie mehrfach besprochen, gibt es eine ganze Reihe von Möglichkeiten, eine xsl:sequence von Items zu generieren.

Siehe auch:

Nehmen Sie als Beispiel die Sequenz aller normalen Zahlen von 1 bis zu einem vorgegebenen variablen Wert. Einen Ansatz finden Sie in der , die bekanntlich einen Namespace-Präfix und damit einen Namespace erhalten muss.


 <xsl:function 
      name="ns5:generateSequenz" as="item()*">
  <xsl:param name="p" as="xs:integer"/>
  <xsl:sequence>
   <xsl:for-each select="1 to abs($p)">
    <xsl:value-of select="."/>
   </xsl:for-each>
  </xsl:sequence>
 </xsl:function>

Eine Alternative besteht darin, eine als zu definieren.


<xsl:variable 
     name="vZahlensequenz" 
     select="function($p as xs:integer) 
             as item()*
             {for $x in 1 to abs($p) return $x}"/>

head

Die head-Funktion gibt das erste Item in einer Sequenz zurück.


<ergebnis>
  <xsl:for-each 
       select="head($vZahlensequenz(-5))">
   <wert>
     <xsl:value-of select="."/>
   </wert>
  </xsl:for-each>
</ergebnis>

Damit liefert die head-Funktion dasselbe Ergebnis wie


<ergebnis>
  <wert>
    <xsl:value-of select="$vZahlensequenz(-5)[1]"/>
  </wert>
</ergebnis>

... und dieses Ergebnis sieht ist:


<ergebnis>
  <wert>1</wert>
</ergebnis>

tail

Die tail-Funktion gibt alle Items einer Sequenz zurück, ausgenommen das erste.


<ergebnis>
  <xsl:for-each 
       select="tail($vZahlensequenz(-5))">
    <wert>
      <xsl:value-of select="."/>
    </wert>
  </xsl:for-each>
</ergebnis>

Damit liefert die tail-Funktion dasselbe Ergebnis wie


<xsl:for-each 
     select="$vZahlensequenz(-5)[position() &gt; 1]">
    <wert>
      <xsl:value-of select="."/>
    </wert>
</xsl:for-each>

... und dieses Ergebnis lautet:


<ergebnis>
  <wert>2</wert>
  <wert>3</wert>
  <wert>4</wert>
  <wert>5</wert>
</ergebnis>

snapshot

Die snapshot-Funktion generiert eine tiefe Kopie einer Sequenz, mit allen Elementen und Attributen. Vergleiche auch und .


<ergebnis>
 <xsl:for-each 
      select="snapshot($vZahlensequenz(-5))">
  <wert>
   <xsl:value-of select="."/>
  </wert>
 </xsl:for-each>
</ergebnis>

Das Ergebnis lautet folgerichtig:


<ergebnis>
  <wert>1</wert>
  <wert>2</wert>
  <wert>3</wert>
  <wert>4</wert>
  <wert>5</wert>
</ergebnis>

wg / 5. April 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf.






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/XPath_head_tail.html