Klaus-Werner Müller: XSL/XML und Umlaute

in meinem XSL-Stylesheet "includiere" ich eine XML-Datei durch

<xsl:apply-templates select="document(footer.xml')"/>

diese Datei sie wie folgt aus

<?xml version="1.0" encoding="UTF-8"?>
<div id="footer">
 <span class="left">
  &amp;copy; 2004 Klaus-Werner M&amp;uuml;ller - All rights reserved.
 </span>
 <span class="right">
  Letzte &amp;Auml;nderung: <my_lastupdate/>
 </span>
</div>

das Stylesheet erzeugt eine html-Datei
der aus dem Footer generierte Teil sie dann so aus

<div id="footer">
 <span class="left">
  &amp;copy; 2004 Klaus-Werner M&amp;uuml;ller - All rights reserved.
 </span>
 <span class="right">
  Letzte &amp;Auml;nderung: 20. Mai 2004
 </span>
</div>

das stellt natürlich der Browser nicht so da, wie ich es will

was mache ich falsch ?

  1. Hallo,

    diese Datei sie wie folgt aus

    <?xml version="1.0" encoding="UTF-8"?>
    <div id="footer">
     <span class="left">
      &amp;copy; 2004 Klaus-Werner M&amp;uuml;ller - All rights reserved.
     </span>
     <span class="right">
      Letzte &amp;Auml;nderung: <my_lastupdate/>
     </span>
    </div>

    Das sollte eher so aussehen:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE div [
    <!ENTITY Auml "&#196;">
    <!ENTITY uuml "&#252;">
    <!ENTITY copy "&#169;">
    ]>
    <div id="footer">
     <span class="left">
      &copy; 2004 Klaus-Werner M&uuml;ller - All rights reserved.
     </span>
     <span class="right">
      Letzte &Auml;nderung: <my_lastupdate/>
     </span>
    </div>

    Oder endcoding="ISO-8859-1" verwenden und die Umlaute/Sonderzeichen direkt angeben.

    MfG, Thomas

    --
    SVG - Learning By Coding
    http://svglbc.datenverdrahten.de/
    1. danke
      die generierte html-Datei sieht dann so aus

      <div id="footer">
       <span class="left">
        © 2004 Klaus-Werner Müller - All rights reserved.
       </span>
       <span class="right">
        Letzte Änderung: 20. Mai 2004
       </span>
      </div>

      aber das können die Browser leider so nicht anzeigen
      sie müsste so aussehen

      <div id="footer">
       <span class="left">
        &copy; 2004 Klaus-Werner M&uuml;ller - All rights reserved.
       </span>
       <span class="right">
        Letzte &Auml;nderung: 20. Mai 2004
       </span>
      </div>

      btw. UTF-8 muss sein

      mfg
      K-W

      1. Hallo,

        danke
        die generierte html-Datei sieht dann so aus

        <div id="footer">
         <span class="left">
          © 2004 Klaus-Werner Müller - All rights reserved.
         </span>
         <span class="right">
          Letzte Änderung: 20. Mai 2004
         </span>
        </div>

        aber das können die Browser leider so nicht anzeigen

        Welche Exotenbrowser sind das?

        Versuche es alternativ im Stylesheet mit <xsl:output encoding="Zeichensatz"/>

        MfG, Thomas

        --
        SVG - Learning By Coding
        http://svglbc.datenverdrahten.de/
        1. keine Exoten-Browser, der Internet Explorer
          die ganze Seite sieht wie folgt aus

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd">
          <html><head><title>myTitle</title><link type="text/css" rel="stylesheet" href="common/styles/default.css" /></head><body><h1>myTitle</h1><div id="footer">
           <span class="left">
            © 2004 Klaus-Werner Müller - All rights reserved.
           </span>
           <span class="right">
            Letzte Änderung: 20. Mai 2004
           </span>
          </div></body></html>

          encoding in xsl:output ändert nihts

          K-W

          Hallo,

          danke
          die generierte html-Datei sieht dann so aus

          <div id="footer">
          <span class="left">
            © 2004 Klaus-Werner Müller - All rights reserved.
          </span>
          <span class="right">
            Letzte Änderung: 20. Mai 2004
          </span>
          </div>

          aber das können die Browser leider so nicht anzeigen

          Welche Exotenbrowser sind das?

          Versuche es alternativ im Stylesheet mit <xsl:output encoding="Zeichensatz"/>

          MfG, Thomas

          1. Hi,

            <?xml version="1.0" encoding="UTF-8"?>

            Diese Encoding-Angabe

            © 2004 Klaus-Werner Müller - All rights reserved.
              Letzte Änderung: 20. Mai 2004

            paßt nicht zur tatsächlichen Kodierung.

            cu,
            Andreas

            --
            MudGuard? Siehe http://www.Mud-Guard.de/
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. das ist mir schon klar
              das Problem ist, wie veranlasse ich das Gespann XSL/XML dazu
              das richtige zu generieren

              mfg
              K-W

              Hi,

              <?xml version="1.0" encoding="UTF-8"?>

              Diese Encoding-Angabe

              © 2004 Klaus-Werner Müller - All rights reserved.
                Letzte Änderung: 20. Mai 2004

              paßt nicht zur tatsächlichen Kodierung.

              cu,
              Andreas

              1. Hi,

                das Problem ist, wie veranlasse ich das Gespann XSL/XML dazu
                das richtige zu generieren

                indem man beim xsl:output-Element im Encoding-Attribut die gewünschte Codierung angibt.
                Und, falls es überhaupt erwünscht ist, die XML-Deklaration auch von XSL erzeugen läßt (omit-xml-declaration-Attribut).

                cu,
                Andreas

                --
                MudGuard? Siehe http://www.Mud-Guard.de/
                Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                1. das Encoding-Attribut ändert nichts, hab ich probiert

                  das Problem ist wohl meine zweistufige Architektur
                  (externes xml in Stylesheet includieren per
                  <xsl:apply-templates select="document ...."/>)
                  mache ich das ganze inline im Stylesheet selbst, klappt ja alles

                  sag jetzt nicht, dann mach es doch so ;-)

                  ich brauche eine modulare Struktur, damit Komponenten
                  (zum Beispiel der footer in diesen Beispiel) geändert werden können, ohne zu wissen, wie sie verwendet werden

                  gruss
                  K-W

                  Hi,

                  das Problem ist, wie veranlasse ich das Gespann XSL/XML dazu
                  das richtige zu generieren

                  indem man beim xsl:output-Element im Encoding-Attribut die gewünschte Codierung angibt.
                  Und, falls es überhaupt erwünscht ist, die XML-Deklaration auch von XSL erzeugen läßt (omit-xml-declaration-Attribut).

                  cu,
                  Andreas

                  1. Hallo,

                    das Problem ist wohl meine zweistufige Architektur
                    (externes xml in Stylesheet includieren per
                    <xsl:apply-templates select="document ...."/>)

                    Nein. Das Problem liegt wo anderes:
                    ----------- zitat -------------------------
                    in meinem XSL-Stylesheet "includiere" ich eine XML-Datei durch

                    <xsl:apply-templates select="document(footer.xml')"/>

                    diese Datei sie wie folgt aus

                    <?xml version="1.0" encoding="UTF-8"?>
                    <div id="footer">
                     <span class="left">
                      &amp;copy; 2004 Klaus-Werner M&amp;uuml;ller - All rights reserved.
                     </span>
                     <span class="right">
                      Letzte &amp;Auml;nderung: <my_lastupdate/>
                     </span>
                    </div>
                    ----------- /zitat -------------------------

                    Man kann jetzt zu aller erst darüber steiten ob das eine XML-Datei  sei oder nicht.
                    Aber wenn du schon HTML hast, wozu dann das <xsl:apply-templates select="document(footer.xml')"/> und warum nicht
                    <xsl:copy-of select="document(footer.xml')/*"/> ?

                    Dann stellt sich dir Frage warum du sowas verwendest: "M&amp;uuml;ller" ?
                    Wenn du schon Unicode angibst, kannst du auch Unicode notieren:
                     ü = &#252; = &#xFC;

                    Dann stellt sich dir Frage warum folgende ausgabe _falsch_ sein sollte:

                    <div id="footer">
                     <span class="left">
                      © 2004 Klaus-Werner Müller - All rights reserved.
                     </span>
                     <span class="right">
                      Letzte Änderung: 20. Mai 2004
                     </span>
                    </div>

                    diese dagegen richt?

                    <div id="footer">
                     <span class="left">
                      &copy; 2004 Klaus-Werner M&uuml;ller - All rights reserved.
                     </span>
                     <span class="right">
                      Letzte &Auml;nderung: 20. Mai 2004
                     </span>
                    </div>

                    Grüße
                    Thomas

          2. Hallo,

            encoding in xsl:output ändert nihts

            Folgt <xsl:output ... /> direkt nach <xsl:stylesheet ...> und welcher XSLT-Prozessor wird verwendet? Xalan ignoriert das beispielsweise, wenn ich mich richtig erinnere.

            Ansonsten bliebe auch noch dieses Ausgangsdokument:

            <?xml version="1.0" encoding="UTF-8"?>
            <div id="footer">
             <span class="left">
              &#169; 2004 Klaus-Werner M&#252;ller - All rights reserved.
             </span>
             <span class="right">
              Letzte &#196;nderung: <my_lastupdate/>
             </span>
            </div>

            MfG, Thomas

            --
            SVG - Learning By Coding
            http://svglbc.datenverdrahten.de/