2011-09-16 64 views
17

¿Cómo puedo incluir/importar el archivo javaScript/libary en el archivo xslt.Cómo incluir el archivo javaScript en xslt

+0

Buena pregunta, 1. ¿Desea utilizar el código de JavaScript como un conjunto de funciones de extensión que se invocan durante la transformación, o desea generar código HTML que haga referencia a un archivo de JavaScript, o ambos? Todos estos son escenarios válidos y significativos. –

Respuesta

19

Si necesita utilizar el javascript en la transformación (por ejemplo, contiene un conjunto de funciones de extensión que se llaman dentro de la transformación), debe colocar los contenidos de javascript (al menos los de un archivo javascript) en un archivo de hoja de estilos XSLT separado, utilizando el elemento de extensión adecuado (como <msxml:script>) como el padre del nodo de texto que contiene el código de JavaScript.

Aquí es un ejemplo muy simple, utilizando cualquier procesador XSLT Microsoft (MSXML3/4/6, XslCompiledTransform o XslTransform):

archivo XSL-JS.xsl: XSL

<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
     xmlns:user="http://mycompany.com/mynamespace"> 

<msxsl:script language="JScript" implements-prefix="user"> 
    function xml(nodelist) { 
     return "A B C"; 
    } 
</msxsl:script> 
</xsl:stylesheet> 

Archivo -Main.xsl que está importando el javascript:

<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
     xmlns:user="http://mycompany.com/mynamespace"> 
<xsl:import href="XSL-JS.xsl"/> 

<xsl:template match="/"> 
    <xsl:value-of select="user:xml(.)"/> 
</xsl:template> 

</xsl:stylesheet> 

Cuando la transformación, contenida en el archivo XSL-Main.xsl se aplica en cualquier documento XML (no utilizado/ignorado), el, resultado correcto querido se produce:

A B C 

Un caso es completamente diferente si sólo desea generar con su aplicación XSLT un archivo HTML que hace referencia a un archivo Javascript dado.

A continuación, incluir esto en su código XSLT y generar esta literalmente como parte de la salida:

<script type="text/javascript" src="SomePath/SomeFileName.js"></script> 
9

Si usted está tratando de incluir una fuente de Javascript en el archivo HTML generado, la etiqueta script es el camino . Pero muchos procesadores XSLT se ahogarán si la etiqueta está vacía. Si todo está bien, pero que está recibiendo salida de vacío cuando se agrega las etiquetas de script, intente insertar un espacio de no separación dentro de la etiqueta como en:

<script type="text/javascript" src="SomePath/SomeFileName.js">&#160;</script> 
+0

guau increíble! Gracias, tuve problemas al usar las bibliotecas .NET XsltTransform. –

Cuestiones relacionadas