您的位置:首页 > 其它

.NET转换xslt xml 时某些元素包含xmlns=""的问题

2011-01-24 16:44 375 查看
例如:<h1 xmlns="">精舞门</h1>

按w3c规则,使用xslt转换时,如果指定了除xmlns:xsl外其它的命名空间,在使用<xsl:element 生成新节点时,就会自动加上这个命名空间。

估计这个“其他命名空间”也包括了<html>的xmlns,这样子我们就在<xsl:stylesheet>上再加一句
xmlns="http://www.w3.org/1999/xhtml",并去掉 <html>上的xmlns,就没问题了

实践发现上述方法还是会导致老问题,进过一番搜索,在老外网站上发现最终解决方案。

首先去掉所有xmlns="http://www.w3.org/1999/xhtml",在xslt文档<xsl:template match="/">后直接添加一个xsl:test
内容如下:

<xsl:text disable-output-escaping="yes"><!--[CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml">]]></xsl:text>
在</xsl:template>前添加:
<xsl:text disable-output-escaping="yes">	<![CDATA[</html>]]--></xsl:text>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