Jürgi: XML nach HTML Probleme mit Bildern

hallo liebe forumsgemeide,

...ich bin es schon wieder mit ner neuen frage aus der welt von xsl und xml! :o)

ich hab eine xml-datei, die ich gerne per xsl in eine xhtml-seite verwandeln möchte. dabei sollen auch die zugehörigen bilder, die sich in einem ordner befinden, integriert werden sowie ungetaggte inhalte (z.b. Beschreibung:, Bestellnummer:, Preis: --> vgl. xml-datei) mit tags versehen werden - diese kommen als ungetaggte inhalte als XML-Export aus InDesign.

lieben dank im voraus für eure hilfe!
der jürgi

hier der auszug aus meiner xml- und xsl-datei:

<root>  
<waschmaschine>  
<hersteller>AEG</hersteller>  
<typ>LAVAMAT 6261</typ>  
Beschreibung: <beschreibung>Waschvollautomat mit 1200 U/min, Waschwirkungsklasse A, 6 kg Fassungsvermögen.Vollelektronische Ein-Knopf-Programmsteuerung für einfachste Bedienung.</beschreibung>  
 Bestellnummer: <bestellnummer>ae0023154</bestellnummer>  
Preis: <preis currency="Euro">€ 479</preis>  
<preis_visual>€ 479</preis_visual>  
<foto href="file://Bilder/24469_g.jpg"></foto>  
</waschmaschine>  
<waschmaschine>  
<hersteller>Bauknecht</hersteller>  
 <typ>WAT SENSITIVE 32 DI</typ>  
 Beschreibung: <beschreibung>Waschvollautomat mit 1200 U/min. Nur 40 cm breit. Grundprogramme für Koch/Buntwäsche, Pflegeleichtes, Feinwäsche und Wolle.</beschreibung>  
Bestellnummer: <bestellnummer>ba0027434</bestellnummer>  
 Preis: <preis currency="Euro">€ 529</preis>  
<preis_visual>€ 529</preis_visual>  
<foto href="file://Bilder/25725_g.jpg"></foto>  
</waschmaschine>  
<waschmaschine>  
...  
</root>

_____________________________________

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>  
  
  
<xsl:template match="/">  
 <html><head></head><body style="font-family:Verdana; font-size:24px; color:green">  
  <xsl:apply-templates />  
 </body></html>  
</xsl:template>  
  
<xsl:template match="waschmaschine">  
 <p style="font-family:Verdana; font-size:13px; color:black">  
   <xsl:apply-templates />  
 </p>  
</xsl:template>  
  
<xsl:template match="hersteller">  
 <span style="font-weight:bold; color:red"><xsl:value-of select="." /></span>  
</xsl:template>  
  
<xsl:template match="typ">  
<span style="font-weight:bold; color:blue"><xsl:value-of select="." /></span>  
</xsl:template>  
  
<xsl:template match="beschreibung">  
  <span style="font-weight:bold; color:blue"><xsl:value-of select="." /></span>  
</xsl:template>  
  
  
  
<xsl:template match="foto">  
  <img src="Bilder/{concat(Image,'.jpg')}"   />  
</xsl:template>  
  
</xsl:stylesheet>
  1. Hallo Jürgi,

    ich hab eine xml-datei, die ich gerne per xsl in eine xhtml-seite verwandeln möchte. dabei sollen auch die zugehörigen bilder, die sich in einem ordner befinden, integriert werden sowie ungetaggte inhalte (z.b. Beschreibung:, Bestellnummer:, Preis: --> vgl. xml-datei) mit tags versehen werden - diese kommen als ungetaggte inhalte als XML-Export aus InDesign.

    Dem XML-Code nach, erscheint mir dieser Ansatz aussichtsreich:

    <xsl:template match="foto">  
      <img src="{substring-after(@href,'file://')}" alt="Ansicht: {../typ}" />  
    </xsl:template>
    

    Grüße,
    Thomas

    1. hi thomas!

      das hat prima funktioniert - was würde ich nur ohne deine hilfe machen! dankeschön. :-)

      was mir noch recht komisch vorkommt, ist, dass das transformierte html eine menge sonderzeichen entählt (siehe auszug). mit der methode <xsl:strip-space elements="*"/> bin ich bisher nicht weit gekommen, besser gesagt, hat das keinen einfluss auf mein ausgabe-html. gleichzeitig habe ich probiert, das element <preis_visual> zu löschen, da ich für die html-ausgabe dieses element nicht benötige. wenn ich es in meinen template-match ignoriere, wird es trotzdem ausgegeben. liegt das daran, dass ich es nicht in ein template eingebunden habe?!

      lg
      der jürgi

      <html>  
      	<head>  
      		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>  
      	<body style="font-family:Verdana; font-size:12px; color:black">












  
        
      		<p style="font-family:Verdana; font-size:13px; color:black"><span style="font-weight:bold; color:red">AEG</span>
  
      <p>LAVAMAT 6261</p>
  
      Beschreibung:  
      			<p>Waschvollautomat mit 1200 U/min, Waschwirkungsklasse A, 6 kg Fassungsvermögen.Vollelektronische Ein-Knopf-Programmsteuerung für einfachste Bedienung.</p>  
      
Bestellnummer:  
      			<p>ae0023154</p>
  
      Preis:  
      			<p>€ 479</p>€ 479
  
      <img width="200" height="200" src="Bilder/24469_g.jpg" alt="Ansicht: LAVAMAT 6261"><br><hr>
  
      </p>  
      		<p style="font-family:Verdana; font-size:13px; color:black"><span style="font-weight:bold; color:red">Bauknecht</span>  
      
