2016-01-25 70 views
0

當我想在C#中使用xsl:name前綴創建元素時,它會創建一個不帶xsl前綴的元素。我如何創建具有特定前綴的元素? 我從xml文件中刪除了<xslt:stylesheet>頭文件,但是當我打開xml文件時,Load方法拋出了一個關於xsl前綴的異常。通過編程創建<xls:text></xsl:text>元素

?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/> 
<table border="1"> 
    <thead> 
     <tr> 
      <!--<th> 
       <span> 
        <xsl:text>HeaderSample</xsl:text> 
       </span> 
      </th>--> 
     </tr> 
    </thead> 
    <tbody> 
     <xsl:for-each select="result1"> 
      <xsl:for-each select="row"> 
       <tr> 
        <td> 
         <xsl:for-each select="HeaderSample"> 
          <xsl:apply-templates/> 
         </xsl:for-each> 
        </td>     
       </tr> 
      </xsl:for-each> 
     </xsl:for-each> 
    </tbody> 
</table>   
</xsl:stylesheet> 
XmlDocument doc = new XmlDocument(); 
doc.Load("Template\\ResultItem.xml"); 

XmlNode headerElement = doc.LastChild.SelectSingleNode("table/thead/tr"); 

foreach (string h in Headers) 
{ 
    XmlElement thElement = doc.CreateElement("th"); 
    XmlElement spanElement = doc.CreateElement("span"); 
    XmlElement xslTextElement = doc.CreateElement("xsl:text"); 

    xslTextElement.InnerText = h; 

    spanElement.AppendChild(xslTextElement); 
    thElement.AppendChild(spanElement); 
    headerElement.AppendChild(thElement); 
}        

在輸出沒有<xsl:text>...</xsl:text>但有<text>...</text>

+0

可能重複:http://stackoverflow.com/questions/2920142/how-to-add-xmlnamespace-to-a- xmldocument – Ermiar

+0

我試過了,但有一個錯誤說:「非靜態字段,方法或屬性需要對象引用'XmlDocument.DocumentElement'」@Ermiar – teardrop

回答

0

如果您希望在XML輸出中添加前綴,則需要在創建節點時添加元素的名稱空間。

替換此行:

XmlElement xslTextElement = doc.CreateElement("xsl:text"); 

通過:

XmlElement xslTextElement = doc.CreateElement("xsl:text", "http://www.w3.org/1999/XSL/Transform"); 
+0

它可以工作,但所有這些元素都必須有一個命名空間的屬性。我想我必須使用這個建議。謝謝! @Ermiar – teardrop

相關問題