2013-10-09 65 views
0

我正在使用XDocument創建一個xml文件,該文件使用xsl文件作爲樣式表。我想使xml下載,我沒有問題,但我有的問題是,當我只需要一個文件下載時,我有兩個文件。可能將xsl整合到xml中

我用下面的包括鏈接:

doc.AddFirst(new XProcessingInstruction("xml-stylesheet", "type='text/xsl' href='Stylesheet.XSL'")); 

是否有可能XSL文件合併到XDocument對象?

編輯: 發現我可以這樣做:

XDocument transformedDoc = new XDocument(); 
     using (XmlWriter writer = transformedDoc.CreateWriter()) 
     { 
      XslCompiledTransform transform = new XslCompiledTransform(); 
      transform.Load(XmlReader.Create(new StringReader(HttpContext.Current.Server.MapPath("~/XML/CareLog.xsl")))); 
      transform.Transform(doc.CreateReader(), writer); 
     } 
     transformedDoc.Save(HttpContext.Current.Server.MapPath("~/BrowserTemp/CareLog.xml")); 

但我得到的錯誤「的數據在根級別是無效的」關於transform.Load()行?我需要注意什麼?

+0

我不這麼認爲,XML本身沒有處理的邏輯,因此我們使用XSL的tranforming一個XML。 –

+0

如何使用PDFSharp或MigraDoc以某種方式打開與鏈接的XML併產生PDF? – user1166905

+0

對不起,我相信我沒有正確理解這個要求,當你說2個文件 - 它是xsl和xml嗎? –

回答

0

直接從標準......簡單的例子,但嵌入樣式表中的XML裏面: http://www.w3.org/TR/xslt#section-Embedding-Stylesheets

<?xml-stylesheet type="text/xml" href="#style1"?> 
<doc> 
<head> 
<xsl:stylesheet id="style1" 
      version="1.0" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
<xsl:template match="id('foo')"> 
<fo:block font-weight="bold"><xsl:apply-templates/></fo:block> 
</xsl:template> 
<xsl:template match="xsl:stylesheet"> 
<!-- ignore --> 
</xsl:template> 
</xsl:stylesheet> 
</head> 
<body> 
<para id="foo"> 
... 
</para> 
</body> 
</doc>