Конвертировать HTML, созданный в XML, XSL, в MHTML - PullRequest
1 голос
/ 22 февраля 2012

XML может быть преобразован браузером с использованием XSL.Это можно сделать, ссылаясь на xsl в xml, добавив следующую строку в xml-файл:

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

Открытие этого xml-файла с помощью Internet Explorer покажет правильные данныев браузере.

XML сам ссылается на многие другие файлы, например, изображения, которые находятся в некоторой папке.

Я хочу сохранить отображаемые данные (со всеми ссылочными данными) в одномMHTML-файл (* .mht)

Как мне продолжить?И возможно ли это?

Примечание. Все файлы являются локальными (не на сервере), а исходный xml является результатом тестовых данных.Я просто хочу, чтобы мой XML-файл отображался правильно, как и прежде, из одного файла без доступа к другим данным вне mhtml-файла.

Редактировать при ответе 1:

Iвключил мой xml в iFrame HTML:

<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"": // C: \ Documents and Settings \ STEFFAN \ Desktop \ Test \ SUPL_TCLog.xml "был выведен IE.

Но эта локальная ссылка не кажетсяработать для mhtml, который отстой, и, следовательно, я использовал случайную замену (http://www.m.de/name.xml) для него. (это прекрасно работает для файлов изображений). Изменение его в соответствии с открытием файла mht запустит загрузку файла xml. Но этоне хотел. Я хочу, чтобы это отображалось.

Чего не хватает?

Ответы [ 2 ]

0 голосов
/ 22 октября 2012

Я попробовал несколько попыток, но безуспешно.Также предложение Фрэнсиса Авила, которое я не смог решить успешно.

Особенно код, на который ссылается javascript, также содержал другие ссылки.Я не знал, как их решить и поместить в mhtml.

Может быть, использование Altova StyleVision было бы решением.

Поскольку я больше не пытался.Я закрываю эту тему.

0 голосов
/ 22 февраля 2012

Это возможно, но вам придется создавать некоторые вещи самостоятельно.

MHTML по сути является составным почтовым сообщением.Его формат полностью описан как RFC-2557 .Он может генерироваться генераторами сообщений электронной почты и сериализаторами.

Однако я не знаю ни одного инструмента, который будет генерировать MHTML программным способом.Также предупреждаем, что не существует единого стандартного формата веб-архива (их как минимум четыре), и только IE, Opera и Chrome могут читать MHTML.

Самая простая вещь, которая может работать, - это сценарий IEчтобы открыть страницу и сохранить ее как MHTML.

Если вы хотите сгенерировать MHTML без IE, вам нужно создать архиватор MHTML.

С помощью архиватора самое простое, что нужно сделать, этоto:

  1. включить все возможные внешние ресурсы
  2. убедиться, что на все эти ресурсы всегда ссылается один и тот же URL
  3. , а затем использовать соответствующий content-location для этого ресурса.

Таким образом, вам не нужно переписывать атрибуты href и src или анализировать xsl или html, чтобы узнать, какие ресурсы включить.

Если их слишком многовозможные внешние ресурсы или вы не можете использовать пути последовательно, вам потребуется выполнить синтаксический анализ для обнаружения ресурсов и / или перезаписи URL.

В любом сценарии вы можете либо сохранить xml + xsl, либо создатьСначала выведите HTML-код и сохраните его.

...