[PHP+XML] Error alleen in IE "ongeldig op hoogste niveau"

Pagina: 1
Acties:

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Ik heb een bepaalde XML bron, welke het prima in firefox doet, maar in IE vertikt. Als ik de broncode letterlijk kopieer, in een nieuw bestand plak en die weer geef doet ie het prima. Heb het vermoeden dat het met encoding te maken heeft, maar heb het al op allerlei manieren ingesteld.

Even linkjes voor zolang webserver draait:
broncode xml
broncode xsl
broncode error

edit: voor de volledigheid de headers enzo even:
xml
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    //include './dir/bestand.php';
    //include './nogdir/variabelenenzo.php';

    $sMime = (stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) ? "application/xhtml+xml" : "application/xml";

    header ("Content-type: ".$sMime.";charset=utf-8");
    header ("Pragma: no-cache"); 
    
    echo "<"."?xml version=\"1.0\" encoding=\"UTF-8\"?".">";
         
    if (!$_GET['xsl'] == "off")
        echo "<"."?xml-stylesheet type=\"text/xsl\" href=\"./xsl/default.xsl\"?".">";

xsl
HTML:
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8" ?>
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"
    doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
    doctype-public="-//W3C//DTD XHTML 1.1 //EN" indent="yes"
     />

beiden files opgeslagen als utf-8
opvallend is zolang ik de includes eruit comment, ik geen fout krijg. Maar de include gaat goed volgens mij, want in FF zijn er ook geen foutmeldingen van terug te vinden.

[ Voor 69% gewijzigd door r0bert op 04-07-2005 02:50 ]


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Als ik het bestand in Opera open en daarna met een hex-editor bekijk dan zie ik wat vreemde tekens voor het <?xml gedeelte.
FF FE FF FE FF FE FF FE FF FE FF FE    ÿþÿþÿþÿþÿþÿþ

Blog [Stackoverflow] [LinkedIn]


  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Ook enig idee waar die vandaan kunnen komen? :? Ik niet namelijk.. :P zal alle bestanden nog even nakijken, maar buiten de <?php tags zit iig geen whitespace in de includes..

edit: of hoort dat daar mssn gewoon? :P

[ Voor 13% gewijzigd door r0bert op 04-07-2005 03:14 ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
FF FE is de UTF-16 Byte Order Mark. Ik zie er hier 6 van verschijnen. Doe je soms verschillende XML bestanden byte-voor-byte inlezen en dan echo'en? [de code is nl. niet echt volledig imo]

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
ik voer dus wel 6 includes uit, daar komt het dus waarschijnlijk vandaan.. maar hoe? :?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Mijn gok zou dan zijn om de PHP files welke je included niet als UTF-16 op te slaan maar als als ISO 8859-1. Eventueel zou je nog UTF-8 kunnen proberen, ik weet niet of PHP daar minder problemen mee heeft.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Ik heb alles momenteel opgeslagen als utf-8, vreemd dat dat problemen opleverd :?

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Mja het "lost het wel op". Maar vind het juist netter om alles utf-8 te houden, als ik alles door elkaar ga gebruiken is het misschien voor nu opgelost maar gaat dat in de toekomst vast en zeker voor nieuwe problemen zorgen.

Ik kan verder ook wel bij de apache-instellingen e.d. als ik daar de oplossing moet zoeken.. in httpd.conf staat charset bij default op UTF-8 insteld

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Ik heb het uit wanhoop, maar zo opgelost:
code:
1
2
3
4
5
6
.. includes die allemaal zo'n nietzichtbare space teruggeven ..
ob_clean();
    $sMime = (stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) ? "application/xhtml+xml" : "application/xml";

    header ("Content-type: ".$sMime.";charset=utf-8");
    header ("Pragma: no-cache");

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Misschien is het beter om alle data eerst naar een variabele te schrijven en daarna pas te echo'en?

Ik vind het misbruiken van OB iig niet echt een nette oplossing :P

Blog [Stackoverflow] [LinkedIn]


  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Misschien is het beter om alle data eerst naar een variabele
Da's in dit geval dus de outputbuffer[/quote] te schrijven en daarna pas te echo'en?[/quote]Behalve het eerste gedeelte wat niet geechoot moet worden. Dat gebeurd nu dus ook.. eventjes, maar na die tekens is het niet meer nodig :) Wat jij hierboven zegt lijkt me juist een beetje de ob-functies simuleren?
Ik vind het misbruiken van OB iig niet echt een nette oplossing
Ik ook niet, maar wel de beste die ik tot nu toe weet :)
Pagina: 1