Problem z xhtml w IE

0

Zacząłem robić stronę http://www.piekne-podkarpacie.yoyo.pl/ . Chciałem opierać się na XHTML i chyba częściowo mi się to udało. Jednak okazało się, że gdy zapiszę ją w formacie: index.xhtml - strona nie otwiera się w IE. Zacząłem szukać na to recepty. I znalazłem takie coś:

  1. Tworze plik copy.xsl i wpisuje:
    <stylesheet version="1.0"
    xmlns="http://www.w3.org/1999/XSL/Transform"&gt;

    <template match="/"> <copy-of select="." /> </template>

    </stylesheet>

  2. na początku kodu strony zamieszczam:
    <?xml-stylesheet type="text/xsl" href="copy.xsl"?> //+ oczywiście
    <?xml version="1.0" encoding="UTF-8"?>

Gdy stronę tą zapisywałem w xhtml nadal pojawiał się ten sam błąd w IE, lecz gdy zapisałem w .html strona zaczęła się wyświetlać, jednak cała strona zamiast na środku, wyświetlała się po lewej stronie, a tło się powtarzało choć nie powinno.

Gdy chciałem wgrać stronę na server yoyo, by pokazać Wam ten problem, zobaczyłem błąd, który mówił, ze jest coś źle w pierwszej linii kodu. Usunąłem więc:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="copy.xsl"?>

i strona zaczęła działać zarówno na serverze jak i w IE (jedynie kolory linków czasem szwankują i są one (linki)podniesione za wysoko). Nie wiem jednak z jakiego powodu strona nagle zaczęła działać i jakie skutki może mieć to, że usunąłem te dwie linijki.

P.s. Czy jest jakiś sposób, by strona była zapisana w .xhtml i otworzyła się w IE ?

Proszę o pomoc. Gdyby ktoś potrzebował, mogę pokazać arkusz stylów.

0

IE w wersji szóstej po prostu application/xhtml traktuje jako coś, czego nie potrafi otworzyć. Dlatego do IE trzeba wysyłać nagłówek text/html.

0

A no właśnie. Gdzie zawrzec ten nagłówek z text/html ? Tutaj:

<?xml version="1.0" encoding="UTF-8"?>

?

I dlaczego na yoyo.pl wyskakiwał błąd gdy miałem na początku <?xml version="1.0" encoding="UTF-8"?> ?

0

IE w wersji siódmej oraz ósmej póki co także traktuje application/xhtml+xml jako coś, czego nie rozumie ;)

Najłatwiejszą metodą na wysłanie przeglądarce application/xhtml+xml jeżeli ona go "rozumie" jest taki skrypt PHP:

<?php
    if(strstr($_SERVER['HTTP_ACCEPT'], "application/xhtml+xml")) {
        header("Content-Type: application/xhtml+xml");
    }
    else {
        header("Content-Type: text/html");
    }
?>

Nie jest w pełni doskonały (jest lepszy, z uwzględnieniem priorytetów, ale nie chce mi się szukać w tym momencie), ale dla IE (albo walidatora w3c ;-)) wyśle stronę jako text/html, a dla Fx czy Opery - jako XHTML.

A błąd z <?xml mógł wziąć sie stąd, że jeżeli masz stronę w PHP który ma pewne ustawienia konfiguracyjne to <? jest traktowane jako początek kodu PHP, a nie prolog XML.

0
function xml_header()
{
    $xhtml = false;
    if (preg_match('/application\/xhtml\+xml(?![+a-z])(;q=(0\.\d{1,3}|[01]))?/i', $_SERVER['HTTP_ACCEPT'], $matches))
    {
        $xhtmlQ = isset($matches[2])?($matches[2]+0.2):1;
        if (preg_match('/text\/html(;q=(0\d{1,3}|[01]))s?/i', $_SERVER['HTTP_ACCEPT'], $matches))
        {
            $htmlQ = isset($matches[2]) ? $matches[2] : 1;
            $xhtml = ($xhtmlQ >= $htmlQ);
        }
        else
        {
            $xhtml = true;
        }
    }
    if ($xhtml)
    {
        header('Content-Type: application/xhtml+xml; charset=ISO-8859-2');
    }
    else
    {
        header('Content-Type: text/html; charset=ISO-8859-2');
    }
}

Znalezione gdzieś i dawno temu w czeluściach polskiego internetu.

0

Ja jestem początkujący w html i xhtml. Gdzie zamieścić ten skrypt PHP ? I czy muszę dawać na początku <?xml...> ? Aaa i w jakim formacie zapisać plik ? .html czy . xhtml ?

0

Jak chcesz wykonać php, to jako php. Ale wtedy musisz zamienić <?xml..?> na <?php echo '<?xml..?>';?> bo inaczej parser będzie chciał wykonać kod w <?xml..?>

0

Mam jeszcze jeden problem. Gdy otworzę tą: <url>www.piekne-podkarpacie.yoyo.pl</url&gt; stronę w operze i FF wszystko jest w porządku. Jednak gdy chce otworzyć w IE, to linki z menu podniesione są za wysoko ;/ Co zrobić, by włączał się inny arkusz stylów, który dostosuję do IE, ale tylko wtedy gdy przeglądarką jest właśnie IE. Może jest jakiś inny sposób na to ?

Z góry dzięki za pomoc.

0

Wielkie dzięki za dotychczasową pomoc, wydaję mi się, że wszystko działa jak należy. Mam tylko jeszcze jedno pytanie. Zobaczyłem na stronie: http://ourtibia.com/gallery/view/id_5429/fieldtime/title-me/ fajny efekt. Mianowicie gdy kliknę na zdjęcie wszystko się przyciemnia i... zresztą sami zobaczcie. Mógłby ktoś powiedzieć gdzie mogę znaleźć skrypt na taki bajer ?

Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0