如何摆脱xmlns: - XSL转换中的属性

时间:2011-08-18 08:33:43

标签: xslt

我有一个xsl转换来生成ASP.NET用户控件(ascx)。

我的XSL是这样定义的:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:asp="System.Web.UI.WebControls"
    exclude-result-prefixes="asp msxsl"
>
<xsl:output method="xml" indent="no" omit-xml-declaration="yes" />

因此,从我认为的排除结果前缀开始,带有asp前缀的所有内容都不应该添加命名空间信息,但是这里的模板是这样的:

<xsl:template match="Label">
    <asp:Label runat="server" AssociatedControlID="{../@id}">
        <xsl:copy-of select="./text()"/>
    </asp:Label>
</xsl:template>

使用此xml:

<Label>Label Text</Label>

导致此输出:

<asp:Label runat="server" AssociatedControlID="SomeName" xmlns:asp="System.Web.UI.WebControls">Label Text</asp:Label>

那么我需要做些什么才能阻止xmlns:asp =“..”显示在我的结果中的每个标记中?

1 个答案:

答案 0 :(得分:1)

至少在MSXML中,这是不可能的,因为输出XML格式不正确。您只能像文字一样输出它,例如使用CDATA。