Altova StyleVision 2025 Enterprise Edition

Une fonction XPath définie par l'utilisateur requiert : (i) un nom (un string de texte), et (ii) une définition (une expression XPath).

 

De plus, vous pouvez spécifier un ou plusieurs paramètres pour la fonction. Une fonction XPath définie par l’utilisateur peut aussi avoir un type de retour optionnel (spécifié en sélectionnant un type depuis la liste déroulante de la liste déroulante Return Type). Un type de retour est utile si vous souhaitez vérifier que ce type de données de la valeur retournée est conforme au type de données sélectionné. Notez que la valeur de retour n’est pas convertie en type de données sélectionné S’il y a un décalage de type, une erreur est renvoyée Si aucun type de retour n’est spécifié, aucune vérification de type de données n’est exécutée.

 

Une fois que la fonction XPath définie par l’utilisateur est créée, elle est disponible pour utilisation partout dans le design. Dans la feuille de style XSLT, elle est créée comme élément xsl:function qui est un enfant de l’élément xsl:stylesheet, tel qu’affiché dans la liste ci-dessous.

 

<xsl:stylesheet>

  ...

  <xsl:function name="sps:Stock">

 <xsl:sequence select="$XML/Trades/Stock[@name=$XML/Trades/Selection/Stock]"/>

  </xsl:function>

  <xsl:function name="sps:Average" as="xs:decimal">

 <xsl:param name="a" as="xs:integer"/>

 <xsl:param name="b" as="xs:integer"/>

 <xsl:param name="c" as="xs:integer"/>

 <xsl:sequence select="avg( ($a, $b, $c) )"/>

 </xsl:function>

</xsl:stylesheet>

 

La fonction sps:Stock affichée dans la capture d’écran ci-dessous et recensée ci-dessus renvoie l’élément /Trades/Stock qui a un attribut name avec la valeur qui correspond au contenu de l’élément /Trades/Selection/Stock. La fonction sps:Average recensée ci-dessus renvoie la moyenne des trois valeurs de paramètre d’entrée. La définition de fonction utilise la fonction avg() de XPath 2.0/3.0. Le type de données de renvoi est spécifié pour être le type xs:decimal, qui est le type de données renvoyé par la fonction avg() quand vous évaluez les valeurs d’entrée du type de données xs:integer. Si le type de renvoi est spécifié, alors le type de données de la valeur de renvoi est vérifié s’il est conforme au type spécifié. S’il ne l’est pas, alors une erreur est renvoyée.

 

XPFxDlg01

 

Définir la fonction

Pour définir une fonction, cliquez sur l’icône Plus de l’item des fonctions XPath dans l’arborescence de schéma ou l’arborescence de design. Ceci ouvre le dialogue des Fonctions XPath (capture d’écran ci-dessous). Si vous souhaitez éditer une fonction qui a déjà été créée, double-cliquez sur son entrée dans la liste des fonctions XPath. Puis, saisissez un nom pour la fonction et une définition dans le volet Corps de fonction. Les définitions de paramètre peuvent être saisies si requises (voir les deux prochaines sections, Paramètres et Séquences et Paramètres et Nœuds, pour les détails). Un type retour pour la fonction peut aussi être spécifié (voir ci-dessus).

 

Le point le plus important duquel il faut se souvenir quand vous écrivez l’expression XPath qui définit la fonction est qu’il n’existe pas de nœud contextuel pour l’expression XPath. Si l’expression XPath doit localiser un nœud, alors le nœud contextuel pour l’expression peut être fourni des manières suivantes :

 

1.L’expression XPath commence par la racine du document. La racine du document est spécifiée dans la première étape d’emplacement de l’expression XPath comme $XML. Par exemple, l’expression XPath $XML/Trades/Stock[1] situe le premier élément enfant Stock de l’élément /Trades. La variable $XML (qui situe la racine du document du schéma principal) est définie globalement par StyleVision dans tous les designs SPS.

2.Le nœud contextuel peut être passé comme paramètre. Voir la section Paramètres et Nœuds ci-dessous pour une explication.

 

Dans les cas suivants, les erreurs sont renvoyées :

 

Si un paramètre est défini mais n’est pas utilisé dans le corps de la définition.

Si le type de données de la valeur renvoyée par la fonction ne correspond pas au type de renvoi défini pour la fonction.

Si une fonction dans la SPS contient une erreur, une erreur XSLT est générée pour tout le design, même si la fonction contenant l’erreur n’est pas appelée. Notez, toutefois, qu’une fonction peut être désactivée en décochant sa case à cocher dans la liste des fonctions XPath définies par l’utilisateur. Lorsqu’elles sont désactivées dans le design, la fonction n’est pas incluse dans le document XSLT généré depuis les design. De cette manière, l’expression XPath contenant une erreur peut être exclue depuis XSLT et aucune erreur XSLT ne sera générée.

 

© 2019-2025 Altova GmbH