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

XPath: exactly-one

XPath: exactly-one

➪ Die "exactly-one"-Funktion erzwingt, daß eine Sequence genau ein einziges Item aufweist.

Ist das nicht der Fall (die Sequence ist leer oder hat mehrere Items), wird eine Fehlermeldung generiert.

Problemlos ist daher der Aufruf "exactly-one(/Orte/Ort[1]/Mensch[1]/vorname/text())", er ergibt den Wert "Hugo".


<xsl:for-each 
     select="exactly-one(
            /Orte/Ort[1]/Mensch[1]/vorname/text())">
  <wert><xsl:value-of select="."/></wert>
</xsl:for-each>

Problematisch wird der Aufruf "exactly-one(//Mensch/hobby/text())", die eine leere Sequence generiert, was der Festlegung von "exactly-one" zuwider läuft und daher unzulässig ist.


<xsl:for-each 
     select="exactly-one(//Mensch/hobby/text())">
     <wert>
       <xsl:value-of select="."/>
     </wert>
</xsl:for-each>

Prompt erhalten wir auch einen netten Gruß vom System:


Fehlerlevel: fatal
FORG0005: An empty sequence is not allowed 
as the first argument of exactly-one()

Ebenso problematisch wird der Aufruf "exactly-one(//Mensch/vorname/text())", die eine Sequence mit mehreren Items generiert, was der Festlegung von "exactly-one" ebenfalls zuwider läuft und daher unzulässig ist.


<xsl:for-each 
     select="exactly-one(//Mensch/vorname/text())">
  <wert><xsl:value-of select="."/></wert>
</xsl:for-each>

Dann erhalten wir eine Fehlermeldung vom System:


Fehlerlevel: fatal
FORG0005: A sequence of more than one item 
   is not allowed as the first argument of exactly-one() 
   (text("Hugo"), text("Helmut"), ...)

wg / 8. 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/exactlyone.html