2012-02-22 101 views
1

XML可以通過瀏覽器使用XSL進行轉換。現在將由XML,XSL創建的HTML轉換爲MHTML

<?xml-stylesheet type='text/xsl' href='sample.xsl'?>

打開這個XML文件,Internet Explorer將在瀏覽器中顯示正確的數據: 這既可以通過 引用XML中的一個xsl添加XML文件中的下面這行。

XML本身引用許多其他文件,例如,位於某個文件夾中的圖片。

我要顯示的數據(與所有引用的數據)保存在一個單一的 MHTML文件(*的.mht)

我該如何繼續?這可能嗎?

注意:文件全部是本地的(不在服務器上),最初的xml是測試數據的結果。 我只想讓我的XML文件像之前從單個文件啓動一樣正確顯示,而無需訪問mhtml文件之外的其他數據。

在回答1編輯:

我已經包含了HTML的iFrame中我的xml:

<body><iframe src="name.xml" width = "100%" height="1000"> </iframe></body>

這我一直在使用IE瀏覽器爲* .mht文件保存:

From: <Saved by Windows Internet Explorer 7> 
Subject: XML-Test 
Date: Wed, 22 Feb 2012 14:47:34 +0100 
MIME-Version: 1.0 
Content-Type: multipart/related; 
    boundary="----=_NextPart_000_0000_01CCF170.E99B1DF0" 
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 

This is a multi-part message in MIME format. 

------=_NextPart_000_0000_01CCF170.E99B1DF0 
Content-Type: text/html; 
    charset="Windows-1252" 
Content-Transfer-Encoding: quoted-printable 
Content-Location: file://C:\Documents and Settings\STEFFAN\Desktop\Test\XML-Test.html 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML><HEAD><TITLE>XML-Test</TITLE> 
<META http-equiv=3DContent-Type content=3D"text/html; = 
charset=3Dwindows-1252"> 
<META content=3D"MSHTML 6.00.6000.17107" name=3DGENERATOR></HEAD> 
<BODY><IFRAME=20 
src=3D"http://www.m.de/name.xml"=20 
width=3D"100%" height=3D1000> 
</IFRAME></BODY></HTML> 

------=_NextPart_000_0000_01CCF170.E99B1DF0 
Content-Type: text/xml; 
    charset="unicode" 
Content-Transfer-Encoding: base64 
Content-Location: http://www.m.de/name.xml 

//48ACEARABPAEMAVABZAFAARQAgAEgAVABNAEwAIABQAFUAQgBMAEkAQwAgACIALQAvAC8AVwAz 
AEMALwAvAEQAVABEACAASABUAE0ATAAgADQALgAwACAAVAByAGEAbgBzAGkAdABpAG8AbgBhAGwA... 

因爲我最初使用本地文件而不是「http://www.m.de/name.xml」「file:// C:\ Documen ts和Settings \ STEFFAN \ Desktop \ Test \ SUPL_TCLog.xml「由IE輸出。

但是這個本地引用似乎不適用於mhtml,它很糟糕,因此我使用了一個隨機替換(http://www.m.de/name.xml)。 (這適用於圖像文件)。相應地更改打開mht文件將開始下載xml文件。但這不是想要的。我希望它被顯示。

缺什麼?

回答

-1

我嘗試了一些嘗試,但沒有成功。 也弗朗西斯阿維拉的建議,我不能成功解決。

特別是JavaScript引用的代碼還包含其他引用。我不知道如何解決這些問題並將它們放入mhtml中。

也許使用Altova StyleVision將是一個解決方案。

由於我不再嘗試。我關閉了這個線程。

0

這是可能的,但你將不得不自己構建一些東西。

MHTML本質上是一個多部分電子郵件消息。其格式完全由RFC-2557來描述。它可以通過電子郵件消息生成器和序列化器生成。

但是我不知道任何將以編程方式生成MHTML的工具。也要警告,沒有一種標準的網絡存檔格式(至少有四種),只有IE,Opera和Chrome才能讀取MHTML。

可以工作的最簡單的事情就是腳本IE打開你的頁面並保存爲MHTML。

如果你想生成沒有IE的MHTML,那麼你需要創建一個MHTML歸檔器。

隨着歸檔,做最簡單的事情是:

  1. 包括所有可能的外部資源
  2. 確保所有這些資源總是由同一個URL引用
  3. 然後使用匹配的content-location爲那個資源。

這樣你就不需要重寫hrefsrc屬性或解析您的XSL或HTML發現什麼資源包括。

如果有太多可能的外部資源,或者您不能一致地使用路徑,則需要爲資源發現和/或URL重寫進行解析。

在任何情況下,您都可以保存xml + xsl,也可以先生成HTML輸出並保存。

+0

感謝您的回答。這裏有一些問題: 我嘗試用Internet Explorer打開我的頁面,但保存將導致保存xml。 (mht不可選)。因此,我嘗試將它嵌入到IFrame中並保存,也沒有成功。刪除資源後,MHTML無法立即打開。 (見上面的代碼) 關於引用「具有相同url」的資源,你的意思是每個源應該被不同的url引用,對嗎? 由於我通過文件處理本地文件的URL ///似乎沒有工作。是這樣嗎? – 2012-02-23 08:35:09

+0

它看起來像IE只會提供該選項,如果打開的文件是一個HTML文件,所以先做HTML轉換,然後在IE中打開。 「相同的網址」是指例如對於同一個文件「a.png」,不要「a.png」和「./a.png」引用,因爲'內容location'不可不同時匹配。 – 2012-02-23 10:32:39