xsl tutorial transformar template online generate from example convertir xml xslt browser transform param

xml - tutorial - xslt example



¿Es posible pasar un parámetro a XSLT a través de una URL cuando se usa un navegador para transformar XML? (3)

Puede generar el lado del servidor XSLT, incluso si la transformación es del lado del cliente.

Esto le permite usar un script dinámico para manejar el parámetro.

Por ejemplo, puede especificar:

<?xml-stylesheet type="text/xsl"href="/myscript.cfm/sample.xsl?paramter=something" ?>

Y luego, en myscript.cfm generaría el archivo XSL, pero con el script dinámico manejando el parámetro de cadena de consulta (esto variaría dependiendo del lenguaje de scripting que use).

Cuando se utiliza un navegador para transformar XML (Google Chrome o IE7), ¿es posible pasar un parámetro a la hoja de estilo XSLT a través de la URL?

ejemplo:

data.xml

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="sample.xsl"?> <root> <document type="resume"> <author>John Doe</author> </document> <document type="novella"> <author>Jane Doe</author> </document> </root>

sample.xsl

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="html" /> <xsl:template match="/"> <xsl:param name="doctype" /> <html> <head> <title>List of <xsl:value-of select="$doctype" /></title> </head> <body> <xsl:for-each select="//document[@type = $doctype]"> <p><xsl:value-of select="author" /></p> </xsl:for-each> </body> </html> </<xsl:stylesheet>


Desafortunadamente, no, no puede pasar los parámetros al XSLT solo en el lado del cliente. El navegador web toma las instrucciones de procesamiento del XML; y lo transforma directamente con XSLT.

Es posible pasar valores a través de la URL de la cadena de consulta y luego leerlos dinámicamente usando JavaScript. Sin embargo, estos no estarían disponibles para su uso en XSLT (expresiones XPath), ya que el navegador ya ha transformado el XML / XSLT. Solo se podían usar en la salida HTML renderizada.


Simplemente agregue el parámetro como un atributo al archivo fuente XML y úselo como un atributo con la hoja de estilo.

xmlDoc.documentElement.setAttribute("myparam",getParameter("myparam"))

Y la función de JavaScript es la siguiente:

//Get querystring request paramter in javascript function getParameter (parameterName ) { var queryString = window.top.location.search.substring(1); // Add "=" to the parameter name (i.e. parameterName=value) var parameterName = parameterName + "="; if ( queryString.length > 0 ) { // Find the beginning of the string begin = queryString.indexOf ( parameterName ); // If the parameter name is not found, skip it, otherwise return the value if ( begin != -1 ) { // Add the length (integer) to the beginning begin += parameterName.length; // Multiple parameters are separated by the "&" sign end = queryString.indexOf ( "&" , begin ); if ( end == -1 ) { end = queryString.length } // Return the string return unescape ( queryString.substring ( begin, end ) ); } // Return "null" if no parameter has been found return "null"; } }