別のXSLTスタイルシートを作成するXSLTスタイルシートがあります。最初に作成された出力XSLTには、実行時に設定されるxmlnsプレフィックス/名前空間の定義が必要です。以下は、私が試したものの例ですが、動作していません。 paramsを使用しているときに、alias-xsl:stylesheetにxmlns:$ somePrefix = $ someNamespaceを設定する方法がわかりません。これを行う方法に関するアイデア?私はまた、望ましい出力の例を追加しました。所望の出力のXSLT:エイリアスネームスペースにあるスタイルシートに実行時にxmlns:prefix属性を追加する
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:alias-xsl="http://www.w3.org/1999/XSL/TransformAlias" version="2.0">
<xsl:param name="someNamespace"/>
<xsl:param name="somePrefix"/>
<xsl:namespace-alias result-prefix="xsl" stylesheet-prefix="alias-xsl"/>
<xsl:output indent="yes" method="xml" omit-xml-declaration="yes"/>
<xsl:template match="/">
<alias-xsl:stylesheet version="2.0">
<xsl:attribute name="{$somePrefix}">
<xsl:value-of select="$someNamespace"/>
</xsl:attribute>
<alias-xsl:output method="xml"/>
<alias-xsl:template match="/">
<some-output>
<alias-xsl:apply-templates/>
</some-output>
</alias-xsl:template>
<xsl:apply-templates/>
</alias-xsl:stylesheet>
</xsl:template>
</xsl:stylesheet>
例($ somePrefix =のxmlns:Sと$ someNamespace = http://example.com):
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:s="http://example.com">
<xsl:output method="xml"/>
<xsl:template match="/">
<some-output>
<xsl:apply-templates/>
</some-output>
</xsl:template>
</xsl:stylesheet>
ここに来る他の人々の場合:xsl:namespaceにはXSLT 2.0が必要です。最初の試みが失敗する理由は、データ・モデルでは名前空間ノードと属性ノードが全く異なるものであり、xsl:属性は名前空間ノードではなく属性ノードのみを作成できます。 –