Конвертировать HTML, созданный XML, XSL, в MHTML
XML может быть преобразован браузером с использованием XSL. Это может быть сделано путем ссылки на xsl в xml, добавив следующую строку в xml-файл:
<?xml-stylesheet type='text/xsl' href='sample.xsl'?>
Открытие этого XML-файла с помощью Internet Explorer покажет правильные данные в браузере.
Сам XML ссылается на многие другие файлы, например, картинки, которые находятся в какой-то папке.
Я хочу сохранить отображаемые данные (со всеми ссылочными данными) в одном файле MHTML (*.mht)
Как мне поступить? И возможно ли это?
Примечание. Все файлы являются локальными (не на сервере), и исходный xml является результатом тестовых данных. Я просто хочу, чтобы мой XML-файл отображался правильно, как и прежде, из одного файла без доступа к другим данным вне mhtml-файла.
Изменить после ответа 1:
Я включил мой 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" ", то IE выводит //C:\Documents and Settings\STEFFAN\Desktop\Test\SUPL_TCLog.xml".
Но эта локальная ссылка, похоже, не работает для mhtml, что отстой, и поэтому я использовал случайную замену (http://www.m.de/name.xml) для нее. (это прекрасно работает для файлов изображений). Если его изменить, открыв файл mht, начнется загрузка файла xml. Но это не нужно. Я хочу, чтобы это отображалось.
Чего не хватает?
2 ответа
Я пытался сделать несколько попыток, но безуспешно. Также предложение Фрэнсиса Авила я не смог решить успешно.
Особенно код, на который ссылается javascript, также содержит другие ссылки. Я не знал, как решить эти проблемы и поместить их в mhtml.
Возможно использование Altova StyleVision было бы решением.
Так как я больше не пытался. Я закрываю эту ветку.
Это возможно, но вы должны будете сами что-то построить.
MHTML - это, по сути, многочастное электронное сообщение. Его формат полностью описан в RFC-2557. Это может быть сгенерировано генераторами сообщений электронной почты и сериализаторами.
Однако я не знаю ни одного инструмента, который будет генерировать MHTML программно. Также предупреждаем, что не существует единого стандартного формата веб-архива (их как минимум четыре), и только IE, Opera и Chrome могут читать MHTML.
Самое простое, что может сработать, - это написать в IE скрипт, чтобы открыть страницу и сохранить ее как MHTML.
Если вы хотите сгенерировать MHTML без IE, вам нужно создать архиватор MHTML.
С архиватором самое простое:
- включить все возможные внешние ресурсы
- убедитесь, что все эти ресурсы всегда ссылаются на один и тот же URL
- затем используйте соответствующий
content-location
для этого ресурса.
Таким образом, вам не нужно переписывать href
а также src
атрибуты или анализ вашего xsl или html, чтобы узнать, какие ресурсы включить.
Если существует слишком много возможных внешних ресурсов или вы не можете использовать пути последовательно, вам потребуется выполнить анализ для обнаружения ресурсов и / или перезаписи URL.
В любом случае вы можете либо сохранить xml+xsl, либо сначала сгенерировать вывод HTML и сохранить его.