Es posible pasar de un parámetro a XSLT a través de una dirección URL cuando se utiliza un navegador para transformar XML?

StackOverflow https://stackoverflow.com/questions/65926

Pregunta

Cuando se utiliza un navegador para transformar XML (Google Chrome o IE7) es posible pasar de un parámetro a la hoja de estilos 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>

de la muestra.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>
¿Fue útil?

Solución

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

Esto le permite utilizar un guión dinámico para controlar el parámetro.

Por ejemplo, puede especificar:

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

Y, a continuación, en myscript.cfm se generará el archivo XSL, pero con la dinámica de secuencia de comandos de manejo el parámetro de cadena de consulta (esto varía dependiendo del lenguaje de secuencias de comandos que utilice).

Otros consejos

Lamentablemente, no hay - no puede pasar a través de los parámetros de la transformación xsl en el lado del cliente solamente.El navegador web se lleva las instrucciones de procesamiento de XML;y directamente se transforma con el XSLT.


Es posible pasar valores a través de la cadena de consulta de la URL y, a continuación, lea dinámicamente mediante JavaScript.Sin embargo, estos no estarán disponibles para su uso en el XSLT (expresiones XPath) - como el navegador ya ha transformado el XML/XSLT.Sólo podían ser utilizados en el renderizado de HTML de salida.

Simplemente añada el parámetro como un atributo en el archivo XML de origen y lo utilizan como un attibute con la hoja de estilos.

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";
   }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top