html - span - title attribute width




HTML 4, HTML 5, XHTML, tipi MIME: la risorsa definitiva (4)

HTML

QA

  • HTML5 ha ancora strumenti di QA piuttosto immaturi
  • HTML 4 è ​​in circolazione da molto tempo e ha strumenti di controllo qualità molto maturi

Supporto del browser

  • HTML 5 - Bit e pezzi sono supportati da vari browser. Hai bisogno di Javascript per supportare la maggior parte delle cose, elementi strutturali di base (come <section> ) ricadono molto male se Javascript non è disponibile. *
  • HTML 4 è ​​ben supportato

* Alcuni chiarimenti ed esempi necessari.

Gli argomenti di HTML rispetto a XHTML e XHTML come testo / html rispetto a XHTML come XHTML sono piuttosto complessi. Sfortunatamente è difficile ottenere un quadro completo, dal momento che le informazioni si diffondono per lo più in frammenti sul web o sono sepolte nel profondo del gergo tecnico W3C. Inoltre, è circolata una disinformazione. Propongo di rendere questa la risorsa SO definitiva sull'argomento, descrivendo gli aspetti più importanti di:

  • HTML 4
  • HTML 5
  • XHTML 1.0 come testo / html, application / xml + xhtml
  • XHTML 1.1 come applicazione / xml + xhtml

Quali sono le implicazioni pratiche di ciascuno?
Quali sono le insidie ​​più comuni?
Qual è l'importanza dei tipi MIME corretti per ciascuno?
Come gestiscono i diversi browser?

Mi piacerebbe vedere una risposta per tecnologia. Sto facendo di questo un wiki della comunità, quindi piuttosto che fornire risposte ridondanti, modifica le risposte per completare l'immagine. Sentiti libero di iniziare con gli stub. Sentiti libero di modificare questa domanda.


Strict vs. Transitional vs. Frameset

Perché?

HTML e XHTML sono disponibili in diversi formati, vale a dire Strict , Transitional e Frameset . Ogni "dialetto" specifica un diverso insieme di elementi che possono essere usati.

Saltare in profondità con Strict limita alcune delle tue opzioni fuori dalla scatola (ad esempio non essere in grado di specificare gli attributi di target ) che lo rendono un no-go per molti.

Principali differenze

Si prega di espandere


Contenuto.

  • Terminologia
  • Lingue e serializzazioni
  • specificazioni
  • Tipi di parser e contenuti browser (MIME)
  • Supporto del browser
  • Validatori e definizioni del tipo di documento
  • Quirks, Limited Quirks e Standards.

Terminologia

Una delle difficoltà nel descriverlo è chiaramente che la terminologia all'interno delle specifiche ufficiali è cambiata nel corso degli anni, da quando è stato introdotto per la prima volta l'HTML. Quello che segue è basato sulla terminologia HTML5. Inoltre, "file" è usato come termine generico per indicare un file, un documento, un flusso di input, un flusso di ottetti, ecc. Per evitare di dover fare distinzioni fini.

Lingue e serializzazioni

HTML e XHTML sono definiti in termini di linguaggio e serializzazione.

Il linguaggio definisce il vocabolario degli elementi e degli attributi e il loro modello di contenuto, ovvero quali elementi sono consentiti all'interno di quali altri elementi, quali attributi sono consentiti su quale elemento, insieme allo scopo e al significato di ciascun elemento e attributo.

La serializzazione definisce come viene utilizzato il markup per descrivere questi elementi e attributi all'interno di un documento di testo. Questo include quali tag sono obbligatori e quali possono essere dedotti e le regole per tali inferenze. Descrive cose come il modo in cui gli elementi del vuoto devono essere marcati (es. ">" Vs "/>") e quando è necessario quotare i valori degli attributi.

specificazioni

La specifica HTML 4.01 è la specifica corrente che definisce sia il linguaggio HTML che la serializzazione HTML.

Le specifiche XML 1.0 definiscono una serializzazione, ma lascia che il linguaggio sia definito da altre specifiche, che vengono definite "applicazioni XML"

Le specifiche XHTML 1.0 e 1.1 sono entrambe in uso. Essenzialmente, usano lo stesso linguaggio di HTML 4.01 ma usano una serializzazione diversa, una che è compatibile con la specifica XML 1.0. cioè XHTML è un'applicazione XML.

Le specifiche HTML5 (come da 2010-04-18, bozza) descrivono un nuovo linguaggio sia per HTML che XHTML. Questo linguaggio è principalmente un superset della lingua HTML 4.01, ma è inteso solo per essere compatibile con gli strumenti Web esistenti (ad es. Browser, motori di ricerca e strumenti di authoring) e non con specifiche precedenti, dove sorgono differenze. Quindi il significato di alcuni elementi viene occasionalmente modificato rispetto alle specifiche precedenti. Allo stesso modo, ciascuna serializzazione è retrocompatibile con gli strumenti attuali.

Tipi di parser e contenuti browser (MIME)

Quando un file di testo viene inviato a un browser, viene analizzato nella sua struttura di memoria interna (modello a oggetti). Per farlo usa un parser che segue le regole di serializzazione HTML o le regole di serializzazione XML. Il parser che utilizza dipende da cosa deduce il tipo di contenuto, in base ai file non locali nell'intestazione HTTP "content-type". Internamente, una volta analizzato il file, il browser tratta il modello di oggetto quasi nello stesso modo, indipendentemente dal fatto che sia stato originariamente fornito utilizzando una serializzazione HTML o XHTML.

