Home
Über mich
Blog
Veröffentlichungen
IT-Trainings
Impressum


XPath: subsequence

Zusammenfassung:

Die "subsequence"-Funktion kann aus einer Sequenz einzelne Teile filtern, die sich über die Position und die Anzahl der Items definiert.

XPath: subsequence

Die Position eines Items läßt sich (sofern nicht bekannt) über die "index-of"-Funktion ermitteln. Zur Verdeutlichung deklarieren wir uns eine Variable "vseq", die auch bei der "index-of"-Funktion verwendet wurde.

<xsl:variable name="vseq" select="//Mensch[contains(name, 'e')]" as="item()*"/>

Zur Demonstration wird die Sequenz selber ausgegeben; hilfsweise wird hierfür ein separates Template "out" verwendet (siehe unten), dem die Sequenz $vseq als Parameter "pseq" übergeben wird (in beiden Fällen handelt es sich um eine Itemliste, die grundsätzlich auch leer sein kann: item()*).

<xsl:call-template name="out">
    <xsl:with-param name="pseq" select="$vseq"/>
</xsl:call-template>
Resultat:
      <m nr="1">Herzlos</m>
      <m nr="2">Wertlos</m>
      <m nr="3">Ruhelos</m>
      <m nr="4">Rielos</m>
      <m nr="5">Bodenlos</m>
      <m nr="6">Muehelos</m>
      <m nr="7">Leinenlos</m>

Starten wir nun mit der "subsequence" ab der 3. Position, so beginnt die Ausgabe bei "Ruhelos".

<xsl:call-template name="out">
    <xsl:with-param name="pseq" select="subsequence($vseq, 3)"/>
</xsl:call-template>  
Resultat:
      <m nr="1">Ruhelos</m>
      <m nr="2">Rielos</m>
      <m nr="3">Bodenlos</m>
      <m nr="4">Muehelos</m>
      <m nr="5">Leinenlos</m>
Dasselbe Ergebnis erhalten wir durch Verwendung von "index-of":
<xsl:call-template name="out">
    <xsl:with-param name="pseq" 
      select="subsequence($vseq, index-of($vseq/name, 'Ruhelos'))"/>
</xsl:call-template>

"subsequence" hat optional drei Parameter: der erste ist die ursprüngliche Sequenz, der zweite Parameter stellt den Beginnindex dar (muß also eine Zahl sein!), der dritte Parameter definiert die Anzahl der Items.

<xsl:call-template name="out">
    <xsl:with-param name="pseq" select="subsequence($vseq, 2, 3)"/>
</xsl:call-template>
Resultat:
      <m nr="1">Wertlos</m>
      <m nr="2">Ruhelos</m>
      <m nr="3">Rielos</m>
<xsl:template name="out">
    <xsl:param name="pseq" as="item()*"/>
    <xsl:for-each select="$pseq">
      <m>
        <xsl:value-of select="name"/>
      </m>
    </xsl:for-each>
</xsl:template>

qrpic/subsequence.jpg

wg / 3. Oktober 2017




Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf (info10@wilfried-grupe.de).



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: info10@wilfried-grupe.de