Autor Zpráva
Chamurappi
Profil
Moderátor Chamurappi: Vytrženo z budúcnosť JPW.

… Kdyby Yuhů začal psát o pár let dříve, mělo by dodnes být u elementu <p> napsáno, že to je nepárový předěl mezi odstavci? …
Tomáš123
Profil
Chamurappi:
mělo by dodnes být u elementu <p> napsáno, že to je nepárový předěl mezi odstavci?
Asi. :-)
anonymníí
Profil *
Tomáš123:
Ten odkaz, co přikládáš, nesouvisí s tím, co píše Chamurappi.

Z toho odkazu (a tedy dnešního chápání odstavce prohlížeči) vyplývá, že odstavec není nepárový (což píše Chamurappi), on je párový. Jen s volitelnou koncovou značkou.

Původní funkce tagu <p> nebylo obalení textu do odstavce, velmi zjednodušeně by se dal chápat jako dnešní <br><br>. Kód s ním by vypadal tehdy nějak takto.

První odstavec 
<p>
Druhý odstavec
<p>
Třetí odstavec

Samozřejmě je nesmysl, aby toto na JPW bylo. Jediný účel by byl matení začátečníků, tento pohled do historie nikoho, kdo hledá informace o odstavci, nezajímá.
Tomáš123
Profil
anonymníí:
nesouvisí
Súvisí, ale v tom zmysle, že na paragrafe <p> sa dá celkom ľahko dokázať, že neukončovanie (možno iba niektorých) značiek je rovnako funkčné ako ich explicitné ukončenie. Ten príklad môžeme sledovať aj v odkázanom vlákne:
– „Nepleťte začiatočníka!“
• „Tak funguje HTML.“
– „Aj tak to pletie, ja by som to takto neučil...“
• „Funguje to všade, koncová značka sa nemusela písať odjakživa.“*

Prišlo mi ale ťažko pochopiteľné odkázať Chamurappiho na jeho vlastné slová. Neviem, či by si z toho nevyvodil niečo iné. Tak bola šanca, že si spomenie, čo k tomu vtedy napísal a možno aj správne pochopí, čo som tým myslel.

Samozřejmě je nesmysl, aby toto na JPW bylo.
Keď tak nad tým uvažujem, nie je. Kdesi by to mohlo byť spomenuté, aby si časť ľudí nemyslela, že urobí lepšie, keď pre istotu všetko uzavrie. Na to som chcel svojou reakciou poukázať.

*V špecifikácii som nenašiel jednoznačný dôkaz neexistenice koncovej značky, ale neviem ako to interpretovali prehliadače.

Chcel by som, aby nás odtiaľ s anonymníím niekto odmazal. Naše príspevky sa nevenujú tomu o čom je toto vlákno. Prípadne to ide niekam vyčleniť.
Moderátor Chamurappi: Vyčlenění bude lepší.
Chamurappi
Profil
Reaguji na anonymníího:
Samozřejmě je nesmysl, aby toto na JPW bylo.
Když se nad tím znovu zamyslím, tak kdybych psal JPW já, zrovna tohle bych možná někde zmínil (dole, velmi okrajově), protože to je zajímavá historická kuriozita. Ona mimochodem velmi dobře vysvětluje, proč má odstavec volitelnou ukončovací značku (=> proč do něj nikdy nejde dostat <div>). Samotné zdůvodnění ve smyslu „je přeci jasné, že nedává smysl mít odstavec v odstavci“ totiž podněcuje otázku, proč nefungují stejně třeba i nadpisy. Do nadpisu jde dát odstavec, tabulka i nadpis, přestože to sémanticky skřípe, ale syntaxe HTML tomu nevzdoruje… protože nadpisy odjakživa byly obalové elementy, kdežto odstavec ne.
anonymníí
Profil *
Chamurappi:
tak kdybych psal JPW já, zrovna tohle bych možná někde zmínil (dole, velmi okrajově)
Ani dolů mi to nepasuje. Možná na stránku "Historie", "Vývoj", nazvěme ji, jak je libo, ta by přítomná být mohla. Ale ne mezi znění aktuální definice odstavce tak, jak jej známe a používáme.

