我有一个 XSLT 样式表,它需要发出一个看起来像这样的 XML 片段(为简洁起见,省略了“...”位):
<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。