Altova XMLSpy 2025 Enterprise Edition

Expressions XPath 1.0

 

Les fonctions XPath 1.0 doivent être saisies sans préfixe d'espace de noms.

Les quatre tests de nœud par type sont pris en charge : node(), text(), comment(), et processing-instruction().

 

Expressions XPath 2.0 et 3.1

 

Les strings (par ex. 'Bonjour') et les littéraux numériques (par ex. 256) sont pris en charge. Pour créer d'autres littéraux sur la base des types de Schéma XML, vous utilisez un constructeur à préfixe d'espace de noms (par ex. xs:date('2004-09-02')). Le préfixe d'espace de noms que vous utilisez pour les types de Schéma XML doivent être liés à l'espace de noms de Schéma XML : http://www.w3.org/2001/XMLSchema, et cet espace de noms doit être déclaré dans votre fichier XML.

Les fonctions XPath 2.0 et 3.1 utilisées par l'Évaluateur XPath font partie de l'espace de noms http://www.w3.org/2005/xpath-functions. Par convention, le préfixe fn: est lié à cet espace de noms. Néanmoins, puisque cet espace de noms est l'espace de noms de fonction par défaut utilisé par l'Évaluateur XPath, il est inutile de spécifier un préfixe des fonctions. Si vous utilisez un préfixe, assurez-vous que le préfixe soit lié à l'espace de nom des Fonctions XPath, que vous devez déclarer dans le document. Exemples d'utilisation de la fonction : current-date() (dont l'espace de noms des fonctions n'est pas déclaré dans le document XML) ; fn:current-date() (dont l'espace de noms des fonctions n'est pas déclaré dans le document XML, ou bien est déclaré dans le document XML et lié au préfixe fn:). Vous pouvez omettre le préfixe d'espace de noms même si l'espace de noms des Fonctions a été déclaré dans le document XML avec ou sans préfixe ; cela est dû au fait qu'une fonction utilisée de cette manière dans une expression XPath se trouve dans l'espace de noms par défaut — qui est l'espace de noms par défaut pour les fonctions.

Les extensions XPath d'Altova se trouvent dans l'espace de noms http://www.altova.com/xslt-extensions.

 

Note :pour résumer la question de l’espace de noms : Si vous utilisez des constructeurs ou des types depuis l’espace de noms XML Schéma, vous devez déclarez l’espace de nom XML Schéma dans le document XML et utilisez les préfixes d’espace de noms corrects dans l’expression XPath. Vous n'avez pas besoin d'utiliser un préfixe pour les fonctions XPath.

 

Types de données dans XPath 2.0 et 3.1

Si vous évaluez une expression XPath 2.0 ou 3.1 pour un document XML qui référence un Schéma XML et est valide conformément à ce schéma, vous devez construire ou utiliser explicitement des types de données qui ne sont pas convertis implicitement au type de données requis par une opération. Dans les Modèles de données XPath 2.0 et 3.1 utilisés par le moteur intégré XPath, toutes les valeurs de nœud atomisées provenant du document XML sont attribués au type de données xs:untypedAtomic. Le type xs:untypedAtomic fonctionne bien avec des conversions de type implicite. Par exemple, l'expression xs:untypedAtomic("1") + 1 résulte dans une valeur de 2 parce que la valeur xs:untypedAtomic est implicitement promue à xs:double par le biais de l'opérateur d'addition. Les opérateurs arithmétiques promeuvent implicitement des opérandes à xs:double. Les opérateurs de comparaison promeuvent des opérandes à xs:string avant de comparer.

 

Néanmoins, dans certains cas, il est nécessaire de convertir explicitement dans le type de données requis. Par exemple, si vous avez deux éléments, startDate et endDate, qui sont définis comme étant de type xs:date dans le Schéma XML, alors, par exemple, l'utilisation de l'expression XPath 2.0 endDate - startDate affichera une erreur. Mais si vous utilisez xs:date(endDate) - xs:date(startDate) ou (endDate cast as xs:date) - (startDate cast as xs:date), l'expression évaluera correctement à une séquence simple de type xs:dayTimeDuration.

 

Note :: les moteurs XPath utilisés par l’Évaluateur XPath sont aussi utilisés par le moteur Altova XSLT Engine, donc XPath 2.0 ou les expressions 3.1 dans les feuilles de style XSLT, qui ne sont pas implicitement converties dans le type de données requis, doivent être explicitement construites comme lues dans le type de données requis.

 

Longueur de string de caractère et références d'entité

Lorsque les références de caractère et d'entité sont utilisées en tant que le string d'entrée pour la fonction string-length(), les références ne peuvent pas être résolues et la longueur du string de texte non résolu est retournée. Dans le cadre d'un environnement XSLT, néanmoins, ces références auraient une signification et la longueur du string résolu est retournée.

 

Prise en charge des fonctions XPath 2.0 et 3.1

Voir les annexes.

 

© 2018-2024 Altova GmbH