Ist es möglich, einen Parameter zu XSLT über eine URL zu übergeben, wenn Sie einen Browser mit Hilfe von XML zu verwandeln?
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>
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";
}
}