Unde se află definiția tipului de document HTML5? (Programare, Html, Dtd, Sgml)

Šime Vidas a intrebat.

Standardele HTML/XHTML „vechi” au un DTD (Document Type Definition) definit pentru ele:

HTML 4.01 http://www.w3.org/TR/html401/sgml/dtd.html
XHTML 1.0 http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_XHTML-1.0-Strict

Aceste DTD-uri specifică regulile de înglobare a elementelor – „ce tipuri de elemente pot apărea în ce tipuri de elemente”. Am realizat o diagramă pentru XHTML 1.0 aici (îmi pare rău, dar nu mai am această resursă)

Aș dori să actualizez acea diagramă cu o nouă versiune care să includă și noile elemente HTML5. Cu toate acestea, nu pare să existe o DTD HTML5. Se pare că regulile de înglobare sunt definite de diferitele modele de conținut definite în HTML5.

Așadar, nu există un DTD, corect?

Întrebare ulterioară: Există vreun motiv pentru care nu există un DTD în HTML5? DTD este o metodă atât de bună de definire a regulilor de înglobare pentru toate tipurile diferite de elemente. De ce nu ar fi inclus un astfel de lucru?

Actualizare: Am găsit asta: http://www.w3.org/TR/html5/dom.html#kinds-of-content Cred că acesta este cel mai apropiat de un DTD.

Actualizare: Echipa Visual Studio a realizat o schemă XML pentru XHTML5. Cred că asta răspunde la întrebarea mea: http://blogs.msdn.com/b/webdevtools/archive/2009/11/18/html-5-intellisense-and-validation-schema-for-visual-studio-2008-and-visual-web-developer.aspx

Comentarii

  • Legătura http://vidasp.net... m-a redirecționat aici: –  > Por RubenGeert.
  • @pythonforspss.org Da. Nu mai am acel domeniu. Am eliminat acel link. Mulțumesc că m-ați informat. –  > Por Šime Vidas.
  • Același lucru pentru XSD: stackoverflow.com/questions/5638366/… –  > Por Ciro Santilli新疆棉花TRUMP BAN BAD.
  • Acesta nu este un răspuns, dar dacă încă te interesează întrebarea, s-ar putea să te intereseze asta: github.com/unsoup/validator –  > Por Graham Hannington.
5 răspunsuri
Jukka K. Korpela

Nu există un DTD HTML5. RC HTML5 în mod explicit spune acest lucru când discută despre serializarea XHTML, iar acest lucru se aplică în mod clar și la serializarea HTML.

