Schema Validator XHTML

Status
Nicht offen für weitere Antworten.
Hallo, ich bekomme diese Fehlermeldung wenn ich meine XHTML Seite im Brwoser lade:

HTML:
 XML Parsing Error: xml processing instruction not at start of external entity Location: file:///C:/Dokumente/xhtmlv.xhtml Line Number 6, Column 1: <?xml version="1.0" encoding="iso-8859-1"?> ^

Was ist an der XML DeKlaration Falsch? Der komplette Anfang der Seite sieht so aus, inklusive PHP Code zu automatischen Media Typ weitergeben von SillentWoriar:

HTML:
<?php if (stristr($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml')) {
	header("Content-type: application/xhtml+xml");
} else {
	header("Content-type: text/html");
} ?>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>uvm</title>
 <meta name="title" content="uvm." />
 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

P.S. wenn ich die XML Deklaration komplett rausnehme, dann kommt es zu keiner Fehlemelung.
 
Zuletzt bearbeitet:
Hallo,

was man anfängt soll man auch zuende führen, das geht nicht nur für eine Diskussion!

Ich habe mich entschieden einfach die nächsten 1-2 Jahre bis vielleicht neue Browser kommen, dass XHTML welches ich in den letzten Tagen gelernt habe anzuwenden und vertiefen.

Es ist wirklich schade das immer kurz vor Ende meiner Fragen die Leute bei Tutorials nicht mehr antworten tun. Im Prinzip ist es auch eine Frechheit mir so lange zu antworten und dann vor dem Ende sitzen zu lassen.

XHTML ist Zukunftsmusik, aber ich habe jetzt seit einigen Tagen soviel darüber gelesen das ich fast jeden Unterschied kennen müsste.

Das einzige Problem das ich noch habe ist die XML Deklaration die eine Fehlermeldung verusacht.

Wenn ich für dieses Problem eine Lösung habe dann kann ich schon loslegen.

Die Seite wird so in einem XML Parser gelesen und ausgegeben, ohne XML-Deklaration. Und auch als HTML Seite sieht es gleich aus. Was brauch ich noch?

Obwohl eine Kleinigkeit hätte ich noch zu ergänzen, ich habe nämlich eben beim Lesen nochmal einen neuen PHP Code gefunden, welcher jedesmal den richtigen Media Typen an den User Agent weitergeben soll, ich weis nicht wieso der länger ist als der von Silent Warior aber in der Erkärung dazu steht auch, das er einfach includiert wird und nicht unbedingt am Anfang der Seite stehen muss. Quelle: http://jendryschik.de/wsdev/einfuehrung/xhtml/xhtml#probleme

Ich würde gerne wissen od dieser Code nicht sicherer ist und wenn ja wie ich den einbauen muss/kann:

HTML:
 <?php
if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1' &&
	isset($_SERVER['HTTP_ACCEPT']) &&
	preg_match('|application/xhtml\+xml(?!\s*;\s*q=0)|', $_SERVER['HTTP_ACCEPT'])) {
	header('Content-Type: application/xhtml+xml; charset=iso-8859-1');
	header('Vary: Negotiate,Accept');
} else {
	header('Content-Type: text/html; charset=iso-8859-1');
	header('Vary: Negotiate,Accept');
}
?>

Tja, diese zwei Fragen trenen mich theoretisch gesehen eigetnlich nur noch vor meinen Start in die XHTML Philosopie, ich hoffe also weiterhin auf Unterstützung, trotz meiner etwas undurchschaulichen Fragenstelleung im Themenbeitrag des Forums.

gruß
feh
 
Tja, bei dem Problem mit der XML-Deklaration kann ich dir leider nicht helfen, ich seh' auch kein Problem.


Zur Auslieferung des korrekten Media-Typen kann ich dir nur noch Thomas Scholz' Empfehlung nahelegen. Diese beachtet sogar den Netscape 6, der Probleme mit dem Media-Typen application/xhtml+xml haben soll, obwohl er ihn akzeptiert.
 
Hallo,

naja, ich bekomme vom Brwoser die Meldung das ein Fehler entsteht wegen der XML Deklaration, aber es lag auch eher mehr am PHP Code der vor der Deklaration steht, den wenn ich den PHP Code weck nehme, dann kommt auch keine Fehlermeldung, oder ich nehme die XML - Deklaration weck damit keine mehr kommt. Bei der Fehlermeldung wird speziell auf die Anfangs Klammer der XML Deklaration hingewiesen, ich hab die MEldung weiter oben ja schon mal aufgeführt.

Ich kann ja kein PHP, kannst du mir bitte daher bitte sagen wie du bei deinen Seiten den konkreten PHP Code von Thomas Scholz eingebaut hast? Ich würde das ganze so aussehen lassen:

