Zmiany w XHTML 1.1 Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
wtorek, 26 października 2010 12:35

Poniższy artykuł jest poniekąd kontynuacją wcześniejszego "XHTML 1.0 dla ułomnych przeglądarek". Chciałbym tu opisać róznice między XHTML 1.0 a nowszą wersją 1.1.

Dokument ściśle zgodny z XHTML 1.1 to dokument, który wymaga jedynie cech opisanych w tej specyfikacji jako obowiązkowe. Taki dokument musi spełniać wszystkie poniższe kryteria:

  1. Elementem głównym dokumentu musi być html.
  2. Element główny dokumentu musi wyznaczać przestrzeń nazw XHTML przy użyciu atrybutu xmlns [XMLNAMES]. Adresem przestrzeni nazw dla XHTML jest http://www.w3.org/1999/xhtml.
  3. Przed elementem głównym musi istnieć deklaracja typu dokumentu (DOCTYPE). Jeśli w deklaracji typu dokumentu jest obecny identyfikator publiczny, musi on odwoływać się do DTD zawartego w http://mig.webpark.pl/w3c/xhtml11/xhtml11.html#a_xhtml11_dtd, przy użyciu formalnego identyfikatora publicznego. Identyfikator systemowy może być odpowiednio zmodyfikowany.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
          "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

 

Przykład dokumentu XHTML 1.1

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/style.css"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" >
<head>
    <title>Przykład dokumentu zgodnego z XHTML 1.1</title>
</head>
<body>
    <h1>Poprawny dokument <abbr title="eXtensible HyperText Markup     Language">XHTML 1.1</abbr></h1>
</body>
</html>

Weź pod uwagę, że w powyższym przykładzie występuje deklaracja XML. Deklaracja XML, taka jak ta, nie jest wymagana we wszystkich dokumentach XML. Jednakże zdecydowanie zaleca się, by autorzy dokumentów XHTML stosowali deklarację XML we wszystkich swoich dokumentach. Deklaracja taka jest wymagana, gdy kodowanie znaków w dokumencie jest inne niż domyślne UTF-8 lub UTF-16.

Jak widać różnice z kodem XHTML 1.0 strict są marginalne. Mogą być podsumowane następująco:

  1. Dla każdego elementu został usunięty atrybut lang, na korzyść atrybutu xml:lang.
  2. Dla elementów a i map został usunięty atrybut name, na korzyść atrybutu id.
  3. Dodano zestaw elementów „ruby”.

Źródło: http://mig.webpark.pl/w3c/xhtml11/xhtml11.html#a_changes

XHTML 1.0 zabronił wpływać na działanie przeglądarki. Przykładem może tu być zlikwidowanie atrybutu `target'. Dawniej powodował on otworzenie zasobu wskazywanego przez hiperłącze w nowym oknie.

Co prawda można było to obejść za pomocą JS:

<a href='http://www.zasob.pl' onclick='this.target = "_blanc";'>Otwórz w nowym oknie</a>

Wymaga to jednak od klienta, aby miał włączoną obsługę JS. Poza tym, wygląda to nieelegancko. Nie wspominając o fakcie, że owy zasób otworzy się w nowym oknie tylko jeśli klikniemy na niego myszą (onclick). A co z ludźmi, którzy wolą używać klawiatury?

W XHTML 1.1 możemy sami zdefiniować sobie tego typu atrybuty. Oto przykładowy kod:

<!DOCTYPE html PUBLIC "-//golem.ph.utexas.edu//DTD XHTML 1.1 plus Target 1.0//EN" 
    "http://golem.ph.utexas.edu/DTD/xhtml11-target.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title>A test of  XHTML 1.1 + Target</title>
</head>
<body>
    <p>To jest dokument XHTML 1.1 z własnym modułem 
    <code>target</code>.Wykorzystuje dodatkowe DTD  i waliduje się jako
    <code>XHTML 1.1 + Target 1.0</code>.</p>
    <p>kliknij na <a href="http://golem.ph.utexas.edu/~distler/blog/"
    target="_blank">ten link</a>, aby otworzyć nowe okno – bez JS</p>
</body>
</html>

źródło: http://golem.ph.utexas.edu/~distler/blog/files/zeldman.html