XSLT und mhtml
Ksimon26
- xsl
0 Thomas J.S.0 ksimon260 Thomas J.S.0 Ksimon26
Hallo,
Ich habe eine XML-Datei in der Bilder in Base64 codiert sind. Nun soll mit XSLT eine mhtml erstellt werden damit diese Bilder auch im IE dargestellt werden können. Welche Angaben muss ich zu dem normalen html-Code hizufügen damit es eine mhtml-Datei wird, wie muss ich die Bilder angeben? Kann mir jemand weiterhelfen?
Vielen Dank
Simon
Hallo,
Ich habe eine XML-Datei in der Bilder in Base64 codiert sind.
hm....
Nun soll mit XSLT eine mhtml erstellt werden damit diese Bilder auch im IE dargestellt werden können.
Welche Angaben muss ich zu dem normalen html-Code hizufügen damit es eine mhtml-Datei wird, wie muss ich die Bilder angeben?
Steht alles im:http://tools.ietf.org/html/rfc2557
Grüße
Thomas
Danke für die Antwort.
Nur, wie bekomme ich das in meinen html-Quellcode innerhalb meines XSL-Stylesheet hinein sodass der Browser das als mhtml/mht erkennt?
Bisher bleibt das eine normale html für den IE und die Angaben werden als normaler Text ausgegeben..
Simon
Hallo,
Danke für die Antwort.
Nur, wie bekomme ich das in meinen html-Quellcode innerhalb meines XSL-Stylesheet hinein sodass der Browser das als mhtml/mht erkennt?
Bisher bleibt das eine normale html für den IE und die Angaben werden als normaler Text ausgegeben..
Okay, die RFC zu lesen ist nicht unbedingt ein Vergnügen, aber es steht alles drinn was du wissen willst.
Du musst dein Zielformat mit XSLT so erzeugen, dass das passt, ob du es als output=text oder output=html machstm, wichtig ist, dass die erzeugte Datei dann aich mit der entsprechenden endung *.mht oder *.mhtml gespeichert wird.
Jedefalls muss du dafür sorgen, dass die entsprechenden Header-Angaben in der Datei drinn stehen:
----------------------
MIME-Version: 1.0
Content-Type: multipart/related; boundary="NaechsterTeil"
--NaechsterTeil
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"
<html ...... >
......
</html>
--NaechsterTeil
Content-Location: ..........
Content-Transfer-Encoding: base64
Content-Type: image/gif
R0lGODlhIANqAecAALggIP/// ...... das ganze base64 Zeug ...
----------------------
und so weiter, welche Header es sind, steht im RFC. Auch wie du Bilder etc. auf verschiedene Arten verlinken kannst.
Grüße
Thomas
Habe es immer noch nicht hinbekommen dass der IE meinen mht-Quelltext erkennt. Bin leider ein kleiner Angänger. Ich weiß nicht wo der Fehler ist. Liegt das evtl. am Transformator? Ich benutze XSLTproc
Ich habe es so angegeben
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:ptb="http://www.test.com/ns/1.0">
<xsl:output method="html"/>
<xsl:template match="/">
Mime-Version: 1.0
Content-Type: multipart/related;
type="text/html"
boundary="----=_NextPart"
------=_NextPart
Content-Transfer-Encoding: quoted-printable;
Content-Type: text/html; charset="utf-8"
<html><meta http-equiv="Content-Type" content="text/html" charset="utf-8"/>
<body>
<h1>Metadata Report</h1>
<xsl:apply-templates select="*"/>
</body>
</html>
</xsl:template>
<xsl:template match="ptb:grouping_value">
<h2><xsl:value-of select="."/></h2>
</xsl:template>
<xsl:template match="//ptb:document/ptb:images/ptb:image">
<h2>Image</h2>
<table>
<xsl:apply-templates mode="imagetable" select="//ptb:document/ptb:pages/ptb:page/ptb:images/ptb:image[@image_id=current()/@id]"/>
<xsl:apply-templates mode="imagetable" select="ptb:metadata/ptb:metadatavalue"/>
</table>
</xsl:template>
<xsl:template mode="imagetable" match="//ptb:document/ptb:pages/ptb:page/ptb:images/ptb:image">
<tr>
<td>
<img src="test.png"></img>
</td>
<td>Page <xsl:value-of select="../../ptb:metadata/ptb:metadatavalue[@property_id='ptb_page:nr']"/></td>
</tr>
------=_NextPart
Content-Type: image/png;
charset="utf-8"
Content-Transfer-Encoding: base64
Content-Location: test.png
<xsl:value-of select="../../ptb:metadata/ptb:metadatavalue[@property_id='ptb_page:thumbnail']"/>
</xsl:template>
<xsl:template mode="imagetable" match="//ptb:document/ptb:images/ptb:image/ptb:metadata/ptb:metadatavalue">
<tr>
<td><xsl:value-of select="@property_id"/></td>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:template>
<xsl:template match="*">
<xsl:apply-templates select="*"/>
</xsl:template>
</xsl:stylesheet>
Hallo,
ich habe lieder jetzt nicht die Zeit, dir ausführlicher zu antworten bzw. selbst zu testen, wollte dennoch ein kleines Feedback geben:
Habe es immer noch nicht hinbekommen dass der IE meinen mht-Quelltext erkennt. Bin leider ein kleiner Angänger. Ich weiß nicht wo der Fehler ist. Liegt das evtl. am Transformator? Ich benutze XSLTproc
Ich habe es so angegeben
[code lang=xml]<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:ptb="http://www.test.com/ns/1.0">
<xsl:output method="html"/><xsl:template match="/">
Mime-Version: 1.0
Content-Type: multipart/related;
type="text/html"
boundary="----=_NextPart"------=_NextPart
Content-Transfer-Encoding: quoted-printable;
Content-Type: text/html; charset="utf-8"
Hier würde ich den Text in xsl:text setzen und die Zeilchenumbrüche mit den bekannten Entity setzen. Dann sind deine Zeilen nicht die, die ich dir schon gepostet habe, mache die Umbrüche nur dort, wo sie stehen sollen.
Die weitere Frage ist ob XSLTproc dir die Datei wirkich mit der Endung *.mht bzw. *.mhtml speichert?
Grüße
Thomas