HTML:
<?php
function ua_accepts_xhtml() { 
	/* Prüft, ob an den UA XHTML ausgeliefert werden darf. 
	 * Gibt TRUE zurück, wenn ja, FALSE, wenn nicht. */ 

	/* In dubio pro HTML. */ 
	$xhtml = FALSE; 
	$check_pattern = '|application/xhtml\+xml(?!\s*;\s*q=0)|'; 

	/* Behauptet der UA, XHTML zu können? */ 
	if (($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') and 
		isset($_SERVER['HTTP_ACCEPT']) and 
		preg_match($check_pattern, $_SERVER['HTTP_ACCEPT'])) { 
			$xhtml = TRUE; 
	} 
	/* Ältere Geckos haben ein paar Crashbugs mit XHTML. */ 
	if(isset($_SERVER['HTTP_USER_AGENT'])) { 
		if(preg_match("|rv\:0.9|", $_SERVER['HTTP_USER_AGENT'])) { 
			$xhtml = FALSE; 
		} 
	} 
	return $xhtml; 
} 

/* Anwendung. */ 
$content_type   = ua_accepts_xhtml() ? 'application/xhtml+xml' : 'text/html'; 
header('Content-Type: ' . $content_type . ';charset=utf-8'); 
header('Vary: Accept');
 
?>
besser wäre aber vielleicht der Übersicht halber, wenn man das ganze includieren kann. Wie sieht das dann aus? P.S. Wenn ich den PHP Code einbaue und in den Seiten den text/html Media Typen angebe kann ich dann nicht auch auf eine XML Deklaration verzichten, weil die dazu führt das IE in die Quiksmode fällt? Oder wäre ohne XML Deklaration noch eine kleine Erweiterung in der htacces Datei notwendig um den ISO-8859-1 Zeichencode als zu deklarienen, wofür doch meines Wissens nach die XML-Deklaration gedacht war?
 
Das Problem hab ich schon erwartet; lass einfach die XML-Deklaration ebenfalls vom PHP-Skript ausgeben.
Ist ehrlich gesagt ein wirklich skuriles Problem, da es auch auftritt, wenn die Option der PHP-Shorttags (<? […] ?>, ohne php) deaktiviert ist.

Du könntest ja die XML-Deklaration nur bei Akzeptanz des Media-Typen application/xhtml+xml ausgeben, also wenn das Dokument tatsächlich als XHTML interpretiert wird.:
PHP:
<?php

	[…]

	if( ua_accepts_xhtml() ) {
		echo '<?xml version="1.0" encoding="utf-8"?>';
	}

?>

Ich persönlich arbeite mit UTF-8 und habe daher solche Probleme glücklicherweise nicht.
 
Hallo Gumbo,

also die Lösung mit dem Apache-Modul mod_mime und dessen AddCharset-Direktive kann ich total vergessen, wie soll ich da den irgendwas machen können bei meinen Kentnissen.

Aber ich denke ich werde das dann mit deinem Lösungsvorschlag mit php die XML Deklaration anzugeben das auch nicht mehr brauchen, oder?

Doch frage ich mich auch wieso so bei dir kein Fehler auftritt? Verwebdest du den nicht den PHP Code von Thomas Scholz am Anfang deiner XHTML Dokumente?

Und welche Dateiendung gibst du deinen Dukumenten?
 
wäre mein PHP Code so richtig für den Anfang der XHTML Seite?

HTML:
<?php
function ua_accepts_xhtml() {
 $xhtml = FALSE;
 $check_pattern = '|application/xhtml\+xml(?!\s*;\s*q=0)|';
 if (($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') and
  isset($_SERVER['HTTP_ACCEPT']) and
  preg_match($check_pattern, $_SERVER['HTTP_ACCEPT'])) {
   $xhtml = TRUE;
 }
 if(isset($_SERVER['HTTP_USER_AGENT'])) {
  if(preg_match("|rv\:0.9|", $_SERVER['HTTP_USER_AGENT'])) {
   $xhtml = FALSE;
  }
 }
 return $xhtml;
}
$content_type   = ua_accepts_xhtml() ? 'application/xhtml+xml' : 'text/html';
header('Content-Type: ' . $content_type . ';charset=utf-8');
header('Vary: Accept');
 […]
	if( ua_accepts_xhtml() ) {
		echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
	}
?>

Bitte einmal genau hinschauen ich habe keine PHP Kentnisse und in mir unsicher.

So, dann habe ich komischerweise noch eine weitere Fehlemeldung bekommen, es handel sich um ein onchange Attribut:
HTML:
 <select name="select" onchange="window.open(this.value, '')">
irgendwas gefällt dem XML Parser an den Anführungsstrichen am Ende vor der runden Klammer nicht. Ich weis nicht mehr genau, musste man diese Stücke Javascript auch irgendwie mit CDATA deklarien?
 
Status
Nicht offen für weitere Antworten.
Zurück