2010-08-24 108 views
1

如何從html輸出中的xslt中省略所有XML命名空間?忽略來自XslCompiledTransform.Transform的所有命名空間輸出

我的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來嵌入它們的命名空間,但是默認情況下它將是乾淨的不帶xmlns的HTML代碼。

回答

5

您可能正在尋找xsl:stylesheet元素上的exclude-result-prefixes屬性。

+0

它完美的作品。 exclude-result-prefixes是所有名稱空間的空白分隔列表。 – 2010-08-24 12:03:37

+0

很高興聽到它。 – mwittrock 2010-08-24 12:10:33

+0

XslCompiledTransform是否有任何條件忽略排除結果前綴? – 2014-03-06 01:40:59