Fonctions d'extension .NET

www.altova.com Imprimer cette rubrique Page précédente Un niveau supérieur Page suivante

Accueil >  Informations moteur > Fonctions XSLT et XPath/XQuery > Fonctions d'extension diverses >

Fonctions d'extension .NET

Si vous travaillez sur la plate-forme .NET d'une machine Windows, vous pouvez utiliser les fonctions d'extension écrites dans un des langages .NET (par exemple, C#). Une fonction d'extension .NET peut être utilisée dans une expression XPath ou XQuery pour invoquer un constructeur, une propriété ou une méthode (statique ou instance) dans une classe .NET.

 

Une propriété d'une classe .NET est appelée en utilisant la syntaxe get_PropertyName().

 

Cette section est organisée dans les sous-sections suivantes :

 

.NET: Constructeurs
.NET: Méthodes statiques et champs statiques
.NET: Méthodes d'instance et Champs d'instance
Types de données : XPath/XQuery en .NET
Types de données : .NET en XPath/XQuery

 

 

Forme de la fonction d'extension

La fonction d'extension de l'expression XPath/XQuery doit avoir la forme prefix:fname().

 

La partie prefix: est associée avec un URI qui identifie la classe .NET en cours d'adressage.
La partie fname() identifie le constructeur, la propriété ou la méthode (statique ou d'instance) dans la classe .NET, et fournit un/des argument/s, le cas échéant.
L'URI doit commencer avec clitype: (qui identifie la fonction comme étant une fonction d'extension .NET).
La forme prefix:fname() de la fonction d'extension peut être utilisée avec les classes de système et avec les classes dans un assemblage chargé. Néanmoins, si une classe doit être chargée, les paramètres supplémentaires contenant l'information requise devront être fournis.

 

 

Paramètres

Pour charger un assemblage, utiliser les paramètres suivants :

 

asm

Le nom de l'assemblage à charger.

ver

Le numéro de la version (quatre entiers maximum séparés par des points).

sn

Le jeton clé du nom solide de l'assemblage (16 chiffres hex).

from

Un URI qui donne l'emplacement de l'assemblage (DLL) à charger. Si l'URI est relatif, il est relatif au document XSLT ou XQuery. Si ce paramètre est présent, tout autre paramètre est ignoré.

partialname

Le nom partiel de l'assemblage. Il est fourni dans Assembly.LoadWith.PartialName(), qui tentera de charger l'assemblage. Si partialname est présent, tout autre paramètre est ignoré.

loc

La région, par exemple, en-US. Le défaut est neutral.

 

Si l'assemblage doit être chargé depuis un DLL, utiliser le paramètre from et omettre le paramètre sn. Si l'assemblage doit être chargé depuis le Global Assembly Cache (GAC), utiliser le paramètre sn et omettre le paramètre from.

 

Un signe d'interrogation doit être inséré avant le premier paramètre, et les paramètres doivent être séparés par un point-virgule. Le nom du paramètre donne sa valeur avec un signe égal (voir exemple ci-dessous).

 

 

Exemples de déclarations d'espace de nom

Un exemple de déclaration d'espace de nom dans XSLT qui identifie le système class System.Environment:

 

xmlns:myns="clitype:System.Environment"

 

Un exemple d'une déclaration d'espace de nom dans XSLT qui identifie la classe devant être chargée en tant que Trade.Forward.Scrip:

 

xmlns:myns="clitype:Trade.Forward.Scrip?asm=forward;version=10.6.2.1"

 

Un exemple d'une déclaration d'espace de nom dans XQuery qui identifie la classe de système MyManagedDLL.testClass:. Deux cas peuvent être distingués :

 

1.Lorsque l'assemblage est chargé depuis le GAC:
declare namespace cs="clitype:MyManagedDLL.testClass?asm=MyManagedDLL;

         ver=1.2.3.4;loc=neutral;sn=b9f091b72dccfba8";

 

2.Lorsque l'assemblage est chargé depuis le DLL (références partielles ou complète ci-dessous) :

         declare namespace cs="clitype:MyManagedDLL.testClass?from=file:///C:/Altova
         Projects/extFunctions/MyManagedDLL.dll;

 

declare namespace cs="clitype:MyManagedDLL.testClass?from=MyManagedDLL.dll;

 

 

Exemple XSLT

Voici un exemple complet XSLT qui appelle les fonctions dans la classe de système System.Math:

 

<xsl:stylesheet version="2.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

   xmlns:xs="http://www.w3.org/2001/XMLSchema"

   xmlns:fn="http://www.w3.org/2005/xpath-functions">

   <xsl:output method="xml" omit-xml-declaration="yes" />

   <xsl:template match="/">

      <math xmlns:math="clitype:System.Math">

         <sqrt><xsl:value-of select="math:Sqrt(9)"/></sqrt>

         <pi><xsl:value-of select="math:PI()"/></pi>

         <e><xsl:value-of select="math:E()"/></e>

         <pow><xsl:value-of select="math:Pow(math:PI(), math:E())"/></pow>

      </math>

   </xsl:template>

</xsl:stylesheet>

 

La déclaration d'espace de nom de l'élément math associe le préfixe math: avec l'URI clitype:System.Math. Le début clitype: de l'URI indique que ce qui suit identifie soit une classe de système soit une classe chargée. Le préfixe math: dans les expressions XPath associe les fonctions d'extension avec l'URI (et, par extension, la classe) System.Math. Les fonctions d'extension identifient des méthodes dans la classe System.Math et fournissent les arguments le cas échéant.

 

 

Exemple XQuery

Voici un fragment d'exemple XQuery similaire à l'exemple XSLT ci-dessus :

 

 <math xmlns:math="clitype:System.Math">

    {math:Sqrt(9)}

 </math>

 

Comme pour l'exemple XSLT ci-dessus, la déclaration d'espace de nom identifie la classe .NET, dans ce cas une classe de système. L'expression XQuery identifie la méthode à appeler et fournit l'argument.

 


© 2019 Altova GmbH