Home
Über mich
Veröffentlichungen

XML XML-Schema XPath XSL-T XSL-FO XQuery XProc SVG

XPath / XPath-Funktionen / XPath: Sequenz-Funktionen / XPath: exists

XPath: exists

XPath: exists

exists überprüft, ob eine Sequenz NICHT leer ist, und gibt einen Booleanwert zurück.

Auf dieser Seite:

Generieren Sie sich eine Sequenz, von der Sie wissen, dass sie nicht leer ist (Liste aller Mensch-Nodes im XML-Input mit einem Gehalt < 500), und prüfen dies im Rahmen einer Fallunterscheidung.


<xsl:variable name="vseq2" 
     as="item()*" 
     select="//Mensch[Gehalt &lt; 500]"/>
<xsl:choose>
    <xsl:when test="exists($vseq2)">
        <xsl:for-each select="$vseq2">
            <m nr="{position()}" Gehalt="{Gehalt}">
                <xsl:value-of select="name"/>
            </m>
        </xsl:for-each>
    </xsl:when>
    <xsl:otherwise>Die Sequenz ist leer</xsl:otherwise>
</xsl:choose>

Resultat:


<m nr="1" Gehalt="234.56">Holzflos</m>
<m nr="2" Gehalt="321.45">Sagblos</m>
<m nr="3" Gehalt="333.33">Rhodos</m>
<m nr="4" Gehalt="456">Kolos</m>
<m nr="5" Gehalt="357">Lustlos</m>
<m nr="6" Gehalt="234">Ruhelos</m>
<m nr="7" Gehalt="321">Schlaflos</m>
<m nr="8" Gehalt="456">Rielos</m>
<m nr="9" Gehalt="222">Muehelos</m>
<m nr="10" Gehalt="135">Leinenlos</m>

Vgl. die empty-Funktion.

Alternative mit XPath 3.0 / XQuery

... via for-each, function, => und if/then/else


function($sequence){
  if($sequence => exists())
  then (
    $sequence 
    => for-each(
      function ($w){
        element {'m'}{
          attribute {'nr'}{
            count( $w/preceding::Mensch[Gehalt < 500]) + 1
          },
          attribute {'Gehalt'}{$w/Gehalt/text()},
          $w/name/text()
        }
      }
    )
  )
  else ('Die Sequenz ist leer')
}(//Mensch[Gehalt < 500])

wg / 3. April 2020



Fragen? Anmerkungen? Tipps?

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