XSLT には、XSLT自体である出力の生成をサポートする特別な組み込み機能があります。
これは<xsl:namespace-alias>
XSLT ディレクティブです。
XSLT 1.0 Spec で説明されているように:
"
<!-- カテゴリ: トップレベル要素 -->
<xsl:namespace-alias
stylesheet-prefix = プレフィックス | "#デフォルト"
結果プレフィックス = プレフィックス | "#default" />
スタイルシートはこの要素を使用して、ある名前空間 URI が別の名前空間 URI のエイリアスxsl:namespace-alias
であることを宣言できます。リテラル名前空間 URI が別の名前空間 URI のエイリアスとして宣言されている場合、結果ツリーの名前空間 URI は、リテラル名前空間 URI 自体ではなく、リテラル名前空間 URI がエイリアスである名前空間 URI になります。この要素は、属性で指定されたプレフィックスにバインドされた名前空間 URI が、属性で指定されたプレフィックスにバインドされた名前空間 URI のエイリアスであることを宣言します。したがって、属性はスタイルシートに表示される名前空間 URI を指定し、属性は結果ツリーに表示される対応する名前空間 URI を指定します。"xsl:namespace-alias
stylesheet-prefix
result-prefix
stylesheet-prefix
result-prefix
xsl:stylesheet
xsl:variable
必要な方法で構築されたを含むを生成する変換の小さな例を次に示します。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xxx="my:dummyNS" exclude-result-prefixes="xxx"
>
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:namespace-alias result-prefix="xsl" stylesheet-prefix="xxx"/>
<xsl:template match="/*">
<xxx:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xxx:変数名="{@name}">
<xsl:value-of select="."/>
</xxx:変数>
</xxx:スタイルシート>
</xsl:テンプレート>
</xsl:スタイルシート>
この変換が次の XML ドキュメントに適用される場合:
<v name="myVarName">myValue</v>
必要な結果が生成されます。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="myVarName">myValue</xsl:variable>
</xsl:スタイルシート>
次に、この動的に生成された XSLT 変換を「スクリプト」で起動します。