C'è qualcosa di sbagliato nello scrivere parti di una pagina web in XHTML con un doctype HTML?

StackOverflow https://stackoverflow.com/questions/1040969

  •  22-07-2019
  •  | 
  •  

Domanda

Ho appena iniziato a studiare HTML/CSS e ho cercato di insegnare da solo buone pratiche di programmazione web.Ho familiarità con XML, quindi codificare le pagine Web in XHTML è stato abbastanza intuitivo e mi è sembrata una cosa valida da fare.Tuttavia, ho letto articoli come Questoe ora sono ambivalente.

Le mie preoccupazioni con la codifica in HTML e XHTML derivano da quanto segue:

  1. Non è necessario che i tag img siano chiusi in HTML e questo ha senso per me.Ma in XHTML, i tag img richiedono un tag di chiusura che sembra un po' strano.Penso solo che sia strano avere una coppia di tag di apertura e chiusura senza nulla in mezzo.
  2. I tag p (come nel paragrafo) non hanno bisogno di essere chiusi in HTML, e questo per me è strano.Ha senso separare un paragrafo tra i tag di apertura e di chiusura come faresti in XHTML.

Questi sono gli unici esempi di base che riesco a fornire al momento, ma spero che mostrino almeno quanto sono diviso tra HTML e XHTML.Quindi ecco la mia vera domanda:Va bene inserire il codice XHTML (quando sento che chiarisce adeguatamente qualcosa) quando sto codificando una pagina web che dovrebbe essere in HTML (con un DTD HTML)?Sono sicuro che il sito web avrebbe lo stesso aspetto, ma se le persone guardassero il mio codice sorgente, penserebbero che sono un programmatore terribilmente poco professionale?

Inoltre, ho guardato alla cieca tutorial e guide tramite Google su solide pratiche di programmazione web e mi chiedevo se voialtri aveste qualche consiglio/risorsa da condividere con me.Voglio davvero assicurarmi di imparare a farlo nel modo giusto.Lo apprezzerei molto.

Grazie per aver letto!

Modificare:Wow, risposte così veloci;voi ragazzi siete fantastici!Quindi capisco che i browser web saranno piuttosto indulgenti quando si tratta di questo genere di cose.Il mio problema è quindi una questione di vanità e di come si sentono gli altri professionisti a scrivere una sorta di mix di XHTML e HTML.Il codice rigorosamente conforme è la strada da percorrere?Onestamente non voglio sembrare un idiota, ahah.

È stato utile?

Soluzione

I tag IMG non devono essere chiusi in HTML e questo ha senso per me.

NO etichetta deve essere chiuso.Tutto elementi è necessario chiudere.

La maggior parte degli elementi sono costituiti da un tag di inizio, parte del contenuto e un tag di fine.

Poiché un elemento immagine non può avere contenuto, il tag finale non è necessario.In HTML, gli elementi che non possono avere contenuto ("elementi EMPTY") hanno i tag finali vietati.

Ma in XHTML, i tag img richiedono un tag di chiusura che sembra un po' strano.

XHTML è un'applicazione XML piuttosto che un'applicazione SGML e XML non ha tutte le funzionalità di SGML, inclusa la possibilità di specificare che un tag di fine è vietato.

Penso solo che sia strano avere una coppia di tag di apertura e chiusura senza nulla in mezzo.

XML introduce un nuovo tipo di tag: un tag a chiusura automatica (<foo />) che funge da tag di inizio e di fine combinati.

