fn:boolean

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

   

Kategorie: Typkonvertierung

Herkunft: XPath 1.0

Rückgabewert: Ein Boolescher Wert – true oder false

Aufruf/Argumente:

fn:boolean($eingabewert)

$eingabewert:
Obligatorisch. Das Argument darf einen beliebigen Datentyp besitzen. Sein Wert wird in dessen effektiven Booleschen Wert umgewandelt. Zwar muss ein Argument übergeben werden, jedoch darf dies auch die leere Sequenz sein.

Verwendungszweck:

Die Umwandlung eines Wertes in einen Booleschen Wert erfolgt in XPath kontextabhängig und in der Regel automatisch. In bestimmten Fällen mag es allerdings sinnvoll sein, eine Umwandlung durch die Funktion fn:boolean() zu forcieren, die für diesen Zweck zur Verfügung steht.

Die Umwandlung des Eingabewertes verläuft wie folgt:

  • Sequenz
    Eine leere Sequenz wird als false bewertet; alle nicht-leeren Sequenzen, deren erstes Item ein Knoten ist, gelten als true.

Sonderfälle sind Singleton-Sequenzen (entsprechend einzelnen atomaren Wer­ten), wenn diese folgende Werte annehmen:

  • Zahl (Sammeltyp numeric)
    Die Zahl 0 (auch +0 und -0) wird in den Booleschen Wert false umgewandelt; alle anderen Zahlenwerte ergeben true.
  • NaN 
    Der Wert NaN wird als false interpretiert.
  • Zeichenkette (Datentyp xs:string oder von xs:string abgeleitet)
    Ein String der Länge null, also ein »leerer« String wird zu false; alle anderen Strings zu true.
  • URI (Datentyp xs:anyURI oder von xs:anyURI abgeleitet)
    Gibt, analog zum Verfahren für Zeichenketten xs:string den Wert false zurück, wenn der URI-String die Länge null besitzt, ansonsten true.
  • Nicht typisierter atomarer Typ (xs:untypedAtomic)
    Gibt, analog zum Verfahren für Zeichenketten xs:string den Wert false zurück, wenn der Wert die Länge null besitzt, ansonsten true.
  • Boolescher Wert (Datentyp xs:boolean oder von xs:boolean abgeleitet)
    Bleibt jeweils unverändert.

Alle anderen Eingangsargumente erzeugen den Typfehler Invalid argument type (err:FORG0006).

Im Kontext von XPath 1.0 verhält sich die dortige Funktion boolean() gegenüber Nodesets vergleichbar zu fn:boolean() gegenüber Sequenzen:

  • Nodeset (XPath 1.0)
    Ein leerer Nodeset wird von der Funktion boolean() mit false bewertet. Jeder nicht leere Nodeset dagegen wird zu true.
  • Result Tree Fragment (nur in XSLT 1.0)
    Ein Result Tree Fragment wird bei der Bewertung durch boolean() zunächst in seinen Stringwert verwandelt und dieser wird dann in einen Booleschen Wert konvertiert. Das Ergebnis ist true, wenn im Result Tree Fragment Textnodes vorhanden sind, die nicht ausschließlich aus Whitespace bestehen, ansonsten false.

Beispiele:

Beispiel 1 – Prüfung auf Vorhandensein eines Attributs:

<xsl:template match="produkt">
  <p>Seriennummer vorhanden: <xsl:text> </xsl:text><xsl:value-of select="fn:boolean(@seriennummer)"/></p>
</xsl:template>

Das Beispiel gibt, je nachdem ob ein seriennummer-Attribut (das ja einen Knoten darstellt) vorhanden ist, den String »true« oder »false« aus.

Beispiel 2 – Prüfung auf alternative Kindelemente:

<xsl:if test="fn:boolean(bestellnummer) != fn:boolean(produktnummer)">
  <p>Bestell-Nr. mit Produkt-Nr. oder keines von beiden!</p>
</xsl:if>

Das Beispiel gibt eine Nachricht ins Ergebnisdokument aus, falls der Current Node ein Kindelement <bestellnummer>, aber kein <produktnummer>-Ele­ment besitzt oder umgekehrt. In diesem Fall ist die explizite Umwandlung in Boolesche Werte erforderlich, da sonst ein Vergleich zweier Node-Sequenzen vorgenommen würde – was hier nicht beabsichtigt ist.

Funktionsdefinition:

XPath 1.0:

boolean(wert)=> boolean

XPath 2.0:

fn:boolean($arg as item()*) as xs:boolean

   

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Galileo Press, Rheinwerkallee 4, 53227 Bonn