Archivlink: javarea.de Forum > JavaScript > Probleme mit content-type: application/xhtml+xml;
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > Probleme mit content-type: application/xhtml+xml;
Pages: [1]
2
3
... nächste »
... Letzte »
| geschrieben von Micha am 12.05.2005 - 20:21 |
Hallo Leute,
ich habe ein kleines Problem, bei dem ich momentan nicht so recht verstehe, warum es nicht geht.
Hintergrund: Ich habe einen kleinen Kalender in JS geschrieben, der via innerHTML an die Stelle gesetzt wird, an der er erscheinen soll.
Nun habe ich selbigen umgeschieben, um zum etwas mehr vom DOM zu verstehen.
Mein Problem ist nun folgendes: Der Kalender an sich kommt korrekt, wenn ich meine Seite als text/html ausgebe. Ändere ich den content-type in application/xhtml+xml; so wird die Tabelle, in der sich der Kalender befindet in eine Zeile geschrieben.
Frage ist nun, warum ist das so?
Wie gesagt, der einzige Unterschied ist, der content-typ (und das bei der xhtml-Version das selbe(!) script ausgelagert ist)
Danke Micha |
| geschrieben von Matneu am 13.05.2005 - 17:27 |
| Zitat | | | Original geschrieben von derletztekick am 12.05.2005 - 20:21
Mein Problem ist nun folgendes: Der Kalender an sich kommt korrekt, wenn ich meine Seite als text/html ausgebe. Ändere ich den content-type in application/xhtml+xml; so wird die Tabelle, in der sich der Kalender befindet in eine Zeile geschrieben.
Frage ist nun, warum ist das so? |
Theoretische Überlegung: Ich würde denken, dass der Browser die XML-Version wirklich als XML-Version auswerten will. Da Du keine XSL-FO angegeben hast würde ich als Browser nicht wissen, wie die Objekte darzustellen sind.
Die angegebene CSS-Datei funktioniert ja nur bei XHTML-Dokumenten, aber nicht bei allgemeinen XML-Dokumenten. Genau dafür gibt es ja XSL-FO.
Man berichtige mich bitte, wenn ich total falsch liege.
So far...
Matthias |
| geschrieben von Micha am 13.05.2005 - 17:38 |
Hi
Ich habe auch schon versucht die CSS so einzubinden - erfolglos:
<?xml-stylesheet type="text/css" href="http://www.derletztekick.com/style.css" ?>
Den header lass ich wie PHP auslesen:
| HTML-Quelltext | 1:
2:
3:
4:
5:
| if ( stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") ) {
header("Content-type: application/xhtml+xml");
} else {
header("Content-type: text/html");
} |
Somit erwarte ich von meinem Browser, das er es als XML ausließt. Das JavaScript an sich funktioniert ja auch - der Monat, die Tage usw. werden dargestellt. Auch das wechseln zwischen den Monaten funktioniert auch. Zieh ich mir den Kalender (Strg+A) in Word oder einen anderen Editor, der Tabellen darstellen kann. Dieser zeigt mir, das es eine Tabelle gibt - diese auch existiert, auch die Zellen alle Vorhanden sind usw.... Ich versteh das nicht... :-)
Weitere Anregungen sind natürlich gern gesehen^^
Micha |
| geschrieben von Matneu am 13.05.2005 - 18:39 |
| Zitat | | | Original geschrieben von derletztekick am 13.05.2005 - 17:38
Ich habe auch schon versucht die CSS so einzubinden - erfolglos:
<?xml-stylesheet type="text/css" href="http://www.derletztekick.com/style.css" ?> |
Hast Du eigentlich gelesen, was ich geschrieben habe? CSS ist Stylesheet für HTML. Du hast mitlerweile aber eine XML-Seite und die Stylesheets dafür sind XSL-* (XSL-T und XSL-FO).
| Zitat | | | Somit erwarte ich von meinem Browser, das er es als XML ausließt. Das JavaScript an sich funktioniert ja auch - der Monat, die Tage usw. werden dargestellt. Auch das wechseln zwischen den Monaten funktioniert auch. Zieh ich mir den Kalender (Strg+A) in Word oder einen anderen Editor, der Tabellen darstellen kann. Dieser zeigt mir, das es eine Tabelle gibt - diese auch existiert, auch die Zellen alle Vorhanden sind usw.... Ich versteh das nicht... :-) |
Wo ist Dein Problem? Der Browser (zumindest meiner, Opera 8) wertet Deine Datei als XML-Dokument aus. Dabei kommt eine Zeile heraus mit den Daten. Da Du nirgends gesagt hast, wie die Daten (die graphische Ausgabe) auszusehen haben gibt der Browser sie natürlich als reinen Text wieder, was absolut richtig ist. Eben wie der Browser eine HTML-Seite als reinen Text wiedergeben würde, in der kein CSS angegeben ist.
Was Du brauchst, um die graphische Ausgabe im Browser zu steuern ist eine XSL-FO-Definition. Ob Du auch noch eine Konvertierung brauchst (XSL-T) weiss ich nicht, denke aber nicht.
Ergänzung: Ich könnte mir auch vorstellen, dass die bisherige DTD nicht wirklich sinnvoll und dem Browser nützlich ist. Und der Inhalt der Datei ist vermutlich ebenso wenig sinnvoll. Sinnvoller wäre ein Inhalt á la
| HTML-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
| <?xml version="1.0" encoding="ISO-8859-1"?>
<calender>
<header>
<day>13</day>
<month>Mai</month>
<year>2005</year>
<dayList>
<days>
<day>Mo</day>
<day>Di</day>
<day>Mi</day>
<day>Do</day>
<day>Fr</day>
<day>Sa</day>
<day>So</day>
</days>
</dayList>
</header>
<week no="1">
<days>
<day></day>
<day></day>
<day></day>
<day></day>
<day></day>
<day></day>
<day>1</day>
</days>
</week>
<week no="2">
<days>
<day>2</day>
<day>3</day>
<day>4</day>
<day>5</day>
<day>6</day>
<day>7</day>
<day>8</day>
</days>
[..]
</week>
</calender> |
Zumindest sinngemäss würde ich es so im XML-Schema machen.
So far...
Matthias |
| geschrieben von Micha am 13.05.2005 - 19:59 |
Wenn ich aber meinem Browser sage, zeichne eine Tabelle
<tabel>
<tr>
<td></td><td></td>
...
</tr>
...
</table>
Dann benötige ich dafür keine CSS und er weiss von sich aus, dass er Spalten und Zeilen (Zellen) anlegen muss. Er weiss nicht, wie sie aussehen soll, aber er kennt die Elementeigenschaften und weiss, das tr eine neue Zeile ist usw.
Ich lasse meine ganze Seite als application/xhtml+xml ausgeben (nur der Kalender macht stress)
Dort sind auch Tabellen drin und die werden auch als solche dargestellt und auch durch eine CSS in ihrem Design entsprechend dargestellt.
Versteh mich bitte nicht falsch, aber warum gehts dort (auf meiner Seite) und nur bei dieser einen Datei nicht?
Schöne Grüße Micha |
| geschrieben von Pablo am 13.05.2005 - 22:22 |
@Matneu: Der Text wo du glaubst, dass er in einer Zeile ist, ist _wirklich_ eine Tabelle. Markier mal alles und füg den Text in den Notepad ein. Die Tabellenstruktur ist da.
@Michael/dlk: http://home.arcor.de/terrikay/tutor....xhtml.html Die Kontrolle da ist besser, da deine einfache XML-Kompatibilitäts-Kontrolle in manchen Browsern fehlerhaft ist.
Gruß,
Pablo |
| geschrieben von Micha am 13.05.2005 - 22:55 |
Hi Pablo, okay, das Script kann ich ja noch verändern; löst mein momentanes Problem aber nicht wie Du ja weisst. Der IE bekommt ja sein text/html Opera und die Geckofamilie dagegen Xhtml. Ein NS6 habe ich leider nicht mehr und vertraue mal der Seite von Dir. Die 7er Reihe und der neue 8ter kann es aber bereits und das sind meine Testbrowser...
Keiner von denen (bis auf der IE wegen falschem Mime Typ) zeigt den Kalender korrekt an. Die Tabelle existiert zwar aber sie steht in einer Zeile. Das JS greift somit auch, sonst wäre nichts zu sehen.
Ich kann mir auch niht vorstellen, dass das DOM in XHTML nicht mehr "gültig" ist - an welchen Standard soll ich mich denn sonst halten?!
Ich will auhc keine Grundsatzdiskussion, warum machst Du es nicht so oder so, sondern eine Erklärung oder gar Lösung, warum es nicht geht. Es kann ja nicht die Lösung sien, sich neuem zu verschließen, oder?
Schöne Grüße Micha |
| geschrieben von René am 15.05.2005 - 08:33 |
Hi Micha,
http://ups-team.de/
da habe ich das mit dem "application/xhtml+xml" eingefügt. Die Seite wird wie gehabt im Firefox und Mozilla angezeigt. Auf der Startseite ist ebenfalls eine Tabelle. |
| geschrieben von Micha am 15.05.2005 - 12:09 |
Hi Rene
Also mein FF zeigt mir, wenn ich Deine Seiteninformationen anzeige, unter TYP: text/html an. Deine Seite wird also vom Server als text/html ausgeliefert.
Wenn ich das mache, geht der Kalender auch korrekt. Es wird eine Tabelle erstellt. (createElement('TABLE'); ) diesem Objekt weise ich einen THEAD unbd TBODY zu und diesen Wiederum meine TR's und TD's bzw TH's. Am ende übergebe ich das ganze Objekt den DIV Container in der Seite.
Sage ich aber: gib die XHMTL Seite als application/xhtml+xml aus - so wie es die W3C ja auch beführwortet - dann sieht es optisch anders aus. Die Tabelle wird zwar wie oben beschrieben erstellt. Auch der Inhalt ist da und selbst die Zuweisung zu meinem DIV funktioniert. Nur, die Tabelle steht in einer Zeile...
Gruß Micha |
| geschrieben von René am 15.05.2005 - 12:47 |
Hi Micha,
dann stimmt in deinem FF was nicht, hier ein Bild von meinem Firefox 1.0.4. |
| geschrieben von Micha am 15.05.2005 - 16:06 |
Hi, habe auch 1.0.4 laufen bei mir und es wird als tzext/html ausgegeben - habe eigentlich keine Einstellungen verändert.
Extension drauf?
Wird mein Kalender denn bei Dir korrekt angezeigt?
Micha |
| geschrieben von Micha am 15.05.2005 - 16:43 |
Okay, habe das "Problem" erkannt. Wenn ich mein Proxy ausschalte wird sie als XML ausgegeben. Somit ist das Script bzw. die Funktion unbrauchbar!
Back to Topic, da mein Problem an sich ja noch besteht^^
Danke aber für die Bestätigung, das Tabellen angezeigt werden - hätte mich auch gewundert.
Micha |
| geschrieben von René am 15.05.2005 - 17:11 |
Hi Micha,
ich sitze wenn ich die UPS-Teamseite aufrufe ebenfalls hinter einem Proxy (JanaServer).
----
Deine Seite wird bei mir auch nicht richtig dargestellt.
----
Die Seite wird nicht als XML sondern als XHTML angezeigt. XML ist das was Manteu als Beispiel gezeigt hat. |
| geschrieben von Micha am 15.05.2005 - 17:54 |
Gut, JanaServer kenn ich und hatte ich Jahrelang auch zu laufen um zwei rechner vie CrossOver Kalbel ins Netz zu schicken. Mittlerweile habe ich einen Rooter der das macht. Als Server läuft nicht mehr Jana sondern XAMPP.
Ich nutze den PROXY meines Internetanbieters, der dies wohl falsch weiterleitet. Sei es drum, so wie ich ihn ausschalte ist es application/xhtml+xml so wie Du es gesagt hast...
Micha |
| geschrieben von René am 15.05.2005 - 20:03 |
Hi Micha,
wenn du den Proxy ausschaltest und deine eigene Seite aufrufst wie wird dir dann diese angezeigt bzw. sieht meine mit Mozilla oder Firefox genauso aus wie im IE.
-- Edit --
Habe mir eben die Seite mit Mozilla (1.7.6) und Firefox (1.0.4) nochmal angesehen und in beiden wird der Kalender jetzt korrekt angeziegt! |
|