Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Struktura dokumentu XHTML
Forum PHP.pl > Forum > Po stronie przeglądarki > HTML \ XHTML
Jarod
Próbując odszukać strukturę XHTML natrafiłem na stronę http://xhtml.b7.pl/


Na pewnym forum była dyskusja co do pisania prologu. Wkońcu utknęło na tym, żeby zamiast kodu:
  1. <?php echo '<?xml version="1.0" encoding="iso-8859-2"?>'; ?>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  4. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6.  
  7. <link rel="stylesheet" type="text/css" href="style.css" />
  8. <?php echo '<?xml-stylesheet type="text/css" href="style.css" ?>'; ?>
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  10. </head>
  11.  
  12. <body xml:lang="pl">
  13. </body>
  14.  
  15. </html>



pisać kod:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  4. <title>Tytuł strony</title>
  5. </head>
  6.  
  7. <p>
  8. <br />
  9. </p>
  10. </body>
  11. </html>


bo jest on dobry i spokojnie można na nim budować stronę XHTML.

I tu pojawia się problem, bo jeśli będę chciał dołączyć style zewnętrzne to muszę zastosować:
  1. <?xml version="1.1" encoding="iso-8859-2"?>
  2. <?xml-stylesheet type="text/css" href="style.css" ?>


ale to znowu wpływa na:

Cytat
Stosowanie prologu xml musi być świadomą decyzją bo wpływa to także na sposób renderowania stron przez IE6 (przełącza je w quirks mode)

(...)

przestawia je w quirks mode, a to skutkuje opacznym rozumieniem modelu pudełka i jeszcze kilkoma innymi bugami. IE6 sprawdza czy pierwszą linią dokumentu jest !doctype, które ono rozumie (a prolog xml takim nie jest) i wybiera jeden z dostępnych sposobów renderowania.
Dodatkowo jest wiele aspektów (choćby wspomniane kodowanie znaków zawarte w prologu), które przemawiają za nieużywaniem go na razie w kodzie stron internetowych. Wielu użytkowników korzysta jeszcze z przeglądarek dokumentów html, które nie umieją parsować xmla.


Ja już zgłupiałem. Jak powinna wyglądać poprawna (zgodna ze standardami W3C) struktura dokumentu XHTML, a jednocześnie poprawnie wyświetlana przez przeglądarki?
orson
witam

wg ie _coklowiek_ przed <!DOCTYPE przełącza render w quirks mode ... ja stosuje 2 nagłówek ( i w nim normalnie link-owanie styli) i strony w 90% przypadków z ręki wyglądają identycznie pod ie i moz ...

pozdrawiam
gekon
Jeżeli wysyłasz jako text/html to:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <link rel="stylesheet" type="text/css" href="style.css" media="media" />


Jeżeli jako application/xhtml+xml to z prologiem XML.
Jarod
Cytat(orson @ 2006-02-22 18:30:00)
witam

wg ie _coklowiek_ przed <!DOCTYPE przełącza render w quirks mode ... ja stosuje 2 nagłówek ( i w nim normalnie link-owanie styli) i strony w 90% przypadków z ręki wyglądają identycznie pod ie i moz ...

pozdrawiam

Czyli który?
orson
witam ..

no 2gi ... zresztą z mojej wypowiedzi można się zorientować o którym mówie ... (ten bez prologu xml)

Cytat
Jeżeli jako application/xhtml+xml to z prologiem XML.

to się będzie sypać pod ie

pozdrawiam
gekon
Wiem, że się będzie sypać. IE nie wie co to MIME typ application/xhtml+xml i dlatego nie wysyła się tego dla IE smile.gif
Zajec
  1. <?php
  2. if (stristr($_SERVER[HTTP_ACCEPT], "application/xhtml+xml")) $xhtml = true;
  3. else $xhtml = false;
  4.  
  5. if ($xhtml)
  6. {
  7. header("Content-Type: application/xhtml+xml; charset=utf-8");
  8. echo '<?xml version="1.0" encoding="utf-8"?>'."\r\n";
  9. echo '<?xml-stylesheet type="text/css" href="style.css" ?>'."\r\n";
  10. echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"'."\r\n";
  11. echo '"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">';
  12. }
  13. else
  14. {
  15. header("Content-Type: text/html; charset=utf-8");
  16. echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"'."\r\n";
  17. echo '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
  18. }
  19. ?>



  1. <head>
  2. <?php
  3. if (!$xhtml) echo '<link rel="stylesheet" type="text/css" href="style.css" media="media" />'."\r\n";
  4. ?>
