OK, je l'ai jeté un oeil à ce sujet et je pense que vous serez en mesure d'exécuter votre requête en définissant votre fonction
declare function tns:isEmptyDate($dob as xs:date?) as xs:boolean
Notez la? après le type - cela signifie que l'argument peut être la séquence vide.
J'ai testé cela dans Oxygen, en utilisant Saxon-B ... désolé, je n'ai pas accès au logiciel que vous utilisez.
Voici ma définition de fonction.
declare function tns:isEmptyDate($dob as xs:date?) as xs:boolean {
let $empty := if (empty($dob))
then true()
else false()
return $empty
};
Courir contre ce fichier:
<?xml version="1.0" encoding="UTF-8"?>
<datetime>2002-09-24</datetime>
renvoie true, et en cours d'exécution contre ce fichier:
<?xml version="1.0" encoding="UTF-8"?>
<dontmatch>2002-09-24</dontmatch>
retourne false.
L'exécution de la même fonction sans questionmark, sur le second document, avec des erreurs:
Gravité: erreur. Description: Une séquence vide n'est pas autorisée en tant que premier argument de tns: isEmptyDate()