Ksimon26: XSLT und mhtml

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

  1. 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

    1. 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

      1. 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

        1. 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>  
          
          
          1. 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