Funciones de extensión .NET

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Información sobre motores > Funciones XSTL y XPath/XQuery > Funciones de extensión varias >

Funciones de extensión .NET

Si trabaja en la plataforma .NET desde un equipo Windows, puede usar funciones de extensión escritas en cualquier lenguaje .NET (p. ej. C#). Una función de extensión .NET se puede usar dentro de una expresión XPath/XQuery para invocar un constructor, una propiedad o un método (estático o de instancia) de una clase .NET.

 

A una propiedad de una clase .NET se le llama usando la sintaxis get_NombrePropiedad().

 

Este apartado tiene varias partes:

 

Constructores
Métodos estáticos y campos estáticos
Métodos de instancia y campos de instancia
Tipos de datos: conversión de XPath/XQuery en .NET
Tipos de datos: conversión de .NET en XPath/XQuery

 

 

Formato de la función de extensión

La función de extensión de la expresión XPath/XQuery debe tener este formato prefijo:nombreFunción().

 

La parte prefijo: está asociada a un URI que identifica la clase .NET.
La parte nombreFunción() identifica el constructor, la propiedad o el método (estático o de instancia) dentro de la clase .NET y, si es necesario, suministra los argumentos.
El URI debe empezar por clitype: (que identifica la función como función de extensión .NET).
El formato prefijo:nombreFunción() de la función de extensión se puede usar con clases del sistema y con clases de un ensamblado cargado. No obstante, si se tiene que cargar una clase, será necesario suministrar parámetros que contengan la información necesaria.

 

 

Parámetros

Para cargar un ensamblado se usan estos parámetros:

 

asm

El nombre del ensamblado que se debe cargar.

ver

El número de versión (máximo cuatro enteros separados por puntos).

sn

El símbolo de clave del nombre seguro del ensamblado (16 dígitos hexadecimales).

from

Un URI que da la ubicación del ensamblado (DLL) que se debe cargar. Si el URI es relativo, es relativo al archivo XSLT o XQuery. Si está presente este parámetro, se ignoran los demás parámetros.

partialname

El nombre parcial del ensamblado. Se suministra a Assembly.LoadWith.PartialName(), que intentará cargar el ensamblado. Si está presente el parámetro partialname, se ignoran los demás parámetros.

loc

La configuración regional, por ejemplo, en-US. La configuración predeterminada es neutral.

 

Si el ensamblado se debe cargar desde un archivo DLL, use el parámetro from y omita el parámetro sn. Si el ensamblado se debe cargar desde el caché general de ensamblados (GAC), use el parámetro sn y omita el parámetro from.

 

Debe insertar un signo de interrogación final antes del primer parámetro y los parámetros deben separarse con un punto y coma (;). El nombre de parámetro da su valor con un signo igual (=), como en el ejemplo que aparece más abajo.

 

 

Ejemplos de declaraciones de espacios de nombres

Esto es un ejemplo de una declaración de espacio de nombres en XSLT que identifica la clase del sistema System.Environment:

 

xmlns:myns="clitype:System.Environment"

 

Esto es un ejemplo de una declaración de espacio de nombres en XSLT que identifica la clase que se debe cargar como Trade.Forward.Scrip:

 

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

 

Esto es un ejemplo de una declaración de espacio de nombres en XQuery que identifica la clase del sistema MyManagedDLL.testClass:. Existen dos tipos de clases:

 

1.Cuando el ensamblado se carga desde el GAC:
declare namespace cs="clitype:MyManagedDLL.testClass?asm=MyManagedDLL;

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

 

2.Cuando el ensamblado se carga desde el archivo DLL (ver las referencias parciales y completas):

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

 

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

 

 

Ejemplo de código XSLT

Aquí puede ver un ejemplo de código XSLT que llama a funciones de la clase del sistema 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 declaración de espacio de nombres del elemento math asocia el prefijo math: al URI clitype:System.Math. La parte inicial clitype: del URI indica que lo que sigue identifica una clase del sistema o una clase cargada. El prefijo math: de las expresiones XPath asocia las funciones de extensión al URI (y, por extensión, a la clase) System.Math. Las funciones de extensión identifican métodos en la clase System.Math y presenta argumentos cuando es necesario.

 

 

Ejemplo de código XQuery

Aquí puede ver un fragmento de código XQuery similar al ejemplo anterior:

 

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

    {math:Sqrt(9)}

 </math>

 

Tal y como ocurre con el código XSLT anterior, la declaración de espacio de nombres identifica la clase .NET, en este caso una clase del sistema. La expresión XQuery identifica el método al que se debe llamar y presenta el argumento.

 


© 2019 Altova GmbH