harp
No dobra. Tylko po co zmieniać doctype z 1.1 na 1.0 Strict w IE, skoro strict tak samo jak 1.1 "nie powinien" wg W3C być wysyłany jako text/html. Równie dobrze można pozostawić 1.1 i na to samo wyjdzie. Jeżeli miałoby być poprawnie, to do przeglądarek nie obsługujących application/xhtml+xml powinno się wysyłać co najwyżej xhtml 1.0 transitional, albo jeszcze lepiej html 4.01 strict. Tylko, że po wpisaniu w validator.w3.org adresu strony wyskoczy prawidłowy xhtml transitional albo html 4.01, bo validator i tak sprawdza text/html. To taka moja luźna opinia.
gekon
Cytat
[XHTML1], Appendix C "HTML Compatibility Guidelines" summarizes design guidelines for authors who wish their XHTML documents to render on existing HTML user agents.  The use of 'text/html' for XHTML SHOULD be limited for the purpose of rendering on existing HTML user agents, and SHOULD be limited to [XHTML1] documents which follow the HTML Compatibility Guidelines. In particular, 'text/html' is NOT suitable for XHTML Family document types that adds elements and attributes from foreign namespaces, such as XHTML+MathML

Co znaczy mniej więcej tyle, że stosowanie text/html w XHTMLu POWINNO być ograniczone do dokumentów, które mają być renderowane na istniejących agentach HTML oraz dokumentów, które spełniają wytyczne kompatybilności z HTML. NIE POWINNO natomiast stosować się text/html do dokumentów zawierających atrybuty z obcych przestrzeni nazw, np. XHTML+MathML.

Oczywiście tyczy się to XHTML 1.0 (także Strict, jeżeli ma być renderowany na... vide wyżej), bo jest to standard przejściowy. Natomiast XHTML 1.1 POWINIEN być podawany jako application/xhtml+xml lub application/xml albo text/xml w zależności od zastosowania.

Podsumowując: typ zależy od zastosowania.
harp
Co do tej notki to w grucie rzeczy się z Tobą zgadzam Gekon. Wynika z niej tyle, że jeżeli wysyłamy dokument jako text/html to powinniśmy zastosować html 4, ale możemy także zastosować xhtml 1, a nie powinniśmy xhtml 1.1.

To czy w przypadku wysyłania dokumentu text/html nie lepiej używać html strict, bo chyba żadnych z nowych zastosowań xhtml i korzyści wynikających z ich użycia nie można w ten sposób osiągnąć?
Jarod
Przecież można stosować application/xhtml+xml tylko, że kaleka IE wszystko ma w d****
gekon
Harp masz rację, (pomijając Standards/Quirks Mode) używając XHTMLa nie otrzymujemy nic nowego dopóki jest on zupą tagów. XHTML przecież wcale nie "wprowadził" semantycznego kodu. W HTMLu 4.01 Strict też można (a nawet powinno się) napisać beztabelkową, semantyczną stronę.
Jarod
Odświeżam wątek. Przeczytałem http://pornel.net/xhtml i to co wyżej napisaliście. Czy do generowania stron można stosować
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

?