Affinché un browser utilizzi il parser XHTML, l'intestazione HTTP del tipo di contenuto deve essere uno dei tipi di contenuto XML. Più comunemente, si tratta di application/xml o application/xhtml+xml . Qualsiasi tipo di contenuto non XML indicherà che il file, indipendentemente dal fatto che soddisfi tutte le regole della lingua e della serializzazione XHTML o meno, non verrà elaborato dal browser come XHTML.

L'utilizzo di un tipo di contenuto HTTP di text/html (o nella maggior parte degli scenari di fallback, in cui il tipo di contenuto è mancante o qualsiasi altro tipo non XML) farà sì che il browser utilizzi il suo parser di serializzazione HTML.

Una differenza chiave tra i due parser è che il parser di serializzazione HTML esegue il recupero degli errori. Se il file di input per il parser non rispetta le regole di serializzazione HTML, il parser si ripristinerà in modi reverse engineered dai browser precedenti e continuerà a costruire il suo modello a oggetti fino a raggiungere la fine del file. HTML5 contiene la prima definizione normativa del ripristino, ma nessun browser mainstream ha fornito un'implementazione dell'algoritmo abilitato in una versione rilasciata dal 2010-04-26.

Al contrario, il parser di serializzazione XML si interrompe quando incontra qualcosa che non può interpretare come XML (cioè quando scopre che il file non è XML ben formato). Questo è richiesto dai parser secondo la specifica XML 1.0.

Supporto del browser

La maggior parte dei browser moderni contiene il supporto sia per un parser HTML che per un parser XML. Tuttavia, in Microsoft Internet Explorer versioni 8.0 e precedenti, il parser XML non può creare direttamente un modello a oggetti per il rendering come una pagina HTML. La struttura XML può tuttavia essere elaborata con un file XSLT per creare un flusso che a sua volta viene analizzato utilizzando il parser HTML per creare un modello di oggetto che può essere reso.

A partire da Internet Explorer 9 Platform Preview, XHTML fornito utilizzando un tipo di contenuto XML può essere analizzato direttamente allo stesso modo degli altri browser moderni.

Quando i loro parser XML rilevano che i loro file di input non sono ben formati XML, alcuni browser visualizzano un messaggio di errore, altri mostrano la pagina come costruita fino al punto in cui è stato rilevato l'errore e alcuni offrono all'utente la possibilità di avere il file re-analizzato utilizzando il parser HTML.

Validatori e definizioni del tipo di documento

I file HTML e XHTML possono iniziare con una dichiarazione DTD (Document Type Definition) che indica la lingua e la serializzazione utilizzate nel documento. I validatori, come quello su http://validator.w3.org/ usano queste informazioni per abbinare la lingua e la serializzazione utilizzate all'interno del file rispetto alle regole definite nella DTD. Quindi segnala gli errori in base a dove vengono violate le regole nella DTD dal markup nel file.

Non tutte le serializzazioni HTML e le regole linguistiche possono essere descritte in un DTD, quindi i validatori testano solo un sottoinsieme di tutte le regole descritte dalle specifiche.

HTML 4.01 e XHTML 1.0 definiscono DTD rigorosi, di transizione e Frameset che differiscono negli elementi e negli attributi del linguaggio consentiti nei file conformi.

I validatori basati su HTML5 come validator.nu comportano più come browser, elaborano la pagina in base al tipo di contenuto HTTP e utilizzano una serie di regole non basata su DTD in modo che catturino errori che non possono essere descritti dai DTD.

Quirks, Limited Quirks e Standards.

I browser non convalidano i file inviati a loro. Né usano alcuna dichiarazione DTD per determinare la lingua o la serializzazione del file. Tuttavia, lo usano per indovinare l'era in cui è stata creata la pagina e quindi il probabile comportamento di analisi e rendering che l'autore si sarebbe aspettato da un browser in quel momento. Di conseguenza, definiscono tre modalità di parsing e rendering, note come Quirks mode, Limited Quirks (o Almost Standards) e Standards.

Qualsiasi file servito utilizzando un tipo di contenuto XML viene sempre elaborato in modalità standard. Per i file analizzati utilizzando il parser HTML, se non è disponibile DTD o il DTD è determinato per essere molto vecchio, i browser usano la loro modalità di quirks. In generale, i file HTML 4.01 e XHTML elaborati come text / html verranno elaborati con la modalità di limitazione limitata se contengono una DTD transitoria e con la modalità standard se si utilizza una DTD rigorosa.

Laddove la DTD non viene riconosciuta, la modalità è determinata da un complesso insieme di regole. Un caso particolare è dove vengono omessi gli identificatori pubblici e di sistema e la dichiarazione è semplicemente <! DOCTYPE html>. Questo è noto per essere la dichiarazione doctype più corta in cui i browser attuali considerano il file come modalità standard. Per questo motivo, è la dichiarazione specificata da utilizzare per i file conformi a HTML5.


Non è davvero così complesso, e in realtà non importa molto.

  • HTML e XHTML differiscono solo per la sintassi.
  • Non puoi servire XHTML come XML a Internet Explorer, e non ottieni alcun vantaggio in altri browser.

Cos'altro hai bisogno di sapere?





mime-types