XPath 3.0, XPath 2.0, XPath 1.0 / XPath Funktionen / XPath: Sequence-Funktionen

XPath: Sequence-Funktionen

XPath: Sequence-Funktionen

➪ In XPath 2.0 kommen (gegenüber XPath 1.0) die mächtigen Sequenzen hinzu, auf denen wiederum zahlreiche Funktionen in XPath 2.0 und XPath 3.0 beruhen.

Es ist interessant, sich mit den Alternativen zu befassen, die XPath 2.0, XSL 2.0 (und ihre verwandte Technik XQuery) gegenüber XPath 1.0 und XSLT 1.0 zu bieten haben. Diese Alternativen führen uns in den interessanten Themenkomplex von Sequence Constructor und Filter Expressions, mit deren Hilfe etliche Praxisprobleme leichter lösbar werden. Die folgenden Beispiele sollen das verdeutlichen, auch wenn sich die Aufgabenstellungen mit anderen Ansätzen möglicherweise einfacher lösen lassen.


 <xsl:template name="sequencedemo">
  <Ergebnis>
  <xsl:for-each select="1 to 5, 
                       (20 to 200)[. mod 19 = 0], 
                       'Meier', 
                       'Schulze', 
                       'Bauer', 
                       //vorname, 
                       current-dateTime(), 
                       current-date() ">
   <item>
   <xsl:attribute name="castable">
   <xsl:choose>    
    <xsl:when test=". castable as xs:date">
         date
    </xsl:when>
    <xsl:when test=". castable as xs:dateTime">
         dateTime
    </xsl:when>
    <xsl:when test=". castable as xs:integer">
         integer
    </xsl:when>
    <xsl:when test=". castable as xs:string">
         string
    </xsl:when>
   </xsl:choose>
   </xsl:attribute>
   <xsl:value-of select="."/>
   </item>
  </xsl:for-each>
  </Ergebnis>
 </xsl:template>

Das Ergebnis dieser Logik lautet dann:


<Ergebnis>
  <item castable="integer">1</item>
  <item castable="integer">2</item>
  <item castable="integer">3</item>
  <item castable="integer">4</item>
  <item castable="integer">5</item>
  <item castable="integer">38</item>
  <item castable="integer">57</item>
  <item castable="integer">76</item>
  <item castable="integer">95</item>
  <item castable="integer">114</item>
  <item castable="integer">133</item>
  <item castable="integer">152</item>
  <item castable="integer">171</item>
  <item castable="integer">190</item>
  <item castable="string">Meier</item>
  <item castable="string">Schulze</item>
  <item castable="string">Bauer</item>
  <item castable="string">Hugo</item>
  <item castable="string">Nicole</item>
  <item castable="string">Stefan</item>
  <item castable="string">Stefan</item>
  <item castable="string">Siggi</item>
  <item castable="string">Heini</item>
  <item castable="string">Rudi</item>
  <item castable="string">Karl</item>
  <item castable="string">Simone</item>
  <item castable="string">Horst</item>
  <item castable="string">Werner</item>
  <item castable="string">Ludwig</item>
  <item castable="string">Willi</item>
  <item castable="string">Rita</item>
  <item castable="string">Susi</item>
  <item castable="string">Lotte</item>
  <item castable="string">Betty</item>
  <item castable="string">Martin</item>
  <item castable="string">Liane</item>
  <item castable="date">2017-09-24T16:51:16.3+02:00</item>
  <item castable="date">2017-09-24+02:00</item>
</Ergebnis>

wg / 23. Februar 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/sequence.html