Schema Validator XHTML

Status
Nicht offen für weitere Antworten.
Ich kann keinen Fehler entdecken, außer, dass die Zeichensatz-Kodierungen aneinander angepasst und das gesetzte Auslassungszeichen […] entfernt werden sollte.
Weitergehend sind Attributwerte Teil des XML-Markup und müssen oder besser gesagt dürfen daher nicht als PCDATA ausgezeichnet werden.
 
Hi,

an dem PHP Code kann irgendwas nicht stimmen, ich bekomme die EMldung unclosed Token. Wenn ich es im Browser lade dann werden auch diese '; } ?> Zeichen angezeigt.

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"?>';
 }
?>

Also wenn du lust hast erklär mir das mal, den bei deinen Seiten scheint es ja zu funken? Welche Endung benutzt du für deine XHTML Dokumente?
 
Wird das Skript vom Server überhaupt als PHP interpretiert? Typischerweise müsste es die Endung php haben.
 
Hallo,
also ich will das ganze nicht zu kompliziert machen und lasse deswegen den Teil Script für die XML-Deklaration weitergabe ganz weck und füge die ganz normale XML-Deklaration nach dem PHP Code ein. Das sieht dann so aus bei mir:

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');
?>
<?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>

Wenn ich das mit XML-Deklaration mache dann hat es wohl gleichzeitig noch den Vorteil das ich die Seite im Qiurks Modus und somit für den IE 5.0 zusätzlich optimiere.

Weiter benutze ich in der Seite den Media Typen text/html.

Die Seite habe ich mit Endung xhtml abgespeichert um es lokal auf meinem Rechner testen zu können. Wenn ich die Seite dann aber z.B. in Firefox lade, dann bekomme ich eine Fehlermeldung:
xml processing instruction not at start of external entity
Dabei wird auf die XML Deklaration
HTML:
 <?xml version="1.0" encoding="iso-8859-1"?>
mit Betohnung auf die Start Klammer des XML Tags hingewiesen, ich glaube es liegt irgendwie am ? in der Klammer. Wenn ich die gleiche Seite auf den Server lade und im Firefox lade, bekomme ich keine Fehlermeldung mehr.

Wenn ich die Seite mal als php abspeicher und auf mein Server lade zum testen, dann bekomme ich wieder folgende Fehlermeldung: Parse error: parse error, unexpected T_STRING dabei wird auch genau auf die gleiche Zeile wo der Fehler sein soll hingewiesen wie bei der ersten Fehlermeldung.

Also als php Datei geht lokal und auf server nicht.
Als xhtml geht auf server und lokal nicht. Dabei habe ich jedesmal den PHP Code für Media Typ ausgabe und XML-Deklaration im Quelltext drin gelassen.

So, das ist ziemlich seltsam. Ich kann das ganze nur auf den Zusammenhang der Tag Klammern vom PHP Code und der XML-Deklaration zurückführen mit Betohnung auf die Fragezeichen in beiden Klammern, den wenn ich den PHP Code oder die XML-Deklaration rausnehme, dann kommt es zu keinen Fehlermeldungen mehr.

ich hoffe das du das so nachvollziehen kannst um mir den Fehler zu analisieren, wenn nicht dann frage mich bitte nochmal, ich setzte auf dich.

gruß
feh
 
Zuletzt bearbeitet:
PHP-Skripte müssen von einem PHP-Interpreter interpretiert werden. Auf deinem entfernten Webserver ist einer installiert, auf deinem lokalen Computer wohl nicht. Daher kommt es lokal zu einem XML-Parse-Fehler und entfernt zu einem PHP-Parse-Fehler. Übrigens habe ich dir bereits eine Lösung zur Ausgabe der XML-Deklaration genannt.
 
Hallo,

Übrigens habe ich dir bereits eine Lösung zur Ausgabe der XML-Deklaration genannt.

ich habe doch darauf hingewiesen das ich die XML Deklaration immer verwenden will, weil der IE 6.0 im Qiuks Modus sich so verhält wie der IE 5.0 und dadurch alles einheitlich past. Sag mal, bekommt man vielleicht irgendwo noch einen IE 5.0 zum dowload angeboten? Wenn ja wo, ich kann mich dran erinnern das ich letztes mal in den Suchmaschienen sowas nicht finden konnte.

Du schreibst:
PHP-Skripte müssen von einem PHP-Interpreter interpretiert werden. Auf deinem entfernten Webserver ist einer installiert, auf deinem lokalen Computer wohl nicht. Daher kommt es lokal zu einem XML-Parse-Fehler und entfernt zu einem PHP-Parse-Fehler.

Ich hatte folgendes festgestellt:
Also als php Datei geht lokal und auf server nicht.
Als xhtml geht auf server und lokal nicht

Also mein Server kann erst normalerweise was mit php Dateien anfangen wegen dem PHP-Interpreter. Ich habe aber festgestellt das die Seite als php Datei nur lokal geht und nicht auf dem Server. Also genau umgekehrt.

Dann als xhtml abgespeichert lokal zu testen geht es nicht aber auf dem Server doch. Nun ich blicke da irgendwie nicht mehr durch. Vielleicht heute abend.
 
Es gibt einige Browser-Archive; spontan fiele mir nur das Browser-Archiv von evolt.org ein.

Also mein Server kann erst normalerweise was mit php Dateien anfangen wegen dem PHP-Interpreter. Ich habe aber festgestellt das die Seite als php Datei nur lokal geht und nicht auf dem Server. Also genau umgekehrt.
Dann hab ich's tatsächlich genau falsch verstanden. Dennoch kann ich mir solch ein Verhalten nicht erklären.
 
Hallo Gumbo.

Sorry aber ich habe irgendwie den FAden verloren. Ich habe mein Problem jetzt nochmal versucht im PHP Forum zu erklären und hoffe mit einem neuen Ansatz Klarheiten zu bekommen.

Vielen Dank.

feh
 
Status
Nicht offen für weitere Antworten.
Zurück