我有一个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 =“..”显示在我的结果中的每个标记中?
答案 0 :(得分:1)
至少在MSXML中,这是不可能的,因为输出XML格式不正确。您只能像文字一样输出它,例如使用CDATA。