Do nadpisu jde dát [...] nadpis
Počkej, to je nějaké divné. Jak to přesně myslíš?

Kód
<h1>Nadpis 1<h2>Nadpis 2</h2> pokračování H1</h1>
bude interpretován tak, že nadpis do nadpisu zanořit nelze, výsledné HTML bude
<h1>Nadpis 1</h1>
<h2>Nadpis 2</h2>
pokračování H1</h1>

To, že do nadpisu jde dát jiné zvěrstvo, třeba tabulka, s tím souhlasím. Ale jiný nadpis tam určitě nejde. Nebo jsi to myslel nějak jinak?
Str4wberry
Profil
Ale jiný nadpis tam určitě nejde.

Jde: Živá ukázka
Chamurappi
Profil
Reaguji na anonymníího:
Mno, to jsem se zrovna nechtěně trefil do anomálie :-)

bude interpretován tak, že nadpis do nadpisu zanořit nelze
Ale proč nelze, když do něj pořád jde zanořit odstavec?
Kdysi dávno bývalo HTML částečně rozvolněno snahou prohlížečů o interpretaci špatně napsaného HTML. Nedělo se to v tak velké míře, jak se mnoho let říkalo, ale zrovna u nadpisů si Microsoft usmyslel, že bude na autory stránek hodný a některé chyby za ně opraví – třeba, že <h1> jde ukončit značkou </h2>. Vzpomínám si, že jsem kdysi viděl spor o tom, zda tohle má být součástí definice HTML 5 parseru, ale už jsem nesledoval, jak to dopadlo.

Hm, ale toto moje vysvětlení také nesedí, protože teď jsem si zkusil, že starší Explorer dovoluje dát nadpis do nadpisu – zkusil jsem ten tvůj kód. V tom případě nevím, jaký to má přesně důvod. Ale je to tak definované v HTML 5, jako zotavení ze syntaktické chyby (tzn. pořád je to alespoň po formální stránce jiné, než pravidlo s odstavci). Starší specifikace a starší prohlížeče to neznaly.
_es
Profil
Chamurappi:
Samotné zdůvodnění ve smyslu ‚je přeci jasné, že nedává smysl mít odstavec v odstavci‘
Ono to to až také jasné nie je. Keď sa dá do odstavca vložiť trebárs obrázok, alebo aj iframe s celým iným dokumentom, prečo by sa nemal dať vložiť napríklad zoznam? Je to také dodatočné zdôvodňovanie o „očividnom nezmysle“, ako keď sa zdôvodňovalo, že je očividný nezmysel dávať blokový prvok do odkazu - „veď to je predsa aj v pravidlách validácie HTML4“. A zrazu to nielen funguje (ako predtým), ale to je aj validné v HTML5.
Chamurappi
Profil
Reaguji na _es:
Obrázek může být klidně malý smajlík a <iframe> je „inline frame“, takže řádkové vlastně jsou… (v řeči CSS spíš inline-block).
Ale asi také jako jeden z hlavních důvodů, proč je uvnitř odstavce povolený <iframe>, je fakt, že vznikl později. V prohlížečích, které ho neznají, by mohl způsobovat výrazně jiný DOM, když by nevynutil </p>.
Bubák
Profil
Kdysi, tuším, že v dobách kralování IE5 (ve zdejší Diskusi jsem se na to ptal později), jsem narazil na podivné chovaní IE, nyní mne napadlo, že to souvisí s původním významem značky <p>
Jak funguje HTML v IE? p {margin-bottom}
Odkaz

