我正在使用javax.xml.transform.Transformer和一个1.0 XSL文档将XML转换为XML。
我正在使用的XSL模板之一是
这是模板的代码:
<xsl:variable name="replacementNamespace" select="'abc.123.xyz'" />
<xsl:template match="*" mode="newNamespace">
<xsl:element name="{local-name()}" namespace="{$replacementNamespace}">
<xsl:apply-templates select="@*|node()" mode="newNamespace" />
</xsl:element>
</xsl:template>
这是我需要的:
<type xmlns="abc.123.xyz">
<usr></usr>
etc...
</type>
它正在创建的输出如下:
<ns0:type xmlns:ns0="abc.123.xyz">
<ns1:usr xmlns:ns1="abc.123.xyz"></usr>
etc...
</type>
答案 0 :(得分:0)
XSLT 1.0赋予处理器完全的自由裁量权,以使用他们喜欢在输出中使用的任何名称空间前缀。
如果您的代码与XSLT 2.0处理器一起运行,您的代码应该会达到预期的效果:XSLT 2.0规范对前缀的选择以及采用这种结构更具规范性
<xsl:element name="{local-name()}"
namespace="{$replacementNamespace}">
保证您没有前缀。
因此,可以与撒克逊人重试。