11.21.06
Validation des XPath
L’utilisateur est amené à entrer plusieurs expressions XPath lors de l’édition de son formulaire, que ce soit pour le nodeset ou pour les champs “required”, “relevant”, “readonly” et “constraint”. Afin d’avoir au final un formulaire avec le moins d’aberrations possibles, il est bien de pouvoir contrôler lors de l’édition si l’expression XPath entrée est valide ou non. Il existe en javascript une méthode qui permet d’évaluer une telle expression et une exception est levée dans le cas où l’expression présente une erreur.
A chaque fois que l’utilisateur renseigne un de ces champs, une méthode est donc tout d’abord appelée afin de vérifier l’expression et dans le cas où elle est correcte, l’expression est insérée dans le bon attribut de l’objet courant.
Au départ j’ai offert cet outil de manière automatique et transparente aux yeux de l’utilisateur mais finalement je me suis rendu compte d’un problème. La norme XForms propose des fonctions (très pratiques) utilisables dans des expressions XPath et il est bien clair que lors de la validation de l’expression, la méthode javascript va considérer l’expression comme invalide car elle contient une fonction que la norme XPath de définit pas! Pour remédier à ce problème, j’ai à présent ajouté sur l’interface une checkbox qui permet d’activer/désactiver la validation XPath. Typiquement lorsque l’utilisateur saura qu’il va entrer une expression qui fait appel à une fonction spécifique à la norme XForms, il faudra alors qu’il veille à ce que la fonction de validation soit désactivée afin que son expression soit prise correctement en compte. Cette façon de faire est certes moins souple car elle nécessite une action de l’utilisateur mais ce choix permet tout de même de conserver cet outil de validation qui peut s’avérer être fort pratique dans certains cas.
J’ai encore quelques problèmes avec les expressions XPath. J’ai lu qu’il fallait éviter d’utliser les signes ‘<’ et ‘>’ et d’opter plutôt pour ‘>’ et ‘<’. Cependant lorsque un des champs d’un composant contient un de ces deux derniers, le formulaire n’est pas créé correctement sur le serveur. En effet, l’écriture du fichier se termine prématurément lorsque le caractère ‘&’ est rencontré…je me demande si ce problème vient du script PHP ou alors à quel niveau ça coince.