Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   application/xhtml+xml -> Darstellungsfehler? (https://boardunity.de/application-xhtml-xml-darstellungsfehler-t2976.html)

Philipp Gérard 31.03.2005 17:04

application/xhtml+xml -> Darstellungsfehler?
 
Hallo allerseits,

wie wir wissen, können Browser, die auf der Gecko-Engine aufbauen, bereits Dokumente darstellen, die als application/xhtml+xml ausgezeichnet werden. Mittels eines PHP-Scriptes gebe ich diesen Browsern meine neuste Seite auch im passenden Format, aber ich muss seitdem mit einem unerklärlichen Darstellungsfehler kämpfen: Das Hintergrundbild von body wird nur dort dargestellt (y-Achse), wo auch Inhalte sind - und nicht, wie gedacht, flächendeckend. Vielleicht kann mir ja jemand verraten, woran das liegen mag. Die Seite baut auf XHTML 1.1 und CSS auf, die Texte werden als UTF-8 kodiert.

http://www.politopia.de/odm.de.vu

Danke euch :rolleyes:

P.S.: Nicht erschrecken :D

Patrick Gotthardt 31.03.2005 17:10

body ist bei xml kein besonderes Element mehr, wie es bei HTML mal war.
Während das body-Element bei HTML das komplette Fenster ausmachte ist es in XHTML ein ganz normales Element (vergleichbar mit einem div).
Am einfachsten wäre es wohl, wenn du das Hintergrundbild dem HTML-Element zuordnen würdest.

MrNase 31.03.2005 17:13

Ich hab gerade den Kopf mit anderen Dingen zu.. Hab aber eben das hier gefunden:

http://www.w3.org/TR/xhtml-media-typ...tion-xhtml-xml
Zitat:

When serving an XHTML document with this media type, authors SHOULD include the XML stylesheet processing instruction [XMLstyle] to associate style sheets.
Demnach solltest du in diesem Fall
Code:

<?xml-stylesheet href="common.css" type="text/css"?>
verwenden. Einen grossen Unterschied dürfte es allerdings nicht machen.

Achso ja.. Ersetz mal body {} mit :root{} dann klappt es auch mit dem Nachbarn :D

html {} dürfte auch gehen..

Philipp Gérard 31.03.2005 17:18

Merci! Beides ist nun drin, DragonMasters Hinweis löste auch mein Problem. Danke sehr!

th 31.03.2005 17:47

Ich danke auch, das selbe Problem hatte ich vor einigen Tagen auch.

Eine Frage zu XHTML 1.1 hab ich allerdings noch. Was ist denn nun der richtige MIME-Type für XHTML 1.1 - application/xhtml+xml oder text/html? Auf der XHTML 1.1 Seite beim W3 wird nämlich letzteres verwendet.

Philipp Gérard 31.03.2005 18:07

Ersterer, den verstehen die meisten (IE) nur nicht...

Gardan 31.03.2005 18:49

Bei IANA is application/xhtml+xml offiziell registriert.

http://www.iana.org/assignments/medi...s/application/

http://www.rfc-editor.org/rfc/rfc3236.txt

OrcaDesign 31.03.2005 21:27

Zitat:

Zitat von DolbY2k
Eine Frage zu XHTML 1.1 hab ich allerdings noch. Was ist denn nun der richtige MIME-Type für XHTML 1.1 - application/xhtml+xml oder text/html?

Genaugenommen ist letzterer bei XHTML1.1 nicht mal mehr zulässig... man kommt nur dank einer Dominanz des IEs nicht umhin, ihn trotzdem weiterhin verwenden zu müssen per default... :rolleyes:

(text/html ist allein ein kann, sollte aber nicht bei XHTML1.0, solange eine XHTML-Seite dann aber auch in einem rückwärtskompatiblen Stil geschrieben ist, also beispielsweise den Pseudoelementen wie <br /> anstatt einem ebenso XML-zulässigen <br></br>)

LonelyPixel 31.03.2005 22:18

Oh, ja, sehr schön! Jetzt hab ich mein Hintergrundbild auch wieder auf der ganzen Seite! Dachte schon, das wäre wieder ein Firefox-Fehler... :D

th 01.04.2005 10:38

Um zu prüfen, ob der Browser application/xhtml+xml unterstützt, schaue ich einfach mit einem PHP-Skript nach, ob es in $_SERVER['HTTP_ACCEPT'] vorkommt.

Reicht diese Überprüfung aus? Ich hab nämlich irgendwo mal gehört, dass irgendein alter Netscape zwar sagt, dies zu können, er es aber in Wirklichkeit nicht kann.

Wie handhabt ihr das?

Philipp Gérard 01.04.2005 11:05

Ich prüfe, ob ein Betrüger daherkommt:

PHP-Code:

function ua_accepts_xhtml() {
    
$xhtml "text/html";
    
$check_pattern '|application/xhtml\+xml(?!\s*;\s*q=0)|';
    if ((
$_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') && isset($_SERVER['HTTP_ACCEPT']) && preg_match($check_pattern$_SERVER['HTTP_ACCEPT'])) {
            
$xhtml "application/xhtml+xml";
    }
    if(isset(
$_SERVER['HTTP_USER_AGENT'])) {
        if(
preg_match("|rv\:0.9|"$_SERVER['HTTP_USER_AGENT'])) {
            
$xhtml "text/html";
        }
    }
    return 
$xhtml;
}

#...

header('Content-Type: ' ua_accepts_xhtml() . '; charset=utf-8');

#... 


LonelyPixel 01.04.2005 17:07

Ich repariere prinzipiell keine Browser. Naja, jedenfalls nicht den. (Wusste gar nicht, dass Browser da lügen... Naja, selbst schuld.) Dafür interpretiere ich den HTTP-Accept-Header vollständig und gib jedem, wonach er verlangt: ;)

PHP-Code:

// Determine browser capabilities with HTTP Accept header
$accept explode(','$_SERVER['HTTP_ACCEPT']);
foreach (
$accept as $h => $v) { $e explode(';'$v); $accept[$h] = $e[0]; }
if (
in_array('application/xhtml+xml'$accept)) $CONTTYPE 'application/xhtml+xml';
elseif (
in_array('text/xml'$accept)) $CONTTYPE 'text/xml';
elseif (
in_array('text/html'$accept)) $CONTTYPE 'text/html';
else 
$CONTTYPE 'text/html';

@
header('Content-type: ' $CONTTYPE '; charset=UTF-8'); 


codethief 01.04.2005 21:09

@LonelyPixel: Die Zeile
PHP-Code:

elseif (in_array('text/html'$accept)) $CONTTYPE 'text/html'

ist jedoch überflüssig, da darauf ja ein entsprechender else-Teil folgt. ;)

LonelyPixel 01.04.2005 23:05

Joa, ich weiß. :D Sieht aber logisch total gut aus und so, weil man am Ende ja doch nochmal was anderes einstellen könnte... vielleicht... Naja, kann wohl nicht überzeugen. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.

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