Gdzieś przeczytałem (nie pamiętam źródła), że przeglądarki z DOCTYPE XHTML 1.0 Strict lepiej (poprawniej) interpretują kod?
Sprawdzaliście to kiedyś? Możecie to potwierdzić?
gekon
Oj Jarod, Jarod. Kwestia pierwsza: Tak DOCTYPE XHTML 1.0 Strict można stosować ale nie będziesz miał z tego korzyści (chyba ze w jednym dokumencie/pliku wykorzystujesz XHTML, SVG, MathML czy co tam jeszcze W3C dało - czyli wiesz co to aplikacja XMLa i jak z niej korzystać). Narazie wystarczy HTML 4.01 (pornel ładnie napisał co w XHTMLu jest dodane). Sprawa druga: u pornela jest napisane, że "W trybie XHTML przeglądarki nieco ściślej interpretują CSS"- tak ale chodzi o wysyłanie z odpowiednim MIME typem (czyli jako xml). Sprawa trzecia: z DOCTYPE trzeba uważać na Quirks Mode.
Jarod
W takim razie pozostaje (jak większość) przy swoim"
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">
gekon
Lepiej pozostań przy HTML 4.01 Strict.
Jarod
@gekon: przeczytałem ale nadal nie rozumiem dlaczego miałbym rezygnować z XHTML'a. Chyba nie dlatego, że IE olewa application/xhtml+xml..
gekon
Jarod: właśnie dlatego. Czy gdybyś nie wiedział jak korzystać z laski dynamitu - wiedząc, że jest to modne - bawił byś się nią? XHTML to XML i powinień rządzić się jego prawami. Tymczasem znakomita większość stron jest pisana w "XHTMLu", który tak naprawdę jest HTMLem z jakimiś dziwnymi zakończeniami tagów (z punktu widzenia przeglądarki). Po co psuć sieć skoro to samo można osiągnąć za pomocą HTMLa 4.01?
Jarod
Cytat(gekon @ 6.05.2007, 22:26:34 ) *
Jarod: właśnie dlatego. Czy gdybyś nie wiedział jak korzystać z laski dynamitu - wiedząc, że jest to modne - bawił byś się nią?

Nie bo mógłbym stracić rękę ;p Ok koniec żartów.

Cytat(gekon @ 6.05.2007, 22:26:34 ) *
XHTML to XML i powinień rządzić się jego prawami. Tymczasem znakomita większość stron jest pisana w "XHTMLu", który tak naprawdę jest HTMLem

Te linki do stron w Twoim podpisie (nie wiem czy wszystkie ale na pewno 2) były pisane w XHTML i to w dodatku Strict. Zaprzeczasz sam sobie (?)

Cytat(gekon @ 6.05.2007, 22:26:34 ) *
z jakimiś dziwnymi zakończeniami tagów (z punktu widzenia przeglądarki). Po co psuć sieć skoro to samo można osiągnąć za pomocą HTMLa 4.01?

Ale XHTML to nie tylko zakończenia tagów ale też inne rzeczy. Pisząc w xhtml'u nie zastosujesz np, font bo jakby to zrobił to validator Ci o tym przypomni..

Rozumiem, że jeśli nie wysyłam HTMLa jako application/xhtml+xml to IE traktuje to jako zwykły HTML ale to jedna przeglądarka. Chociaż robiłem przed chwilą szybki test i Firefox 2.0 też się wyłożył. Opera też miała problem z poprawnym wyświetleniem strony ale była najbliższa ideałowi..
gekon
1. Linki z syganturki.
Wszystkie maja XHTML 1.0 Strict z czego: 2 (pierwsza i trzecia) są wysyłane jako aplikacje XMLa (dla przeglądarek, które to rozumieją), jedna jest prezentacją tylko przeze mnie przetłumaczoną (druga), a na ostatnią nie mam czasu (poza tym robiłem ją dość dawno).

2. Font & Co.
Czytaj dokładnie. HTML Strict też nie ma font i reszty.
Jarod
Ja już także jestem za stosowaniem html strict. Stosować dtd xhtml 1.0 strict i serwować dokument jako text/html mija się z celem. Oczywiści można zbudować poprawnie xhtml'a wykorzystując negocjowanie zawartości i przeglądarkom nie obsługującym xhtml (czytaj. IE6, 7 i 8) serwować text/html ale... Jeśli zaserwujesz dokument jako xhtml/xml nie działa np. document.write, który bardzo często jest wykorzystywany. Nie znalazłem do tej pory obejścia tego problemu. Jedynym dla mnie plusem stosowania poprawnego xhtml jest sprawdzanie poprawności budowanego dokumentu odczas parsowania. Zrobisz mały błąd i strona nie wyświetli się. Zamiast tego ujrzysz komunikat o błędzie parsowania dokumentu xhtml (łątwo znaleźć błędy i nie trzeba bawić się walidatorem w3c)

Czy ktoś może napisać jakie inne plusy daje pełny xhtml?
Kreton
Ale co rozumiesz przez pełny XHTML ?
Dokument poprawny składniowo ? Poprawny semantycznie ? Wysyłany poprawnie czyli jako XML ?
Bo na każde z tych pytań odpowie się inaczej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.