FindFirstPos-Altova

www.altova.com Agrandir/Réduire tout Imprimer cette rubrique Un niveau supérieur

Accueil > 

FindFirstPos-Altova

Click to expand/collapsefind-first-pos [altova:]

find-first-pos((Sequence as item()*)(Condition( Sequence-Item as xs:boolean)) as xs:integer     XP3.1 XQ3.1

Cette fonction prend deux arguments. Le premier argument est une séquence d'un ou de plusieurs items de tout type de données. Le second argument, Condition, est une référence à une fonction XPath qui prend un argument (a une arité de 1) et retourne une booléenne. Chaque item de Sequence est soumis à son tour à la fonction référencée dans Condition. (Rappel : cette fonction prend un seul argument.) Le premier item Sequence qui cause la fonction dans Condition à évaluer à true() voit sa position index dans Sequence retournée en tant que résultat de find-first-pos, et l'itération stoppe.

 

find-first-pos(5 to 10, function($a) {$a mod 2 = 0}) retourne xs:integer 2

L'argument Condition référence la fonction en ligne XPath 3.0, function(), qui déclare une fonction en ligne nommée $a et puis la définit. Chaque item dans l'argument de Sequence de find-first-pos est passé à son tour à $a en tant que sa valeur d'entrée. La valeur d'entrée est testée à la condition dans la définition de la fonction ($a mod 2 = 0). La position d'index dans la séquence de la première valeur d'entrée pour satisfaire à cette condition est retournée en tant que le résultat de find-first-pos (dans ce cas 2, puisque 6, la première valeur (dans la séquence) afin de satisfaire à la condition, est à la position d'index 2 dans la séquence).

 

find-first-pos((2 to 10), (function($a) {$a+3=7})) retourne xs:integer 3

 

 

Autres exemples

Si le fichier C:\Temp\Customers.xml existe :

find-first-pos( ("C:\Temp\Customers.xml", "http://www.altova.com/index.html"), (doc-available#1) ) retourne 1

 

Si le fichier C:\Temp\Customers.xml n'existe pas, et que http://www.altova.com/index.html existe :

find-first-pos( ("C:\Temp\Customers.xml", "http://www.altova.com/index.html"), (doc-available#1) ) retourne 2

 

Si le fichier C:\Temp\Customers.xml n'existe pas, et que http://www.altova.com/index.html n'existe pas non plus :

find-first-pos( ("C:\Temp\Customers.xml", "http://www.altova.com/index.html"), (doc-available#1) ) ne retourne aucun résultat

 

Notes à propos des exemples donnés ci-dessus

La fonction XPath 3.0, doc-available, prend un seul argument de chaîne qui est utilisé en tant qu'un URI, et retourne true si un nœud de document est trouvé à l'URI soumis. (Le document à l'URI soumis doit donc être un document XML.)
La fonction doc-available peut être utilisée pour Condition, le second argument de find-first-pos, parce qu'il ne prend qu'un seul argument (arité=1), parce qu'il prend un item() en tant qu'entrée (une chaîne qui est utilisée en tant qu'un URI), et retourne une valeur booléenne.
Veuillez noter que la fonction doc-available est uniquement référencée, elle n'est pas appelée. Le suffixe #1 qui y est attaché indique une fonction avec une arité de 1. dans sa totalité, doc-available#1 signifie simplement : Utiliser la fonction doc-availabe() qui a arité=1, y passant, en tant que son argument simple, chacun à son tour, chaque item dans la première séquence. En tant que résultat. chacune des deux chaînes sera passée à doc-available(), qui utilise la chaîne en tant qu'un URI et teste si un nœud de document existe à l'URI. Si c'est le cas, la fonction doc-available() évalue à true() et la position de l'index de cette chaîne dans la séquence est retournée en tant que le résultat de la fonction find-first-pos. Note à propos de la fonction doc-available() : les chemins relatifs sont résolus relativement à l'URI de base actuel, qui par défaut est l'URI du document XML à partir duquel la fonction est chargée.

 

 


© 2019 Altova GmbH