次のような XML フラグメントを発行する必要がある XSLT スタイルシートがあります (簡潔にするために「...」ビットは省略されています)。
<MyOuterType xmlns:xsi="..." xsi:type="foo:MyInnerType" xmlns:foo="..."/>
スタイルシートは次のようになります。
<xsl:stylesheet xmlns:foo="..." xmlns:xsi="...">
...
<xsl:template match="...">
<xsl:element name="MyOuterType">
<xsl:attribute name="xsi:type">foo:MyInnerType</xsl:attribute>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
XSLT プロセッサの出力は次のようになります。
<MyOuterType xmlns:xsi="..." xsi:type="foo:MyInnerType"/>
つまり、xmlns:foo
宣言がありません。実際、宣言はスタイルシートで宣言されているにもかかわらず、出力された XML にはまったく含まれていません。これは、出力された XML を逆シリアル化する必要があるときに、後で混乱します。
xmlns:foo
発行された XML に表示されるようにするにはどうすればよいですか? プロセッサは XSLT 1.0 を実装しています。