Pro úplnost, IE8 a novější se ve standardním režimu chovají podle očekávání.
Když už jsme u té historie, co dělal starý Netscape, netuším, nezkoušel jsem.
Tomáš123
Profil
Chamurappi:
Písal si, že odstavec bol niekedy úplne nepárový a slúžil viac-menej ako vertikálna medzera. Bolo to niekedy ukotvené aj v špecifikácii. Skúsil som nájsť najstaršiu, ale nespomína sa to tam. Objasnil by si mi, prosím, ako to bolo?
anonymníí
Profil *
Tomáš123:
www.w3.org/MarkUp/draft-ietf-iiir-html-01.txt
Strana 5, kapitola "Structured Text" - tam je ukázka HTML kódu

<HTML>
  <TITLE>
    A sample HTML instance
  </TITLE>
  <H1>
    An Example of Structure
  </H1>
  Here's a typical paragraph.
  <P>
  <UL>
    <LI>
      Item one has an
      <A NAME="anchor">
        anchor
      </A>
    <LI>
      Here's item two.
  </UL>
</HTML>

Všimni si mj. neuzavřených LI. Asi to byl tehdy také standard, uzavírací značka přišla pravděpodobně až později (historii tolik nestuduji, usuzuji z ukázkového kódu).

Na straně 11 se pak píše:
Paragraph marks -- The P element marks the break between two paragraphs.
Chamurappi
Profil
Reaguji na anonymníího:
Asi to byl tehdy také standard, uzavírací značka přišla pravděpodobně až později
Přesně tak. Těsně pod tou zkopírovanou ukázkou kódu je také napsáno: „Some elements (e.g. P, LI) are empty. They have no content. They show up as just a start tag.


Reaguji na Tomáše123:
HTML+ byla tak trošku slepá větev, podobně jako HTML 3.0, spousta tamních nápadů (elementů i atributů) zůstala jen na papíře.

Skúsil som nájsť najstaršiu, ale nespomína sa to tam.
Jen tak pro zajímavost, mrkni do jejího zdroje – ta stránka také používá <p> starým způsobem.

Teď jsem si všiml, že v HTML+ je i popis tabulek, kde se píše: „The TR element is used to separate table rows.“ – takže <tr> byl také zamýšlen jako nepárový oddělovač. Ale netuším, jak byl doopravdy implementován o rok později v prvních prohlížečích, které podporovaly tabulky (tedy v Mosaicu 2 a Netscapu 1.1).


Reaguji na Bubáka:
nyní mne napadlo, že to souvisí s původním významem značky <p>
Dobrý postřeh, asi to tak bude.

co dělal starý Netscape, netuším, nezkoušel jsem
Až někdy nastartuji svůj historicky prohlížečový virtuál, zkusím si na to vzpomenout.
_es
Profil
Spomenul som si, že aj nejaká staršia verzia MS Wordu pri exportu do HTML použila značku <P> na oddeľovanie odsekov (slovensky spisovne správne namiesto odstavca).

Chamurappi:
Obrázek může být klidně malý smajlík a <iframe> je ‚inline frame‘, takže řádkové vlastně jsou… (v řeči CSS spíš inline-block).
Čiže môžu byť použité ako jeden znak. No nesedí to pri použití hodnôt left a right atribútu align.
Tomáš123
Profil
anonymníí:
Ďakujem za správny zdroj.

Pod kódom je napísané:
„Some elements (e.g. P, LI) are empty. They have no content. They show up as just a start tag.“

Neskôr Tim Berners-Lee objasňuje:
„Every element starts with a tag, and every non-empty element ends with a tag. Start tags are delimited by < and >, and end tags are delimited by </ and >.“

Napadlo mi, či kód nepredstavuje popis interpretácie, ale aby to tak určite vychádzalo, musel by sa prvok považovať za prázdny ak by nemal obsah hneď za počiatočnou značkou. To zrejme neplatí. Zhruba som si preletel tých 5 strán po ukážku a nezdá sa mi, že by som to vytrhol z kontextu.

Ďakujem, Chamurappi za reakciu aj tebe. K HTML+ som sa dostal cez W3 wiki, kde bola táto verzia uvedená prvá v zozname (nedarí sa mi dohľadať). Chybne som sa domnieval, že je najstaršia.

