2012-02-22 6 views
1

XML은 XSL을 사용하는 브라우저로 변환 할 수 있습니다. 이이 중 하나를 XML 파일에서 다음 행을 추가 하여 XML 내에서 XSL을 참조하여 수행 할 수 있습니다XML을 XHT에서 MHTML로 변환 HTML

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

오프닝이 XML 파일을 이제 인터넷 탐색기를 이용하여 브라우저에서 올바른 데이터를 표시합니다.

XML 자체는 다른 많은 파일을 참조합니다. 사진은 일부 폴더에 있습니다.

내가 어떻게 진행합니까 하나 개의 MHTML 파일 (*이 .mht)

에 (모든 참조 데이터로) 표시되는 데이터를 저장할

? 그리고 이것이 가능한가?

참고 : 파일은 모두 로컬 서버 (서버가 아님)이며 초기 xml은 테스트 데이터의 결과입니다. mhtml 파일 외부의 다른 데이터에 액세스하지 않고 단일 파일에서 시작한 것처럼 올바르게 XML 파일을 표시하려고합니다. 대답 1시

편집 :

나는 HTML의 iframe 내에 내 XML을 포함했다 :

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

내가 *이 .mht 파일로 IE를 사용하여 저장 한이 :

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

몇 가지 시도를 시도했지만 성공하지 못했습니다. 또한 Francis Avila의 제안으로 나는 성공적으로 해결할 수 없었습니다.

특히 javascript에서 참조하는 코드에는 다른 참조도 포함되어 있습니다. 나는 이것을 어떻게 해결하고 mhtml에 넣을지 몰랐다.

아마도 Altova StyleVision을 사용하면 해결책이 될 것입니다.

이후 더 이상 시도하지 않았습니다. 이 스레드를 닫습니다.

0

이것은 가능하지만 직접 작성해야합니다.

MHTML은 본질적으로 멀티 파트 이메일 메시지입니다. 형식은 RFC-2557으로 완전히 설명됩니다. 전자 메일 메시지 생성기 및 serializer로 생성 할 수 있습니다.

그러나 프로그래밍 방식으로 MHTML을 생성하는 도구는 알지 못합니다. 표준 웹 보관 형식 (적어도 4 개)은 없으며 IE, Opera 및 Chrome 만 MHTML을 읽을 수 있다는 경고를받습니다.

가장 간단한 방법은 IE를 스크립팅하여 페이지를 열고 MHTML로 저장하는 것입니다.

IE없이 MHTML을 생성하려면 MHTML 아카이버를 만들어야합니다.아카이버와

이 할 수있는 가장 간단한 것은하는 것입니다

  1. 가능한 모든 외부 자원을 포함
  2. 후 사용하는 모든 리소스가 항상 같은 URL로 참조하고 있는지 확인 content-location 일치 그 자원을 위해.

포함시킬 것을 자원을 발견하기 위해 XSL 또는 HTML을 hrefsrc 속성을 다시 작성하거나 분석 할 필요가 없습니다 이쪽으로.

외부 리소스가 너무 많거나 경로를 일관되게 사용할 수없는 경우 리소스 검색 및/또는 URL 재 작성을 위해 구문 분석을 수행해야합니다.

어떤 경우든지 xml + xsl을 저장하거나 HTML 출력을 먼저 생성하여 저장할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 여기에 몇 가지 질문 : 나는 Internet Explorer에서 내 페이지를 열어 보았지만 저장하면 XML이 저장됩니다. (mht는 선택 가능하지 않습니다). 따라서, 나는 그것을 IFrame에 임베드하고 그것을 성공시키지 않고 저장하려고 시도했다. MHTML은 리소스를 삭제하자마자 열 수 없습니다. (위의 코드를 참조하십시오) "동일한 URL을 사용하여"리소스를 참조하는 것과 관련하여 각 소스가 다른 URL로 참조되어야 함을 의미합니까? 파일로 로컬 파일 url을 작업하기 때문에 /// 작동하지 않는 것 같습니다. 이게 그거야? –

+0

열려있는 파일이 HTML 파일 인 경우 IE는 해당 옵션 만 제공하므로 HTML 로의 변환을 먼저 수행 한 다음 IE에서 엽니 다. '동일한 URL'은 예를 들어 동일한 파일 "a.png"에 대해서는 "content-location"이 둘 다 일치 할 수 없기 때문에 "a.png"및 "./a.png"로 참조하지 마십시오. –