DTD-urile au fost considerate de către proiectanții HTML5 ca fiind prea limitate în ceea ce privește puterea de expresie, iar validatorii HTML5 (practic, modul HTML5 de http://validator.nu și copia sa de la http://validator.w3.org/nu/) utilizează scheme și verificări ad-hoc, nu validarea bazată pe DTD.

În plus, HTML5 a fost conceput astfel încât scrierea unui DTD pentru el este imposibilă. De exemplu, nu există nicio modalitate SGML de a captura regula HTML5 conform căreia orice nume de atribut care începe cu „data-” și care respectă anumite reguli generale este valid. În SGML, atributele trebuie să fie enumerate individual, astfel încât un DTD ar trebui să fie infinit.

Este posibil să se proiecteze DTD-uri care să corespundă HTML5 cu unele omisiuni și poate cu unele reguli suplimentare impuse, dar acestea nu vor fi cu adevărat DTD-uri HTML5. Site-ul meu experiment cu această idee nu este foarte încurajator: prea multe limitări, prea complicat, iar DTD-ul ar trebui să fie atât de permisiv încât multe erori de sintaxă să nu fie detectate.

Comentarii

  • DTD este o chestie SGML și XML. Un DTD XML este chiar mai limitat în ceea ce privește puterea de exprimare decât un DTD SGML; XML este o simplificare a SGML și în acest domeniu. –  > Por Jukka K. Korpela.
  • @JukkaK.Korpela – nu sunt sigur dacă încă te mai interesează acest lucru, dar intrarea <colgroup> din falsul tău DTD HTML5 pare să fie cu siguranță incorectă. Singurul copil permis este <col>, iar acesta nu pare să fie inclus, în timp ce copiii nevalabili sunt enumerați prin %phrase; –  > Por pgoetz.
  • Toate acestea sunt atât de nefericite; există unele lucruri care nu au sens, de exemplu, o etichetă head în interiorul unei etichete body, sau un div în interiorul unui span. Așadar, ar trebui să existe o modalitate de validare a sintaxei HTML, la fel cum un javascript ar arunca erori de logică atunci când se comite o greșeală de logică. –  > Por blagus.
Adam

Corect. Nu există un DTD. Cu toate acestea, documentele HTML5 ar trebui să înceapă cu <!DOCTYPE html> Deci, există un DOCTYPE, dar nu există un DTD.

Vedeți:

Comentarii

  • @Šime Vidas DTD-ul provine din rădăcinile SGML ale HTML. HTML5 nu se mai bazează pe SGML, deci nu există DTD. –  > Por Adam.
  • @Adam Dar cum rămâne cu XHTML5? Este o aplicație a XML. Deci, ar trebui să aibă un DTD sau XML Shema, nu? –  > Por Šime Vidas.
  • @Šime Vidas Bună observație. Nu știam despre XHTML5. Aveți dreptate, ar trebui să fie posibil să se creeze unul. Am făcut o căutare rapidă pentru a vedea dacă cineva a creat unul și am găsit johndyer.name/post/… și pentru entitățile HTML5 w3.org/2003/entities/2007/w3centities-f.ent –  > Por Adam.
  • @Adam Excelent. Linkul către XML Shema este aici: blogs.msdn.com/b/webdevtools/archive/2009/11/18/… –  > Por Šime Vidas.
  • @pythonforspss.org Browserul știe din doctype că documentul este HTML5. Browserele moderne știu cum să interpreteze HTML5. –  > Por Adam.
Kevin

Am creat un DTD HTML5 pentru a fi utilizat în proiectele mele PHP XML. Nu este frumos, dar funcționează cu XHTML5 bine format (adică HTML5 exprimat ca XML).

Îl puteți lua de pe contul meu bitbucket aici:

https://bitbucket.org/kashbridge/dtd/overview

Bucurați-vă de el!

Comentarii

  • DTD-ul lui Jukka K. Korpela a fost deja menționat de el însuși în răspunsul acceptat, @Hibou57. –  > Por Palec.
imhotap

Anumite Marcus de la sgmljs.net a creat și analizat un SGML DTD pentru HTML 5.1 și a inițiat un un fir de discuție în lista de discuții XML-DEV pentru analiză și discuții. Până în prezent, discuția se învârte în jurul definițiilor entităților.

Tocmai am finalizat analiza recomandării HTML 5.1 a W3C la adresa http://sgmljs.net/docs/html5.html (mai degrabă din perspectiva limbajului de marcare decât din cea a dezvoltării web) și o public aici pentru revizuire, sub forma unei DTD SGML inițiale pentru analiza HTML 5.1, împreună cu un text de analiză lung.

[…]

Sunt conștient de faptul că WHATWG și W3C s-au îndepărtat de mult timp de SGML (și de XML în majoritatea lucrărilor de specificații legate de web), tratându-l ca pe o tehnică moștenită și cu o atitudine oarecum prezumțioasă în textul specificațiilor și în alte părți. Dar, după cum arată analiza gramaticii HTML5, ei au abandonat în esență utilizarea oricăror metode formale (și acest lucru se vede în cel puțin două defecte discutate în analiză).

Nu există încă nimic oficial, dar poate că această inițiativă va avea succes sau cel puțin își va găsi utilizatori ca resursă neoficială.

Comentarii

  • Mi s-au părut interesante informațiile despre inițiativă, iar acest răspuns a adus cu siguranță mai mult decât un simplu link, @cpburnz (și alți recenzenți). Un alt răspuns din acest Q&A are un conținut foarte asemănător – doar un link și o scurtă descriere a unui alt DTD HTML 5 neoficial. A primit 6 upvotes și niciun downvotes. Am inclus informații relevante din lista xml-dev și nu văd o modalitate mai bună de a răspunde la această întrebare acum. –  > Por Palec.
Blake

Cred că au eliminat vechile DTD-uri, acum începem doar paginile HTML cu: <!DOCTYPE HTML>

Poate că W3C va veni cu unul în cele din urmă.

Tags:, ,