Se stai scrivendo XHTML compatibile con HTML (cosa che dovresti fare se scegli di utilizzare XHTML e desideri supportare browser che non supportano quella lingua, come Internet Explorer), allora Dovrebbe usa quella sintassi.(Io stesso preferisco attenermi all'HTML)

I tag p (come nel paragrafo) non hanno bisogno di essere chiusi in HTML, e questo per me è strano.

Molti elementi in HTML hanno opzionale tag finali.Ciò consente di omettere il tag di fine quando può essere implicito.

Per esempio:

<p>Hello, world
<p>A second paragraph

Poiché un elemento p non può contenere un altro elemento p, puoi implicare (con affidabilità al 100%) che l'inizio di un nuovo paragrafo chiuderà quello precedente.

Detto questo, lo sono opzionale, non proibito.Puoi scrivere HTML 4.01 con tag finali espliciti per qualsiasi elemento che non sia intrinsecamente vuoto.

Va bene gettare il codice XHTML (quando sento che chiarisce in modo appropriato qualcosa) quando sto codificando una pagina web che dovrebbe essere in HTML (con un DTD HTML)?Sono sicuro che il sito Web sembrerebbe lo stesso, ma se le persone guardassero la mia fonte, pensano che fossi un programmatore terribilmente poco professionale?

Sembrerebbe poco professionale.

Detto questo, ci sono solo tre casi in cui la sintassi XHTML non è conforme alla sintassi HTML:

Elementi vuoti - ad esempio <img> E <br> devono essere chiusi esplicitamente in XHTML ... ma hai detto che non ti piaceva quella sintassi.

Script e stili — devi usare riferimenti a caratteri o marcatori CDATA se usi determinati caratteri nel tuo JS e CSS incorporato in XHTML, ma questi elementi sono contrassegnati come CDATA nel DTD per HTML, quindi questo sarebbe sbagliato lì... ma non dovresti usare comunque script o stili incorporati.

Spazi dei nomi - ma non c'è momento in cui l'utilizzo di uno spazio dei nomi XML nel mezzo di un documento HTML possa avvicinarsi a chiarire qualcosa.

Altri suggerimenti

HTML 5 consente l'uso della sintassi XHTML.

Ora puoi iniziare a utilizzare un doctype HTML 5 che spingerà tutti i browser in modalità standard, ma tieni presente che le nuove funzionalità di HTML 5 sono supportate solo in alcuni browser.

Dal Web Hypertext Application Technology Working Group :

  

Dovrei chiudere elementi vuoti con / > o > ;?

     

Gli elementi Void in HTML (ad es. br, img e gli elementi di input) non richiedono una barra finale. per esempio. Invece di scrivere <br />, devi solo scrivere <br>. È lo stesso di HTML 4.01. Tuttavia, a causa dei diffusi tentativi di utilizzare XHTML 1.0, esiste un numero significativo di pagine che utilizzano la barra finale. Per questo motivo, la sintassi della barra finale è stata consentita sugli elementi vuoti in HTML per facilitare la migrazione da XHTML 1.0 a HTML5.

Il doctype meravigliosamente semplice di HTML 5 si presenta così:

<!DOCTYPE html>

Quindi sì, puoi scrivere HTML conforme agli standard con tag a chiusura automatica e verrà convalidato rispetto a un validatore HTML 5 . L'industria ha ampiamente scelto di adottare HTML5 su XHTML2, e di conseguenza non consiglierei l'uso di XHTML per nessun nuovo progetto.


Modifica: solo come punto di chiarimento, è sicuro usare il doctype HTML 5 ora, ed è anche sicuro supporre che HTML 5 sarà ampiamente adottato su XHTML 2 dato il supporto del settore. Ora puoi certamente creare documenti HTML 5, tuttavia molte delle funzionalità di HTML5, come <canvas> (in particolare privo del supporto di MS dato che è in concorrenza con Silverlight) non hanno supporto per browser diversi e sono soggette a modifiche.

È 'ok' nel senso che quasi tutti i browser lo renderanno correttamente, ma solo perché sono costruiti per gestire HTML / XHTML / XML non valido / qualunque cosa. Tuttavia, qualsiasi elemento che non corrisponde al tipo di documento dichiarato (nel tuo caso, DTD HTML) impedirà la convalida del codice ed è, tecnicamente, non valido.

D'altra parte, la stragrande maggioranza dei siti Web (anche quelli che vengono visualizzati correttamente) non convalidano, quindi non è un grosso problema. Vorrei attenermi a (rigoroso) XHTML; nota il commento di jimr sui tag a chiusura automatica (ad es. <img src="foo" />).

No, non va bene. In teoria, almeno. Se si scrive la sintassi XHTML in un documento HTML, non è valido. Molto probabilmente i browser lo renderanno allo stesso modo, ma non è ancora valido. Inoltre, l'unica cosa valida in XHTML e non valida in HTML è un tag a chiusura automatica (<br />). Solo perché in HTML non ti viene richiesto di chiudere i tag, non significa che non puoi chiuderli. Puoi scrivere markup in questo modo:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent at enim sit amet urna placerat porttitor ut quis justo. Quisque posuere nisl ac libero dictum posuere. Suspendisse in magna neque. Donec et vestibulum sapien. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at nulla dui.</p>

<img src="" alt="">

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent at enim sit amet urna placerat porttitor ut quis justo.</p>

Vedi? È un HTML valido e ha un bell'aspetto.

A proposito: leggi questo .

<DOCTYPE> è un residuo di SGML e dovrebbe apparire solo una volta, nella parte superiore del documento. L'aggiunta di altre dichiarazioni DOCTYPE all'interno del documento costituirebbe una violazione sia di HTML che di XHTML, sebbene la maggior parte dei browser probabilmente ti perdonerebbe.

Se è necessario utilizzare entrambi in una pagina, forse posizionare il documento nidificato in un IFRAME sarebbe più coerente con gli standard poiché gli IFRAME per definizione ospitano un contesto finestra / documento separato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top