Môžete mi ešte vysvetliť, ako je myslená časť, že prvky P a LI nemajú žiadny obsah, keď obsah očividne majú a netvária sa, že by o tom nevedeli?
_es
Profil
Tomáš123:
ako je myslená časť, že prvky P a LI nemajú žiadny obsah, keď obsah očividne majú a netvária sa, že by o tom nevedeli?
Tak to bolo „myslené“ vtedy, keď bol ten dokument vytvorený, teraz to je „myslené“ inak.
Tomáš123
Profil
Aj <li> bol kedysi iba oddeľovač, čo? Uniklo mi ako to anonymníí myslel. Hľadal som rozdiel medzi paragrafom (nepárovým oddeľovačom) a položkou zoznamu (nepovinne párovým prvkom).
_es
Profil
Tomáš123 [#18]:
Pod prázdnym elementom je v tej staršej špecifikácii asi myslené to, že podľa nej mali vtedy len počiatočnú značku (They have no content. They show up as just a start tag.) a nie koncovú - neexistovalo nielen </P>, ale ani </LI>. Teda nie účel elementu.
Chamurappi
Profil
Reaguji na Tomáše123:
že prvky P a LI nemajú žiadny obsah
Pojem empty element je odborný termín, kterým se u nás běžně označuje nepárový element. V DTD byl takový element definovaný, že má nepovinnou ukončovací značku (- O) a že jeho obsah je EMPTY – při čemž tato kombinace znamenala, že je ukončovací značka přímo zakázaná (=> validátor křičí, když ji najde). Ve všech verzích HTML založených na SGML takto existuje třeba <link> a v uživatelsky přívětivé tabulce elementů z HTML 4 je u všech empty elementů uvedeno, že je end tag zakázaný, aby to bylo jasnější.

V tom nejstarším návrhu HTML z června 1993 je také uvedená (nedodělaná) DTD, kde se píše:
<!ELEMENT P     - O EMPTY -- separates paragraphs -->
<!ELEMENT DT    - O EMPTY>
<!ELEMENT DD    - O EMPTY>
<!ELEMENT LI    - O EMPTY>
… takže <dt> a <dd> byly též nepárové.

Zároveň tam jsou zajímavě definované i povolené obsahy seznamových elementů:
<!ELEMENT DL    - -  (DT | DD | P | %htext;)*>
<!--  Content should match ((DT,(%htext;)+)+,(DD,(%htext;)+)) But mixed content is messy.  -->
<!ELEMENT (UL|OL) - -  (%htext;|LI|P)+>
<!ELEMENT (DIR|MENU) - -  (%htext;|LI)+>
<!--  Content should match ((LI,(%htext;)+)+) But mixed content is messy.  -->
… při čemž %htext vyjadřuje (po rozepsání dalších vnořených entit):
<!ENTITY % htext "A | #PCDATA | IMG | EM | TT | STRONG | B | I | U | CODE | SAMP | KBD | KEY | VAR | DFN | CITE">
Jinými slovy:
• Přímo do seznamů šly dát všechny řádkové elementy i prostý text.
• Přímým potomkem <dl>, <ul> a <ol> mohl být i odstavec.
• Do seznamů nešly zanořit další seznamy.
• Tvůrci HTML soudě dle komentářů věděli, že by mohli definovat obsah lépe, ale přišlo jim to upatlané :-)


