Altova XMLSpy 2024 Professional Edition 

El elemento <msxsl:script> contiene funciones y variables definidas por el usuario a las que se puede llamar desde dentro de expresiones XPath en la hoja de estilos XSLT. El elemento <msxsl:script> es un elemento de nivel superior, es decir, debe ser un elemento secundario de <xsl:stylesheet> o <xsl:transform>.

 

El elemento <msxsl:script> debe estar en el espacio de nombres urn:schemas-microsoft-com:xslt (ver ejemplo más abajo).

 

 

 

Lenguaje de scripting y espacio de nombres

El lenguaje de scripting utilizado dentro del bloque se especifica en el atributo language del elemento <msxsl:script> y el espacio de nombres que se debe usar para las llamadas a función desde expresiones XPath se identifica con el atributo implements-prefix:

 

<msxsl:script language="lenguaje-de-scripting" implements-prefix="prefijo-espacioNombres-usuario">

 

  función-1 o variable-1

  ...

  función-n o variable-n

 

</msxsl:script>

 

 

El elemento <msxsl:script> interactúa con Windows Scripting Runtime, de modo que dentro del elemento <msxsl:script> solamente se pueden usar lenguajes que estén instalados en el equipo. Para poder usar scripts MSXSL es necesario tener instalada la plataforma .NET Framework 2.0 (o superior). Por tanto, los lenguajes de scripting .NET se pueden usar dentro del elemento <msxsl:script>.

 

El atributo language admite los mismos valores que el atributo language del elemento HTML <script>. Si no se especifica el atributo language, entonce se asume Microsoft JScript por defecto.

 

El atributo implements-prefix toma un valor que es un prefijo de un espacio de nombres declarado dentro del ámbito. Este espacio de nombres suele ser un espacio de nombres de usuario que se reservó para una biblioteca de funciones. Todas las funciones y variables definidas dentro del elemento <msxsl:script> están en el espacio de nombres identificado por el prefijo indicado en el atributo implements-prefix. Cuando se llama a una función desde dentro de una expresión XPath, el nombre de función completo debe estar en el mismo espacio de nombres que la definición de función.

 

 

 

Ejemplo

Aquí puede ver un ejemplo de una hoja de estilos XSLT que usa una función definida dentro de un elemento <msxsl:script>.

 

<?xml version="1.0" encoding="UTF-8"?>
<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"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  xmlns:user="http://mycompany.com/mynamespace">
 
<msxsl:script language="VBScript" implements-prefix="user">
  <![CDATA[
   ' Input: A currency value: the wholesale price
   ' Returns: The retail price: the input value plus 20% margin,
   ' rounded to the nearest cent
   dim a as integer  = 13
   Function AddMargin(WholesalePrice) as integer
     AddMargin = WholesalePrice * 1.2 + a
   End Function
 ]]>
</msxsl:script>
 
<xsl:template match="/">
  <html>
    <body>
      <p>
        <b>Total Retail Price =
           \$<xsl:value-of select="user:AddMargin(50)"/>
        </b>
        <br/>
        <b>Total Wholesale Price =
           \$<xsl:value-of select="50"/>
        </b>
      </p>
    </body>
  </html>
</xsl:template>
</xsl:stylesheet>

 

Tipos de datos

Los valores de los parámetros que se pasan dentro y fuera del bloque de script solamente pueden ser tipos de datos XPath. Esta restricción no afecta a los datos que se pasan las funciones y variables situadas dentro del bloque de script.

 

 

 

Ensamblados

Puede importar un ensamblado al script usando el elemento msxsl:assembly. El ensamblado se identifica con un nombre o un URI. El ensamblado se importa cuando se compila la hoja de estilos. Aquí puede ver cómo se usa el elemento msxsl:assembly:

 

<msxsl:script>

 <msxsl:assembly name="miEnsamblado.nombreEnsamblado" />

 <msxsl:assembly href="rutaDelEnsamblado" />

 

 ...

 

</msxsl:script>

 

El nombre de ensamblado puede ser un nombre completo, como:

 

"system.Math, Version=3.1.4500.1 Culture=neutral PublicKeyToken=a46b3f648229c514"

 

o un nombre abreviado, como "miEnsamblado.Draw".

 

Espacios de nombres

Puede declarar espacios de nombres con el elemento msxsl:using. Esto permite escribir las clases del ensamblado en el script sin sus espacios de nombres, lo cual le permitirá ahorrar mucho tiempo. Aquí puede ver cómo se usa el elemento msxsl:using para declarar espacios de nombres.

 

<msxsl:script>

 <msxsl:using namespace="ENmiEnsamblado.NombreEspaciodenombres" />

 

 ...

 

</msxsl:script>

 

El valor del atributo namespace es el nombre del espacio de nombres.

 

© 2017-2023 Altova GmbH