Perché non XHTML5?


53

Quindi, mi viene detto che HTML5 è il grande passo avanti. L'ultimo passo in avanti di cui sono a conoscenza è stata l'introduzione di XHTML. I vantaggi erano evidenti: semplicità, rigore, capacità di utilizzare parser e generatori XML standard per lavorare con le pagine Web e così via.

Che strano e frustrante, quindi, che HTML5 torni tutto indietro: ancora una volta stiamo lavorando con una sintassi non standard; ancora una volta, dobbiamo occuparci del bagaglio storico e della complessità dell'analisi; ancora una volta non possiamo usare le nostre librerie, parser, generatori o trasformatori XML standard; e tutti i vantaggi introdotti da XML (estensibilità, spazi dei nomi, standardizzazione e così via), che il W3C ha trascorso un decennio spingendo per buoni motivi, sono persi.

Bene, abbiamo XHTML5, ma sembra che non abbia guadagnato popolarità come ha fatto la codifica HTML5. Vedi questa domanda SO , per esempio. Anche la specifica HTML5 afferma che HTML5, non XHTML5, "è il formato suggerito per la maggior parte degli autori".

Ho sbagliato i miei fatti? Altrimenti, perché sono l'unico che si sente in questo modo? Perché le persone scelgono HTML5 su XHTML5?


6
+1 Vedo che non sono l'unico frustrato dalla perdita di tutti i vantaggi XML in HTML5.
Arseni Mourzenko,

Honking buona domanda, ben messa.
Konrad Rudolph,

1
Spero di non essere l'unico a essere contento della perdita di tutti gli svantaggi di XML in HTML5. Ad esempio, confrontiamo HTML5 valido con XHTML valido. HTML5 <!DOCTYPE html>Hello World<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"><html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><title></title></head><body>Hello World</body></html>
:,

@zzzzBov, sicuramente non sei l'unico ad essere contento, ed è per questo che ho posto questa domanda in primo luogo. Inoltre: non scriveresti sul serio <!DOCTYPE html>Hello World, vero? Prova questo su questo validatore .
jameshfisher,

1
@eegg, a quanto pare non hai letto le specifiche sul tag di inizio opzionali , perché ho seriamente vorrei scrivere <!DOCTYPE html>Hello World!, come è perfettamente HTML5 valido. Documenti più brevi significano meno banda con spese generali, il che equivale a risparmi significativi per le grandi aziende (hai visto cosa invia Google per www.google.com?).
zzzzBov,

Risposte:


25

Consiglierei di leggere Come siamo arrivati ​​qui? . Mark Pilgrim offre una eccellente e breve storia di HTML fino a HTML5.

Fondamentalmente, la mia comprensione è che molte pagine Web non sfruttano nemmeno la "X" di XHTML perché non specificano il tipo MIME appropriato per esso.


18
Si. Il mio riassunto di quella storia sarebbe: "Ehi, nessuno è conforme alle specifiche. Forse potremmo farle conformare alle specifiche specificando che le persone possono fare gli errori che vogliono. Quindi alla fine tutti i nostri documenti saranno privi di errori e conforme agli standard ". Non va bene dalla scrittura di una specifica con l'assunto iniziale che nessuno rispetta le specifiche.
jameshfisher,

1
@Egg, la tua ultima riga mostra la tua ignoranza alla realtà. Molti sono già arrivati ​​dall'ipotesi che nessuno sia perfetto . Piuttosto che la specifica che dice "se si commette un errore, tutto è rotto", invece dice "se si commette [questo tipo di errore], [questo risultato] è ciò che dovrebbe accadere". Quanti libri sarebbero sui nostri scaffali se dovessero avere l'ortografia, la punteggiatura e la grammatica corrette al 100% per essere pubblicati?
zzzzBov,

6
@zzzzBov, la tua analogia con i libri pubblicati è strana. Perché un parser HTML dovrebbe essere più tollerante di un parser per [qualsiasi altra lingua qui], in cui si verifica un errore di sintassi con un messaggio di errore? Immagina il caos in cui saremmo se i nostri compilatori C facessero del loro meglio per reinterpretare silenziosamente la sintassi rotta.
jameshfisher,

@eegg, posso immaginare cosa succederebbe se un parser per qualsiasi altra lingua reagisse agli errori di sintassi in un modo più tollerante: passeremmo meno tempo a cercare parentesi fuori posto e punti e virgola mancanti e più tempo a digitare il codice funzionale. Non sto dicendo che i bravi programmatori non renderebbero ancora i loro programmi ben formati, ma certamente aiuterebbero i programmatori mediocri a scrivere codice funzionante. Un Cprogramma probabilmente finirebbe per apparire molto più simile a un Pythonprogramma in quanto i punti e virgola e le parentesi potrebbero scomparire per lo più e ciò che rimarrebbe è il codice importante.
zzzzBov,

"La risorsa richiesta /past.htmlnon è più disponibile su questo server e non esiste un indirizzo di inoltro."
Marco

6

Se produci html5 compatibile con xml e li invii con xml come tipo mime, il parser xml verrà utilizzato per tutto ciò che il buon jazz ritorna;)

EDIT: vedi che per qualche informazione in più: http://wiki.whatwg.org/wiki/HTML_vs._XHTML


Definisci "buon jazz". AFAIK non ha alcun vantaggio nell'analizzare HTML come XML. Generare e trasformare sono altre questioni, quelle possono essere convenienti, ma l'analisi da sola non offre vantaggi, solo aspetti negativi (rende fatali i bug cosmetici).
Joeri Sebrechts,