Reaguji na _es:
Čiže môžu byť použité ako jeden znak. No nesedí to pri použití hodnôt left a right atribútu align.
V témže starém draftu je atribut align uvedený na straně 17 a jeho dovolené hodnoty jsou TOP, MIDDLE a BOTTOM (zajímavé je, že v DTD ten atribut chybí). Plavání tudíž vzniklo později.
Vzhledem ke struktuře SGML by dost dobře nešlo nadiktovat, že <img align="left"> má ukončovat odstavec a obyčejný <img> ne.
Tomáš123
Profil
Chamurappi:
Vychádzajúc z prvého výpisu DTD (dúfam, že sa niekedy bude podrobnejšie rozoberať aj tento pojem), ako oddeľovač bol zamýšľaný iba paragraf. Ostatné prvky si predstavujem ako napríklad <input>. Nemajú koncovú značku, ale vo vývojárskych nástrojoch jasne vidím rozmery. Mám teda ešte poslednú otázku k tejto časti. Je aj have no content slovné spojenie so skresleným významom po preklade, zle si predstavujem staršie nepárové značky, alebo mi opäť niečo uniká?

takže <dt> a <dl> byly též nepárové.
Nemyslel si <dd>?
Chamurappi
Profil
Reaguji na Tomáše123:
Nemyslel si <dd>?
Myslel, pardon, opraveno.

z prvého výpisu DTD (dúfam, že sa niekedy bude podrobnejšie rozoberať aj tento pojem)
Ono na něm není moc co rozebírat. Jednak to byl přežitek už v době, kdy ho kodéři začínali vnímat, jednak ho nikdy žádný prohlížeč nebaštil (vyjma XML formátů, kde jsou DTD hodně osekané).
Jestli tě to opravdu zajímá, můžu ti doporučit k prolistování online knížku SGML and HTML Explained, třeba kapitolu o elementech.

ako oddeľovač bol zamýšľaný iba paragraf
Části mezi -- a -- jsou jen komentáře. To je na DTD asi nejvíc matoucí, že půlka z toho nesrozumitelného chuchvalce menšítek, většítek a vykřičníků bývá určená pro lidi :-)
Všechny čtyři elementy byly zamýšlené jako oddělovače, jen u těch ostatních to není okomentované.
Tomáš123
Profil
Chamurappi:
Ďakujem za všetky odpovede a zdroje.

Části mezi -- a -- jsou jen komentáře.
O to nejde. Ten komentár ma iba utvrdil vo videní rozdielu medzi <P> a <LI> v anonymníího kóde [#13]. <LI> nie je v pozícii oddeľovača, ale prvku narozdiel od <P> (vidno to na riadku 8). Neuviedol som to, lebo som myslel, že o tom vieš a iba mi to potvrdíš. Už bolo, myslím, všetko vyjasnené a dlho som rozmýšľal, či sa k tomuto ešte vrátiť, alebo nie. Ale kedy, keď nie teraz? :-)

Všechny čtyři elementy byly zamýšlené jako oddělovače, jen u těch ostatních to není okomentované.
Ak tam skutočne existuje rozdiel, ktorý popisujem, pravdivejšie by možno bolo:
Všetky štyri elementy boli zamýšľané ako povinne nepárové, ale paragraf <P> existoval iba ako oddeľovač.
Chamurappi
Profil
Reaguji na Tomáše123:
Máš pravdu. Pomíchal jsem dohromady nepárovost a fakt, jestli je element oddělující…

Mimochodem, na té DTD ve starém návrhu je ještě zajímavé, že <head> a <body> nemají volitelné značky, ale jsou celé nepovinné (je dovoleno mít obsah mimo ně), nezáleží u nich na pořadí ani na počtu. (Což souvisí spíš s vedlejším vláknem, ale to nerozebíralo tolik historii.)

První vážně míněná dokončená specifikace – HTML 2.0 – už byla ve všech ohledech normální. Odstavce párové, položky seznamů také, volitelnosti značek tak, jak je známe…
Ačkoliv jsem nikdy nebyl příznivcem snahy naroubovat HTML do XML syntaxe, musím uznat, že bez volitelnosti </p> by byl rozvoj HTML mnohem snazší. Ale zpětně už to nikdo neopraví. Ani není moc pravděpodobné, že by lidi přešli na XHTML, přestože se blíží doba, kdy bude fungovat všem (až vymře Explorer 8).
Tomáš123
Profil
Ďakujem Chamurappi. Teraz už mi je všetko jasné.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: