从XslCompiledTransform.Transform输出中省略所有名称空间

时间:2010-08-24 08:43:03

标签: xml xslt c#-4.0

如何在html-output中省略xslt中的所有XML-Namespace?

我的XSL以:

开头
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">

我转换XML的代码如下

StringBuilder sb = new StringBuilder(600);
XslCompiledTransform xslTrans = new XslCompiledTransform();

xslTrans.Load(XslDoc);//loads the XSL

XmlWriterSettings writerSettings = new XmlWriterSettings();
writerSettings.OmitXmlDeclaration = true;
writerSettings.ConformanceLevel = ConformanceLevel.Auto;
writerSettings.NamespaceHandling = NamespaceHandling.OmitDuplicates;


using (XmlWriter stringWriter = XmlWriter.Create(sb, writerSettings))
{
    xslTrans.Transform(XmlDoc, xslArguments, stringWriter);
}
return sb.ToString();

但是在生成的html输出中出现的命名空间如下:

<div class="newsFeed" xmlnsxs="http://www.w3.org/2001/XMLSchema" xmlnsfn="http://www.w3.org/2005/xpath-functions" >

如何省略生成的输出中的所有命名空间? 很酷,如果我可以通过修改XSL来做到这一点,那么用户可以更改他们的XSL以嵌入他们的命名空间,但默认情况下它将是干净的HTML-Code而不是xmlns。

1 个答案:

答案 0 :(得分:5)

您可能正在查找exclude-result-prefixes元素的xsl:stylesheet属性。