Ist es möglich, einen Parameter zu XSLT über eine URL zu übergeben, wenn Sie einen Browser mit Hilfe von XML zu verwandeln?

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

Frage

Wenn Sie einen Browser unter Verwendung von XML (Google Chrome oder IE7) zu transformieren ist es möglich, einen Parameter an den XSLT-Stylesheet über die URL übergeben?

Beispiel:

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>
War es hilfreich?

Lösung

Sie können die XSLT-Server-Seite generieren, auch wenn die Transformation Client-Seite.

Auf diese Weise können Sie ein dynamisches Skript verwenden, um die Parameter zu behandeln.

Zum Beispiel, könnte man angeben:

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

Und dann in myscript.cfm würden Sie die XSL-Datei ausgegeben, aber mit dynamischen Skript der Query-String-Parameter Handling (je nach dem Skriptsprache variieren würden Sie verwenden).

Andere Tipps

Leider nein - man kann nicht nur über die Parameter an den XSLT auf der Client-Seite übergeben. Der Web-Browser nimmt die Verarbeitungsanweisungen aus dem XML; und direkt verwandelt sie mit dem XSLT.


Es ist möglich, Werte über die Abfragezeichenfolgeflag URL zu übergeben und sie dann lesen Sie JavaScript dynamisch mit. Allerdings würden diese nicht verfügbar sein, in dem XSLT (XPath-Ausdrücke) verwenden - wie der Browser bereits den XML / XSLT transformiert hat. Sie können nur in der gerenderten HTML-Ausgabe verwendet werden.

Fügen Sie einfach den Parameter als Attribut der XML-Quelldatei und verwenden Sie es als attibute mit dem Stylesheet.

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

Und die JavaScript-Funktion ist wie folgt:

//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";
   }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top