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">
    <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> 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/field_time/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.

0

Wróciłem do robienia swojej strony i postanowiłem użyć Lightboxa, o którego wcześniej pytałem. Ściągnąłem go, wszystko wpisałem tak jak trzeba, jednak gdy wpisuje np.
<img src="images/donate-button.gif />
to nie pokazuje się nic na stronie. Jednak gdy usunę swój arkusz stylów, czyli:

<link rel="stylesheet" href="style.css" type="text/css" /> to wszystko działa.

Mógłby ktoś powiedzieć co jest tego przyczyną ?

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