3
@Joeri Il fatto che sia molto più semplice analizzare è un vantaggio nel mio libro, per una serie di motivi (un analisi rigorosa facilita la ricerca di errori, un migliore supporto degli strumenti perché gli strumenti sono più facili da scrivere, una più facile sanificazione dell'input, ecc.).
Konrad Rudolph,

Puoi anche fornire alcune funzionalità non disponibili in html standard, come micin xhtml con altri contenuti xml, e in generale usare tutte le funzionalità xml, spazi dei nomi per esempio. il parser html è in grado di correggere un codice sorgente errato - bug cosmetici come li chiami tu - ma quelle correzioni hanno un prezzo. Il prezzo è che il browser deve sapere cosa è probabile che trovi nel codice, limitando così le funzionalità disponibili.
deadalnix,

3

HTML5 è la conclusione logica e inevitabile dei browser che adottano la legge di Postel ("Sii liberale in ciò che accetti").

Una volta che un browser con una quota di mercato sufficiente adotta questo principio, altri sono costretti a seguire l'esempio, non solo per essere liberali accettando contenuti non conformi, ma anche per renderlo allo stesso modo dei loro concorrenti. HTML5 è il risultato logico di quella situazione: i venditori di browser hanno deciso che, poiché non rifiuteranno alcun contenuto come non valido (almeno, non a livello HTML - Javascript è un'altra cosa!), Potrebbero anche sedersi attorno al tabella e concordare un'interpretazione per tutto ciò che l'autore del contenuto potrebbe lanciargli. In questo ambiente, non hanno reagito gentilmente ai fanatici degli standard dicendo loro che se solo avessero rifiutato il contenuto mal formato dalla parola, non sarebbero entrati in questo pasticcio.

Quindi io e te possiamo gridare a margine e dire ai venditori di browser e ai loro utenti che il mondo sarebbe stato un posto migliore se non avessero creduto a John Postel, ma il danno è fatto ed è molto difficile annullarlo.


3
La storia della sciatteria concorrente dei browser è abbastanza vera. Ma ecco il punto: ecco perché esistono i fanatici degli standard. Se tutti i browser avessero fatto rispettare le regole fin dall'inizio, le organizzazioni come il W3C non avrebbero dovuto essere qui per tenere sotto controllo le cose. L'intero punto delle norme è il controllo dei danni; per l'organismo di standard di cedere e accettare la sciatteria sconfigge il suo stesso scopo.
jameshfisher,

1
@eegg: HTML5 ridefinisce le regole di analisi per rendere tutti gli input validi e avere comunque conseguenze prevedibili. Se gli errori di sintassi sono impossibili, un'intera classe di bug viene esclusa dall'inizio. La capacità di XML di avere errori di analisi è un difetto di progettazione e dovrebbe essere riconosciuta come tale.
Joeri Sebrechts,

1
@Joeri, la tua posizione sembra essere quella della specifica HTML5, portata alla sua folle conclusione logica. "HTML5 ridefinisce le regole di analisi per rendere validi tutti gli input" - non è così. Il concetto di analisi degli errori esiste ancora. "Se gli errori di sintassi sono impossibili, un'intera classe di bug viene esclusa dall'inizio" - forse questa è una parodia? Questa logica è ciò che ho sarcasticamente parafrasato nel mio commento alla risposta di @pthesis. Sì, la classe di errori di sintassi viene rimossa, per essere sostituita da una classe più ampia di errori di correzione della sintassi del browser .
jameshfisher,

2

Le specifiche HTML5 sono state notevolmente migliorate rispetto alle specifiche HTML4. In particolare, la gestione delle condizioni di errore e del markup non valido è effettivamente standardizzata, il che significa che tutti i browser che implementano correttamente lo standard gestiranno il markup non valido allo stesso modo.

L'HTML è scritto dagli umani il più delle volte (di solito in combinazione con un qualche tipo di linguaggio di template) e gli umani commettono errori. Finché tutti i browser gestiscono gli errori di sintassi allo stesso modo, la regola "sii liberale in ciò che accetti" è perfettamente accettabile.

La produzione di XML validi offre davvero pochi vantaggi, dal momento che strumenti e librerie per gestire l'HTML sono (quasi) altrettanto prontamente disponibili e che l'HTML è più facile da scrivere rispetto all'XML.


Oltre le specifiche HTML4 , sì. Ma il mio punto è che XHTML1.1 è già migliorato su questo. Gli strumenti / le librerie per gestire l'HTML tendono ad essere come BeautifulSoup - mentre strumenti meravigliosi, dovrebbero morire insieme alle pagine per cui sono stati creati.
jameshfisher,

1

Non otterrai mai i vantaggi di un parser più semplice o di strumenti XML standard sul lato client.

Ci sono miliardi di pagine sul Web in HTML, alcune sono scritte da persone morte da tempo, quindi non verranno mai aggiornate in XML. Quindi, se si desidera creare un user agent generalmente utile si deve essere in grado di analizzare vecchio stile HTML in ogni caso. Probabilmente XHTML introduce solo ulteriore complessità poiché richiede una nuova modalità di analisi oltre all'analisi HTML che devi già supportare.

Sul lato server è ancora possibile sfruttare gli strumenti XML ad es. generare XHTML usando XSLT. Ma se non si utilizza specificamente una toolchain XML, non vi è alcun vantaggio nell'uso della sintassi XML piuttosto che nel solo HTML.

(Non è corretto che l'HTML sia una sintassi "non standard". La sintassi dell'HTML è specificata nei minimi dettagli nelle specifiche HTML5, quindi è tanto uno standard quanto la sintassi XML.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.