(aktualisiert!)

IT-Trainings in Zeiten des Corona-Virus, Veranstaltungstipps der www.gfu.net:
Schulung XML Einfuehrung und Grundlagen *** Schulung Python fuer Programmiereinsteiger *** Schulung XML, XSLT, XPath, XSL-FO Einfuehrung *** Schulung Java/JSP/HTML/JDBC/XML Komplett *** Schulung XML mit Altova XMLSpy *** Schulung XML Grundlagen, XSL-FO, SVG, DocBook, DITA *** Schulung XML - der professionelle Ueberblick *** Schulung XML-Schema Intensiv *** Schulung Einstieg in die Programmierung *** Schulung C++ fuer Programmiereinsteiger *** Schulung VB.NET fuer Visual Basic-Programmierer ***


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

XPath: exactly-one

XPath: exactly-one

➪ Die exactly-one-Funktion erzwingt, dass eine Sequenz genau ein einziges Item aufweist. Ist das nicht der Fall (die Sequenz ist leer oder hat mehrere Items), wird eine Fehlermeldung generiert.

Auf dieser Seite:

XPath 3.0 - Beispiel:


/Orte/Ort[1]/Mensch[1]/name => exactly-one()

Arbeiten mit XSLT


<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()), der eine leere Sequenz 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 Sie 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()), der eine Sequenz 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 Sie 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 / 4. 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/exactlyone.html