XML | XML-Schema | XPath | XSL-T | XSL-FO | XQuery | XProc | SVG |
XPath / XPath-Funktionen / XPath: Sequenz-Funktionen / XPath: zero-or-one
![]() |
![]() |
➪ Die zero-or-one-Funktion stellt sicher, dass eine Sequenz maximal ein Item haben darf; die Sequenz kann auch leer sein.
Der folgende Aufruf würde den Wert "Hugo" ergeben.
/Orte/Ort[1]/Mensch[1]/vorname/text() => zero-or-one()
Alternative in XSLT:
<xsl:value-of
select="zero-or-one(
/Orte/Ort[1]/Mensch[1]/vorname/text()
)"/>
Der Aufruf zero-or-one(//Mensch/hobby/text()) gibt eine leere Sequenz zurück, was mit zero-or-one zulässig ist und zu keinem Fehler führt.
<xsl:for-each
select="zero-or-one(//Mensch/hobby/text())">
<wert><xsl:value-of select="."/></wert>
</xsl:for-each>
Dagegen würde der folgende Aufruf sich auf eine Sequenz mit mehreren Items beziehen und eine Fehlermeldung generieren.
//Mensch/vorname => zero-or-one()
bzw. in XSLT:
<xsl:value-of
select="zero-or-one(
/Orte/Ort[1]/Mensch/vorname/text())"/>
Oder auch
<xsl:for-each
select="zero-or-one(//Mensch/vorname/text())">
<wert><xsl:value-of select="."/></wert>
</xsl:for-each>
Die Fehlermeldung ist vielsagend: "A sequence of more than one item is not allowed ..."
Fehlerlevel: fatal
FORG0003: A sequence of more than one item
is not allowed as the first argument of zero-or-one()
(text("Hugo"), text("Helmut"), ...)
wg / 4. April 2020
Fragen? Anmerkungen? Tipps?
Bitte nehmen Sie Kontakt zu mir auf.
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de