Silvia: Probleme xsl:copy-of / Hierarchische Nummerierung / img

Hallo!
Bei der Umwandlung einer XML-Instanz über XSLT nach XHTML ergeben sich leider diverse Schwierigkeiten...
Problem 1:
Wenn ich für eine Tabelle, die im XML so codiert ist

<table>
                <tr>
                    <td>LC-Display Anzeige</td>
                    <td>
                        <img scr="xxx.jpg"></img>
                    </td>
                </tr>
                <tr>
                    <td>
                        <img scr="yyy.jpg"></img> 1x kurz drücken
                    </td>
                 </table>

in XSL den Befehl
<xsl:template match="table">

<xsl:copy-of select="."></xsl:copy-of>

xsl:apply-templates/
    </xsl:template>

verwende, bildet er die Tabelle zwar ab, schreibt aber den ganzen Text der Tabelle danach nochmal völlig unformatiert ab.

Problem 2:
Im Browser werden keine Bilder dargestellt, selbst wenn im XHTML Code richtig
 <img scr="xxx.jpg"></img> ausgegeben wird. (Bei manchen Bildern findet er die richtige Quelle, bei manchen nur src="")
Der Editor meldet dann, selbst wenn das src-Attribut korrekt ausgegeben wird:"E [Xerces] Attribute "scr" must be declared for element type "img"."

Und last but not least:
Problem 3:
In der DTD ist bestimmt:
<!ELEMENT chapter (heading, (subheading | chapter)*, (par|model|a|table|img|list)*)>

Im XML werden Überschriften auf zwei Ebenen ineinander geschachtelt.

<chapter>
     <heading id="Ue6">Beschreibung der Funktionen</heading>

<chapter>
        <heading id="Ue6.1">2. Zeit</heading>

Im XSL habe ich nun folgenden Befehl:
  <xsl:template match="heading">

<div class="heading" id="{@id}">
                <h2>
                <xsl:number format="1.1 " count="chapter/heading | chapter/chapter/heading" level="multiple"/>

xsl:apply-templates/
                </h2>
            </div>

</xsl:template>

aber er gibt nicht das gewünschte (sollte so aussehen wie in der heading-ids) aus.

Falls irgendwer eines der Probleme lösen könnte, würde ich mich sehr freuen.
Vielen Dank im Voraus!

  1. Hi,

    Im Browser werden keine Bilder dargestellt, selbst wenn im XHTML Code richtig
    <img scr="xxx.jpg"></img> ausgegeben wird.

    Das ist nicht richtig.
    Du hast ein unbekanntes Attribut scr angegeben.
    Dafür fehlen die Pflicht-Attribute alt und src.

    Da also keine URL zum Bild angegeben ist, ist es auch kein Wunder, daß der Browser kein Bild darstellen kann.

    bei manchen nur src="")
         Attribute "scr" must be declared for element type "img"."

    --------------------^^

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo,
      vielen Dank für die schnelle Antwort!
      Hast du zufällig noch eine Idee, warum dann Bilder in Tabellen nicht erscheinen?
      In XSL rufe ich Tabellen (die im XML auch in HTML-Stil codiert sind) so auf:

      <xsl:template match="table">
            <xsl:copy-of select="."></xsl:copy-of>
            xsl:apply-templates/
          </xsl:template>

      Wenn ich Bilder so codiere:
      <xsl:template match="img">
              <img><xsl:attribute name="src"><xsl:value-of
                  select="@scr" /></xsl:attribute>
                  <xsl:attribute name="alt"></xsl:attribute></img>
          </xsl:template>

      müsste das doch theoretisch funktionieren oder?
      (Was es aber nicht tut :) )
      Liebe Grüße,
      Silvia

      1. Hallo Silvia,

        Wenn ich Bilder so codiere:

        »» <xsl:template match="img">  
        
        >         <img><xsl:attribute name="src"><xsl:value-of  
        >             select="@scr" /></xsl:attribute>  
        >             <xsl:attribute name="alt"></xsl:attribute></img>  
        >     </xsl:template>
        
        

        müsste das doch theoretisch funktionieren oder?

        Vermutlich ist eher @src gemeint. Außerdem lässt sich das einfacher, lesbarer, wartbarer ausdrücken:

        <xsl:template match="img">  
          <img src="{@src}" alt=""/>  
        </xsl:template>
        

        Grüße,
        Thomas