<msxsl:script>-Element
Enthält Skriptblöcke, damit benutzerdefinierte Funktionen in einer XSLT-Transformation verwendet werden können. Dies ist ein Element der obersten Ebene.
<msxsl:script
language = "language-name"
implements-prefix = "prefix of user's namespace">
</msxsl:script>
Attribute
language
Die Active Scripting-Sprache, die für die in diesem Element definierten Funktionen verwendet wird. Wenn diese nicht angegeben wird, wird Microsoft® JScript® (kompatibel mit der Sprachspezifikation EMCA 262) verwendet. Dieses Attribut akzeptiert dieselben Werte wie daslanguage
-Attribut für das HTML-<SCRIPT>
-Element.Bei verwaltetem Code akzeptiert dieses Attribut die Sprachennamen, die von CreateProvider akzeptiert werden.
- implements-prefix
Erforderlich. Ordnet das Präfix dem Skriptblock zu. Der Wert dieses Attributs ist das Präfix, das den Namespace darstellt.
Elementinformationen
Anzahl der Vorkommen |
Unbegrenzt |
Übergeordnete Elemente |
|
Untergeordnete Elemente |
|
Hinweise
Das <msxsl:script>
-Element gehört zum urn:schemas-microsoft-com:xslt
-Namespace. Sie können in diesem Element Variablen deklarieren und Funktionen definieren. Dieses Element kann im <xsl:stylesheet>
-Element angezeigt werden.Ein auf diese Weise geschachtelter Skriptblock wird als globaler Skriptblock behandelt.
Das untergeordnete <msxsl:assembly>
-Element und das untergeordnete <msxsl:using>
-Element sind für verwalteten Code nur in .NET Framework verfügbar.Wenn diese Elemente verwendet werden, müssen sie sich am Beginn des Skriptblocks vor jeglichem Skriptcode befinden.
Im nicht verwalteten Code können COM-Objekte auch im <msxsl:script>
-Element instanziiert werden.Sicherheitseinstellungen des Benutzers können jedoch verhindern, dass das Skript ein clientseitiges Objekt instanziiert.
Zur Optimierung der Leistung sollten Sie Skriptblöcke aus XSLT-Dateien vermeiden, weil dafür das Skriptmodul mehrmals geladen werden muss. Stattdessen können Sie ein COM-Objekt erstellen, das dem Skript entspricht, wobei eine DLL generiert wird. Verwenden Sie anschließend addObject
, und übergeben Sie die DLL.
Beispiel
In diesem Beispiel wird veranschaulicht, wie <msxsl:script>
verwendet werden kann, um einen Skriptblock mit dem Namespacepräfix user
zu definieren, der eine Funktion mit dem Namen xml()
deklariert. Die Funktion xml()
akzeptiert eine Knotenliste als Argument. Beachten Sie, wie die Funktion xml(nodelist)
im user
-Namespace vom select
-Attribut von <xsl:value-of>
aufgerufen wird.
XML-Datei (customers.xml)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="script.xsl" ?>
<customers>
<customer>
<name>John Smith</name>
<address>123 Elm St.</address>
<phone>(123) 456-7890</phone>
</customer>
<customer>
<name>Mary Jones</name>
<address>456 Oak Ave.</address>
<phone>(156) 789-0123</phone>
</customer>
</customers>
XSLT-Datei (script.xsl)
<?xml version='1.0'?>
<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 nodelist.nextNode().xml;
}
</msxsl:script>
<xsl:template match="/">
<xsl:value-of select="user:xml(.)"/>
</xsl:template>
</xsl:stylesheet>
Ausgabe
Dies ist die formatierte Ausgabe:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="script.xsl" ?>
<customers>
<customer>
<name>John Smith</name>
<address>123 Elm St.</address>
<phone>(123) 456-7890</phone>
</customer>
<customer>
<name>Mary Jones</name>
<address>456 Oak Ave.</address>
<phone>(156) 789-0123</phone>
</customer>
</customers>
Die Prozessorausgabe lautet:
<?xml version="1.0"?><?xml version="1.0"?><?xml-stylesheet
type="text/xsl" href="script.xsl" ?><customers>
<customer> <name>John Smith</name>
<address>123 Elm St.</address> <phone>(123) 456-
7890</phone> </customer> <customer> <name>Mary
Jones</name> <address>456 Oak Ave.</address>
<phone>(156) 789-0123</phone>
</customer></customers>