<p>WAT SENSITIVE 32 DI</p>  
      
Beschreibung:  
      			<p>Waschvollautomat mit 1200 U/min. Nur 40 cm breit. Grundprogramme für Koch/Buntwäsche, Pflegeleichtes, Feinwäsche und Wolle.</p>
  
      Bestellnummer:  
      			<p>ba0027434</p>  
      
Preis:  
      			<p>€ 529</p>€ 529
  
      <img width="200" height="200" src="Bilder/25725_g.jpg" alt="Ansicht: WAT SENSITIVE 32 DI"><br><hr>
  
      </p>  
        
      
      

      Hallo Jürgi,

      ich hab eine xml-datei, die ich gerne per xsl in eine xhtml-seite verwandeln möchte. dabei sollen auch die zugehörigen bilder, die sich in einem ordner befinden, integriert werden sowie ungetaggte inhalte (z.b. Beschreibung:, Bestellnummer:, Preis: --> vgl. xml-datei) mit tags versehen werden - diese kommen als ungetaggte inhalte als XML-Export aus InDesign.

      Dem XML-Code nach, erscheint mir dieser Ansatz aussichtsreich:

      <xsl:template match="foto">

      <img src="{substring-after(@href,'file://')}" alt="Ansicht: {../typ}" />
      </xsl:template>

      
      >   
      > Grüße,  
      > Thomas
      
      1. Hallo Jürgi,

        was mir noch recht komisch vorkommt, ist, dass das transformierte html eine menge sonderzeichen entählt (siehe auszug).

        Sieht nach einem Zeichenkodierungsproblem aus. Ist das Ausgabe-encoding bei xsl:output deklariert? Lt. meta-Element soll es UTF-8 sein, schreibe diese Angabe also auch nach <xsl:output method="html" encoding="UTF-8"/>.

        Grüße,
        Thomas

        1. @ thomas und gunnar!

          ich habe alle dokumente (xml und xsl) als utf-8 deklariert und trotzdem kommen mir immer diese sonderzeichen in die ausgabe! hab auch schon ein anderes encoding ausprobiert, leider mit dem gleichen ergebnis!

          grüßle
          der jürgi

          Hallo Jürgi,

          was mir noch recht komisch vorkommt, ist, dass das transformierte html eine menge sonderzeichen entählt (siehe auszug).

          Sieht nach einem Zeichenkodierungsproblem aus. Ist das Ausgabe-encoding bei xsl:output deklariert? Lt. meta-Element soll es UTF-8 sein, schreibe diese Angabe also auch nach <xsl:output method="html" encoding="UTF-8"/>.

          Grüße,
          Thomas

          1. Hallo Jürgi,

            ich habe alle dokumente (xml und xsl) als utf-8 deklariert und trotzdem kommen mir immer diese sonderzeichen in die ausgabe! hab auch schon ein anderes encoding ausprobiert, leider mit dem gleichen ergebnis!

            Es hieß, dass die XML-Dokumente aus InDesign exportiert werden. Insofern wäre dort die Ausgabekodierung zu prüfen.

            Grüße,
            Thomas

            1. :o) ich hab's nochmal neu exportiert (mit gleicher utf-8 kodierung) und jetzt sind die sonderzeichen weg! keine ahnung, wo die hergekommen sind! ;-)

              danke nochmal für die hilfe...

              kannst du mir noch sagen, wie ich die <preis_visual> sache wegbekomme?

              grüßle
              der jürgi

              Hallo Jürgi,

              ich habe alle dokumente (xml und xsl) als utf-8 deklariert und trotzdem kommen mir immer diese sonderzeichen in die ausgabe! hab auch schon ein anderes encoding ausprobiert, leider mit dem gleichen ergebnis!

              Es hieß, dass die XML-Dokumente aus InDesign exportiert werden. Insofern wäre dort die Ausgabekodierung zu prüfen.

              Grüße,
              Thomas

              1. Hallo Jürgi,

                kannst du mir noch sagen, wie ich die <preis_visual> sache wegbekomme?

                <xsl:template match="preis_visual"/>

                Grüße,
                Thomas

                1. super! lieben dank, nochmal!

                  hab nen schönen tag...

                  grüße
                  der jürgi

                  Hallo Jürgi,

                  kannst du mir noch sagen, wie ich die <preis_visual> sache wegbekomme?

                  <xsl:template match="preis_visual"/>

                  Grüße,
                  Thomas

      2. @@jürgi:

        nuqneH

        was mir noch recht komisch vorkommt, ist, dass das transformierte html eine menge sonderzeichen entählt (siehe auszug).

        Dein generiertes HTML ist UTF-8-codiert. (Das gibst du ja auch mit '<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>' an.)

        Du solltest es auch als UTF-8-codiertes Dokument weiterverarbeiten/ausliefern.

        Qapla'

        --
        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
        1. Hallo Gunnar,

          Dein generiertes HTML ist UTF-8-codiert. (Das gibst du ja auch mit '<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>' an.)

          Hatte ich gar nicht gesehen. Hier ist "1.0" auch fehlerhaft, außer es soll wirklich HTML 1.0 sein ;-). Also entweder "4.01" verwenden oder bei "1.0" belassen und für XHTML method="xml" bzw. unter XSLT 2.0 "xhtml" verwenden.

          Grüße,
          Thomas