mogot: in base64 kodiertes Bild per xslt visualisieren

Ich möchte Bilder (base64 kodiert) in xml-Dokument einfügen und per xslt (Prozessor Xalan) das XML-Dokument nach HTML transformieren (und zugleich das in base64 kodierte

Bild in das ursprüngliche Format jpg, gif oder png). Ein Element, welches ein Bild beinhalten kann, ist wie folgt im Schema definiert:

<xsl:element name="beispiel">
<xs:complexType mixed="false">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="p"/>
<xs:element ref="div"/>
<xs:element ref="span"/>
<xs:element ref="ul" maxOccurs="unbounded"/>
<xs:element ref="ol" maxOccurs="unbounded"/>
<xs:element ref="table" maxOccurs="unbounded"/>
<xs:element ref="br"/>
<xs:element name="img">
  xs:complexType
    <xs:attribute name="src" type="xs:normalizedString" use="optional"/>
    <xs:attribute name="align" type="alignType" use="optional"/>
    <xs:attribute name="border" type="borderType" use="optional"/>
    <xs:attribute name="height" type="heightType" use="optional"/>
    <xs:attribute name="hspace" type="xs:normalizedString" use="optional"/>
    <xs:attribute name="vspace" type="xs:normalizedString" use="optional"/>
    <xs:attribute name="width" type="widthType" use="optional"/>
  </xs:complexType>
</xsl:element>
</xs:choice>
</xs:complexType>
</xsl:element>

Da das Element "beispiel" nur Html-Element beinhaltet, habe ich sein Template im XSLT-Stylesheet wie folgt definiert:

<xsl:template match="beispiel">
xsl:textBeispiel: </xsl:text>
<xsl:for-each select="node() | @*">
  xsl:copy
    <xsl:apply-templates select="node() | @*"/>
  </xsl:copy>
</xsl:for-each>
</xsl:template>

Für die herkömmlichen Html-elemente wie p, ul, table etc.. wird das Ergebnis korrekt visualisiert.
Meine Frage: es geht um das Unterelement "img"... Es soll Bilder im jpg-, gif- oder png-Format im base64 codiert beinhalten.

Wie soll ich das Stylesheet anpassen, damit die Bilder auch korrekt visualisiert werden (in ihren ursprünglichen Formaten)?

Ich weiß erstmal nicht wie ich die Bilder ins base64 kodieren kann (mal gucken, ob ich Hilfe von Google bekommen; wahrscheinlich gibts ein Tool dafür).

Bezüglich der Anpassung des Stylesheets: ich frage mich, ob dieses Mechanismus (Umtransformieren von kodierten Bildern) in xslt-Prozessor nicht schon eingebaut ist?

Danke!

  1. Hallo,

    Ich weiß erstmal nicht wie ich die Bilder ins base64 kodieren kann (mal gucken, ob ich Hilfe von Google bekommen; wahrscheinlich gibts ein Tool dafür).

    Hier gibt es ein einfaches Kommandozeilentool: http://www.fourmilab.ch/webtools/base64/. Ich habe damit den Base64-Code fuer dieses SVG-Beispiel erstellt: http://www.datenverdrahten.de/svglbc/?code=embedded_images.

    Bezüglich der Anpassung des Stylesheets: ich frage mich, ob dieses Mechanismus (Umtransformieren von kodierten Bildern) in xslt-Prozessor nicht schon eingebaut ist?

    XSLT bietet dafuer keine Unterstuetzung. Es mag Prozessoren geben, die so etwas zusaetzlich koennen, aber mir ist dazu nichts bekannt.

    MfG, Thomas

  2. Hallo,

    Ich möchte Bilder (base64 kodiert) in xml-Dokument einfügen und per xslt (Prozessor Xalan) das XML-Dokument nach HTML transformieren (und zugleich das in base64 kodierte Bild in das ursprüngliche Format jpg, gif oder png).

    Geht nicht.

    Wie soll ich das Stylesheet anpassen, damit die Bilder auch korrekt visualisiert werden (in ihren ursprünglichen Formaten)?

    Verlinke auf das origrinal Bilddatei.

    Bezüglich der Anpassung des Stylesheets: ich frage mich, ob dieses Mechanismus (Umtransformieren von kodierten Bildern) in xslt-Prozessor nicht schon eingebaut ist?

    Nein, ist nicht eigebaut. Grund: schaue dir mal den Quelltext eines Bildes an, dieser beinhaltet alle mögliche Zeichen, so auch nicht XML-Zeichen.
    Das ist der Grund, warum man Bilder in XML direkt, nur als unparsed externe Entity einfügen kann.

    Grüße
    Thomas

    PS: Natürlich kannst du folgende "Technik" verwenden und hoffen, dass deine User alle ein Natscape 4.x benützen: http://aktuell.de.selfhtml.org/artikel/grafik/inline-images/index.htm