No Future

Weblog přesunut na atd.havrlant.net

HTML hádanka

9 leden 2006, 06:36
rubrika Testy

Jednoduchá hádanka.

Proč je tento zápis validní:

<p><a href=weblog/internet/><span></span>odkaz</p>

Ale tento zápis validní není:

<p><a href=weblog/internet/><span></span>odkaz</a></p>

Nevěříte-li, můžete se podívat na příklady těchto zápisů v praxi: první zápis a druhý zápis. Nápověda: jedná se o HTML test, ne XHTML test, to hraje trošičku roli. Nápověda druhá – nejedná se o chybu validátoru.

komentáře
  1. ObiSkyWalker - #
    —    9. leden 2006, 08:58   

    Hledal jsem v tom něco zapeklitějšího, ale nakonec stačilo doplnit uvozovky k parametru href (href=„weblog/in­ternet/“) a bylo to validní. Možná to nebude ono – viz. nápověda., ale validator to vzal.

  2. llook - #
    —    9. leden 2006, 11:44   

    Napadá mě, jestli tím, že tag končí na /> není automaticky prázdný, obdobně jako v XML. Ale nevím, HTML zas tak podrobně neznám. Pokud píšu v HTML, tak se od XHTML odlišuju jen zápisem prázdných elementů.

    P. S.: Proč se vlastně u značkovacích jazyků nepřekládá do češtiny slovo element (=prvek)?

  3. Dero - #
    —    9. leden 2006, 14:15   

    Á, že by NET (null end tag)?

  4. Timy - #
    —    9. leden 2006, 14:42   

    ObiSkyWalker: řešení, jak zvalidovat ten druhý případ není těžké, těžší už je přijít na to, proč to tak je.

    llook: Skoro ;-).

    Dero: Ano, tady by měl být zakopaný pes. Teď už to tedy zbývá pouze vysvětlit.

  5. Aleš Janda - #
    —    9. leden 2006, 14:43   

    Řekl bych to samé co llook.

    Zkrátka validátor bere [a href=weblog/internet/] jako [a href="weblog/internet" /] čímž pádem není [a] párový tag a tudíž je jeho následné „zavření“ nesmyslné.

  6. ObiSkyWalker - #
    —    9. leden 2006, 15:04   

    Aleš Janda: Ale jak to může HTML validátor brát jako XHTML příkaz? Nebo uzavírání tagů jako v XHTML funguje i v HTML (já jsem to tedy ještě nezkoušel)?

  7. Timy - #
    —    9. leden 2006, 16:27   

    Aleš Janda: Validátor to bere úplně jinak ;-). Ale máte pravdu v jednom, to zavření [/a] je tam nesmyslné.

    Ale zdá se, že nikoho nenapadlo, že by to mohlo mít něco společného s tím spanem, který jsem tam dal jenom do počtu (abych zmátl) a se samotným „trikem“ nemá nic společného. To je dobré znamení :-)

  8. Dero - #
    —    9. leden 2006, 16:48   

    No, čas jsem řešitelům dal, takže:

    V prvním příkladě je uvozovací tag [a] uzavřen ve chvíli, kdy parser narazí na první lomítko v atributu href, načte obsah prvku („internet“) a uzavře se [/a] na místě druhého lomítka v atributu href. Zbytek textu za tímto lomítkem by měl být považován za CDATA, měla by se tedy mj. zobrazit ta závorka.

    Bohužel, FF 1.5 bez úspěchu.

    Popsaný princip se nazývá NET (null end tag), je původem z SGML.

    Timy, mám aspoň přibližně pravdu?

  9. Timy - #
    —    9. leden 2006, 17:16   

    Dero: Myslím, že to chápeme stejně, ještě to trochu rozvedu:

    Vzhledem k tomu, že v HTML je povoleno Shorthand markup, můžeme teoreticky psát značky takto:

    <tag/obsah tagu/

    A bude to validní. Můžete si to vyzkoušet na jiném příkladu (koukněte se na zdroják). Tedy to první lomítko ukončuje první značku a to druhé lomítko je vlastně místo celého [/tag]. IMHO to žádný prohlížeč nezobrazí správně.

    Když si tedy teď vezmete ten první příklad, tak – vzhledem k tomu, že obsah atributu není v uvozovkách a validátor tak neví, co všechno je součástí atributu a co není – to první lomítko za „weblog/“ ukončí značku [a], „internet“ je brán jako obsah elementu a lomítko za internetem je tedy namísto [/a]. Skutečně by se tedy měla zobrazit ta závorka „>“. Takže abych to shrnul, ten první příklad by se dal do „běžného“ HTML přepsat takto:

    [p][a href=weblog]in­ternet[/a]][span][/sp­an]odkaz[/p]

    U toho druhého příkladu je tedy před ukončeným odstavcem ještě jednou ukončený odkaz, který tam nemá co dělat.

    Snad jsem to pochopil správně.

  10. Dero - #
    —    9. leden 2006, 17:25   

    Ano, zcela stejně, jak to pročítám. :o)

    Mimochodem, mám dojem, že zkrácené elementy (NET, SHORTTAG, unclosed tags, empty tags…) umí Lynx. Nemohu však vyzkoušet.

  11. Timy - #
    —    9. leden 2006, 17:32   

    Dero: Tak to koukám, kde Opera i Firefox končí, Lynx teprve začíná! Ještě má sice mezery, nějak se mu nelíbí zápis abbr, ale jinak téměř dokonalý!

  12. Dero - #
    —    9. leden 2006, 17:37   

    Jj, Lynx boduje.

    Tak zatím, jdu tvořit hodnoty. :o)

    Dobrá hádanka.

  13. t3rb1 - #
    —    9. leden 2006, 19:16   

    no podla html validatora vo firefoxe nieje validny ani jeden ;)

  14. Dero - #
    —    9. leden 2006, 19:29   

    t3rb1: V tom případě se onen validátor mýlí. :o)

  15. Timy - #
    —    9. leden 2006, 21:41   

    Teď mě tak napadá, je W3C HTML Validátor „dokonalý“? Znáte někdo nějakou chybu, kterou to nenajde a mělo by najít? U XHTML je jasné, že dokonalý není, protože ani nemůže být, ale nějaká chyba HTML Validátoru mne zrovna nenapadá. Neví někdo?

  16. Pachollini - #
    —    27. leden 2006, 22:02   

    To myslím pěkně ukazuje, proč je XHTML jednudušší než HTML ;-) Chamurappi?

  17. Timy - #
    —    28. leden 2006, 06:56   

    Pacholliny: Nestačím se divit, ještě pár článků a začne se tvrdit, že XHTML je daleko jednodušší a nemá tak striktní pravidla jako HTML (viz llook :-)).

Jméno
Zapamatovat
http://
Zpráva

formátování: *kurzíva* **tučné písmo** `kód` "text odkazu":cíl odkazu

Tady formátuje Texy!

Rubriky

  • No Future
  • Internet
  • Se špetkou ironie
  • XHTML a sémantika
  • Testy
  • Oblíbené weblogy

  • La Trine
  • Derův zápisník
  • Yuhůův weblog
  • acciBlog
  • Martyho weblog
  • Ronnieho weblog
  • zimmiho blog
  • conBLOG
  • Klokynov blog
  • Buchtič blog
  • Dům mlhy
  • Anne’s Weblog
  • Mabfredův básnický blog
  • Další odkazy

  • Sémantika
  • MiSHAK
  • můj starší blog
  • Textpattern česky
  • Textpattern oficiální web
  • Jakpsatweb
  • Kocourek Koudy
  • Webylon