Klaus: innerHTML in xhtml mit XML mime-type

Klar, die frage gab's schon oft! Ist mir klar. Aber ich hab mir den ganzen Tag nen Wolf geyahoot und kriegs trotzdem nicht hin!

Ich habe einen String wie z.B. "<li>abc</li><li>test</li>" (wird dynamisch erstellt). Diesen will ich nun darstellen. Aber per innerHTML (also das die li's als Listenpunkte interpretiert werden). Leider klappt das nicht in xhtml.
Natürlich kann ich das ganze auch per DOM einfügen, allerdings dann wierder nur als Text.

Danke für Eure Hinweise,
Klaus

  1. Ich habe einen String wie z.B. "<li>abc</li><li>test</li>" (wird dynamisch erstellt). Diesen will ich nun darstellen. Aber per innerHTML (also das die li's als Listenpunkte interpretiert werden). Leider klappt das nicht in xhtml.

    Wieso sollte das nicht klappen?

    Natürlich kann ich das ganze auch per DOM einfügen, allerdings dann wierder nur als Text.

    und was hindert dich daran die HTML Objekte zu erzeugen?

    Struppi.

  2. Hi,

    Ich habe einen String wie z.B. "<li>abc</li><li>test</li>" (wird dynamisch erstellt). Diesen will ich nun darstellen. Aber per innerHTML (also das die li's als Listenpunkte interpretiert werden). Leider klappt das nicht in xhtml.

    Warum sollte das nicht klappen?

    Ich nehme an, du redest von einer Verarbeitung des ganzen durch den Browser als XML?
    Das ältere Browserversionen dabei kein innerHTML anwenden mochten, ist mir bekannt. Aber inzwischen sollte das m.W. gefixt sein.

    Natürlich kann ich das ganze auch per DOM einfügen, allerdings dann wierder nur als Text.

    Wenn du DOM-Methoden nutzen willst, dann musst du das parsen des Strings und erstellen von Elementen daraus natürlich selber übernehmen.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Hi,

      Ich nehme an, du redest von einer Verarbeitung des ganzen durch den Browser als XML?

      Huch, ja - steht ja im Titel.

      MfG ChrisB

      --
      “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  3. Hi Klaus!

    Ich habe einen String wie z.B. "<li>abc</li><li>test</li>" (wird dynamisch erstellt). Diesen will ich nun darstellen. Aber per innerHTML (also das die li's als Listenpunkte interpretiert werden). Leider klappt das nicht in xhtml.
    Natürlich kann ich das ganze auch per DOM einfügen, allerdings dann wierder nur als Text.

    Wie kommt der String zustande? Kannst Du vorher schon ansetzen oder _musst_ Du mit einem fertigen String arbeiten? Im ersten Fall kannst Du doch die Listeneinträge einzeln per http://de.selfhtml.org/javascript/objekte/node.htm#append_child@title=appendChild() einhängen.

    mfG
    Benjamin

    --
    For animals, the entire universe has been neatly divided into things to (a) mate with, (b) eat, (c) run away from, and (d) rocks.
    1. Wie kommt der String zustande? ...

      Für alle: der String entsteht auf PHP-Seite. Dieser wird dann per URL an die xml Seite übergeben mit dessen Hilfe (und per xslt) dann das xml neu visualisiert wird.

      1. zum Nachvollziehen hier mal 'n kleiner Schnipsel:
        (der String "Neu" ist dann halt der vorgegebene string).

        test.xslt

        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
          <xsl:output method="html" indent="yes" media-type="application/xhtml+xml" />  
          
          
        	<xsl:template match="/">  
          <html>  
              <head>  
                <title>test</title>  
                   <script type="text/javascript">  
                      var Neu = "a<b>b</b>c";  
                      function Aendern () {  
                        document.getElementById('meinAbsatz').innerHTML = Neu;  
                      }  
                  </script>  
              </head>  
              <body>  
                 <p id="meinAbsatz">Text</p>  
                 <a href="javascript:Aendern()">Anderer Text</a>  
                <xsl:apply-templates mode="test" select="/" />  
              </body>  
          </html>  
          </xsl:template>  
          
        <xsl:template mode="test" match="/">  
                      <xsl:value-of select="."/>  
                      <br/>  
                      <b><xsl:value-of select="."/></b>  
        </xsl:template>  
          
        </xsl:stylesheet>   
        

        test.xml

        <?xml version="1.0" encoding="utf-8"?>  
        <?xml-stylesheet type="text/xsl" href="test.xslt" ?>  
        <root>  
          
          <p id="test">test</p>  
          
        </root>
        
        1. im IE läuft's, im FF kommt folgendes:

          Fehler: uncaught exception: [Exception... "Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIDOMNSHTMLElement.innerHTML]" nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame :: http://localhost/test.xml :: Aendern :: line 3" data: no]

          1. Hallo,

            Wow, um sieben Ecken... hat das einen bestimmten Grund?

            FF braucht doch ein Plugin für XML+XSL, oder?
            Wird denn die Seite im FF korrekt angezeigt, wenn du die JS-Funktion weglässt?

            Versuch' mal, alles JavaScript in einen CDATA-Abschnitt zu stecken. Könnte mir vorstellen, dass sich die "<" im JS-Code störend auswirken.

            Gruß, Don P

            1. Wow, um sieben Ecken... hat das einen bestimmten Grund?

              Wie geht's leichter? (Ich will auf jeden Fall nur den xml-Code laden und den Rest eben per xslt und js dazubasteln.

              FF braucht doch ein Plugin für XML+XSL, oder?

              Nö.

              Wird denn die Seite im FF korrekt angezeigt, wenn du die JS-Funktion weglässt?

              Ja.

              Versuch' mal, alles JavaScript in einen CDATA-Abschnitt zu stecken. Könnte mir vorstellen, dass sich die "<" im JS-Code störend auswirken.

              Hatte ich auch schon. Allerdings werden dann die Tags (z.B. <li>) nicht interpretiert und kommen nur als Text.

              Klaus

              1. Hallo,

                Wow, um sieben Ecken... hat das einen bestimmten Grund?
                Wie geht's leichter? (Ich will auf jeden Fall nur den xml-Code laden und den Rest eben per xslt und js dazubasteln.

                Das meine ich ja mit den sieben Ecken: XML per XSLT zu HTML und dann noch per JS zu anderem HTML... sowas habe ich noch nie gesehen. Dürfte nicht besonders perfomant sein und sollte als Browserquälerei bestraft werden ;)

                Nein im Ernst: Da weiß ich auch nicht weiter. Kannst du nicht den XML-XSLT-Teil vom Server erledigen lassen und nur (X)HTML ausliefern?

                Gruß, Don P