変換を支援するためにJavaScriptを埋め込むには、<xsl:script>を使用できますが、これはMicrosoftのXMLオブジェクトの実装に限定されています。次に例を示します。
scripted.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="scripted.xsl"?>
<data a="v">
ding dong
</data>
scripted.xsl:
<?xml version="1.0" encoding="ISO-8859-1"?>
<html xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:script implements-prefix="local" language="JScript"><![CDATA[
function Title()
{
return "Scripted";
}
function Body(text)
{
return "/" + text + "/";
}
]]></xsl:script>
<head>
<title><xsl:eval>Title()</xsl:eval></title>
</head>
<body>
<xsl:for-each select="/data"><xsl:eval>Body(nodeTypedValue)</xsl:eval></xsl:for-each>
</body>
</html>
Internet Explorerでの結果(またはCOM / .NETからMSXMLを使用する場合)は次のようになります。
<html>
<head>
<title>Scripted</titlte>
</head>
<body>
/ding dong/
</body>
</html>
通常のXSLテンプレート構造をサポートしていないようで、ルートノードを追加すると、MSXMLは機能しないある種の標準モードになります。
標準のXSLに同等の機能があるかどうかはわかりませんが、夢見ることはできます。