Vlákno názorů k článku České portály: validní, nebo invalidní? od anonym - Všem, kteří odmítají validnost stránek bych za domácí...

  • Článek je starý, nové názory již nelze přidávat.
  • 21. 6. 2007 7:10

    bez přezdívky
    Všem, kteří odmítají validnost stránek bych za domácí úkol nakázal napsat parser například XML vůči libovolnému DTD. Není jednoduchý, že? A teď dodělejte zotavení z chyby! Už jste pochopili, proč by měly být stránky validní?
  • 21. 6. 2007 11:06

    anonymní
    ne, nepochopili

    ony jsou webove stranky delane pro zobrazeni v prohlizeci nebo pro zpracovani domacky napsanymi prasery??

    validni XML se velmi uspesne pouziva pro vymenu automatickou strukturovanych dat, oproti tomu validni HTML pro web neni nutne
    nikdo netvrdi, ze je chyba psat hezky a validne, ale je chyba na validite trvat za kazdou cenu a bezhlave uctivat vsechno, co je X


    mimochodem, kdyz uz jste v tom "amaterskem" psani...kdyz mluvime o webu, zkuste ten vas parser doplnit o renderer s plnou podporou css
  • 21. 6. 2007 13:33

    Michal Kára (neregistrovaný)
    A co takhle kdyz mate webovou aplikaci, kde cast HTML pochazi z cizich zdroju a vy chcete odstranit potencialne nebezpecne prvky (script)? Typickym prikladem je webmail. Takova uloha je spolehlive neresitelna prave kvuli tomu, ze prohlizece misto co by nevalidni HTML odmitli, tak se jej pokousi interpretovat a vy nikdy nemate jistotu, ze ho budete interpretovat stejne jako oni.

    (Jo, a zadny renderer s plnou podporou CSS v tomhle pripade nepotrebujete :-) )
  • 21. 6. 2007 15:17

    Chamurappi

    Mnoho nevalidních konstrukcí má již přímo ve specifikaci definované chování.

    Řekl bych, že vykuchat z kódu <script> je v HTML (bez X) práce pro jeden regulární výraz a vyřadit atributy událostí na elementech rovněž. Nevím, oč jednodušší by takový úkon byl, kdyby prohlížeče netolerovaly nevalidní zápis. Spíš by byl složitější, protože kultivovaně odmazat nevhodný atribut dá více práce než jej porouchat.

    nikdy nemate jistotu, ze ho budete interpretovat stejne jako oni
    Jak kdy. Jak kdo.

  • 21. 6. 2007 16:59

    Michal Kára (neregistrovaný)
    Nesmysly, Existuje spousta nevalidnich zapisu (typu neuzavrene uvozovky u atributu, neuzavrene zacatky tagu "<abc <b>text</b>"), ktere prohlizece "nejak" opravuji (respektive maji "nejakou" error recovery, na ktere zavisi, jak parsuji dalsi text). Ale fakt chci videt, jak muzete zarucit, ze je vase error recovery stejna, jako treba u IE.

    A jinak kultivovane odmazat atribut neni vubec problem...
  • 21. 6. 2007 22:09

    Chamurappi

    Existuje spousta nevalidnich zapisu, ktere prohlizece "nejak" opravuji
    V praxi se „používá“ necelá třicítka chyb. Až na překřížení elementů bývají opravy docela jednoznačné.

    typu neuzavrene uvozovky u atributu
    K takové chybě může dojít jen na konci dokumentu, jinak ouvozovkovaná hodnota atributu vždy končí uvozovkami. V tom mají všichni jasno. Potom je otázka, co se smetím, které je uvnitř značky a neodpovídá zápisu atributu, ale i na ni je docela jednoduchá odpověď: neznámé ignoruj.

    neuzavrene zacatky tagu "<abc <b>text</b>"
    To je validní. (Pominu-li, že element abc neexistuje.)

    Velkým problémem vyznavačů validity je, že svoji modlu příliš dobře neznají a nevalidní kód démonizují tak vytrvale, až se ho sami bojí. Pak tu v diskusi padají silná slova o anarchii, o šroubkách a o matičkách. Že je Procházkův článek napůl vykradený je každému ukradené, ale odpůrce validity byste kamenovali.

    Ironií je, že za poslední tři roky jsem napsal jen jeden validní web.

    A jinak kultivovane odmazat atribut neni vubec problem...
    Není, pokud víte, kde končí počáteční značka. Jste si jist, že to víte?

  • 22. 6. 2007 8:27

    Michal Kára (neregistrovaný)
    Nejde o to, ktere chyby "se v praxi pouzivaji" (to zni, jako ze dokonce prasite zamerne?!), ale vsechny, ktere se mohou vyskytnout.

    Neuzavrene uvozovky: Hm, jeste to tak vysvetlit vyrobcum prohlizecu...

    <a href="http://aaa ><b>text</b></a>

    Firefox ukonci atribut na > (takze je videt bold link), explorer to jako tag nevezme a ukaze <a href="http://aaa >text

    Neuzavrene zacatku tagu: Dtto:

    <abc <strong>text</strong>

    Firefox ukaze text, IE to ukaze plain: text

    Opakuji: Neni problem udelat "nejake" zotaveni z chyb, problem je udelat takove, ktere je shodne s tim co pouzivaji prohlizece a jak vidite kazdy prohlizec to ma jinak (a nejspis budou odchylky i mezi verzemi).

    Koneckoncu pokud si porad myslite, ze je to easy, tak bezte do libovolneho portalu a reknete, ze jim vyresite to co neumely vyresit jejich tymy inzenyru - 100% odstranovani skriptu. Urcite budou skakat nadsenim do stropu :-)

    Aby bylo jasno, nejsem nejaky zaniceny vyznavac validity; pozadavky "Kazdy IMG musi mut ALT" mi taky pripadaji nesmyslne. Jsem zastance toho, cemu se v XML rika "well-formed", t.j. aby byl dokument naparsovatelny na tagy / atributy / text bez nutnosti hadat, co tim asi uzivatel myslel.

    Koneckoncu, tento thread zacal tvrzenim ze "Staci kdyz se to zobrazi v prohlizeci, jine parsery HTML jsou zbytecne." a ja ukazal priklad, kdy mame velmi dobry duvod parser HTML psat.

    A pokud jde o neznalosti, zda se mi, ze je zatim prokazuji spis zastanci nevalidity - viz dva priklady vyse.

    Odmazat: A potrebuji to vedet? Ten odstranovac funguje jako filtr a kdyz narazi na nepovoleny atribut v nepovolenem tagu, tak jej proste preskoci a nevysype na vystup. Je to citronovnik, mily Watsone :-)
  • 22. 6. 2007 18:22

    Chamurappi

    "se v praxi pouzivaji" (to zni, jako ze dokonce prasite zamerne?!)
    Některé chyby dělám záměrně, za jiné bych zabíjel. Mám svůj osobní „standard kvality“, který má s validitou pár společných rysů.

    ale vsechny, ktere se mohou vyskytnout.
    Ostatní prohřešky proti validitě vznikají jen v prostředí vyhovujícího parseru. Takový naštěstí žádný prohlížeč nemá.

    Neuzavrene uvozovky: Hm, jeste to tak vysvetlit vyrobcum prohlizecu
    Platí přesně, co jsem řekl. Vyrobil jste si malý pokusný dokument s neuzavřenou uvozovkou na konci dokumentu a ano, na tuhle velice vzácnou chybu reagují prohlížeče různě.

    Neuzavrene zacatku tagu: Dtto:
    Opakuji: neuzavřené počáteční značky jsou validní. Za nekompatibilitu nemůže „error recovery“, ale „error“.

    Firefox ukaze text, IE to ukaze plain: text
    Vím, nicméně chování je ve specifikaci jasně dané — Firefox se tím řídí, Explorer ne. To by měl Explorer říct „tipuji, že tenhle kód je špatně, tak ho odmítnu“, i přesto, že špatně není?

    bezte do libovolneho portalu a reknete, ze jim vyresite to co neumely vyresit jejich tymy inzenyru - 100% odstranovani skriptu. Urcite budou skakat nadsenim do stropu :-)
    Inženýři neschopní stoprocentně odstranit skripty si nemohou dovolit takový luxus, jako je strop.

    Proceduru na vyřazení skriptů vám rád vyrobím, pokud mi slíbíte, že v ní zkusíte najít slabé místo — tedy něco, s čím nepočítám. OK?

    t.j. aby byl dokument naparsovatelny na tagy / atributy / text bez nutnosti hadat, co tim asi uzivatel myslel
    Též hlasuji pro jednoznačnost. Validní kód v kombinaci s nevyhovujícími prohlížeči ji ovšem nezaručuje.

    ja ukazal priklad, kdy mame velmi dobry duvod parser HTML psat
    Ukázal jste příklad, kdy potřebujete zkrotit dokument před jeho předhozením parseru prohlížeče. Kdybyste si napsal celý vlastní HTML parser (ne filtr) a prohnal skrze něj nebezpečný obsah, tak se z chyb v kódu zotavíte podle sebe a k návštěvníkovi pošlete zpětně poskládanou syntakticky čistou podobu, nad níž máte stoprocentní kontrolu.

    A pokud jde o neznalosti, zda se mi, ze je zatim prokazuji spis zastanci nevalidity
    V tomhle nemám pravdu?

    Odmazat: A potrebuji to vedet?
    Vy umíte mazat atributy z počáteční značky, aniž byste věděl, kde ta značka (ne element) končí?

    Podle specifikace může taková značka končit většítkem, lomítkem nebo znakem před menšítkem. Podle Mozilly může končit většítkem nebo znakem před menšítkem. Podle Exploreru může končit většítkem. Představte si tento validní kód:
    <p onmouseover="zničit(počítač)" / onmouseout="vytrhat(zuby)" < onclick="vykrást(účet)">Ahoj
    Které nebezpečné části smažete, aniž byste poškodil obsah odstavce?

  • 23. 6. 2007 9:06

    Michal Kára (neregistrovaný)
    > Některé chyby dělám záměrně, za jiné bych zabíjel. Mám svůj
    > osobní „standard kvality“, který má s validitou pár
    > společných rysů.

    To je ten problem. Kdyz ma kazdy svoji "normu", tak v tom je pak bordel, protoze prohlizece nemohou dodrzovat W3C normy, ale musi se pokouset interpretovat i nevalidni kod a/nebo ho interperetovat jinak, nez pozaduje norma, protoze to lide tak pouzivaji (viz Vase priklady nize).

    > ano, na tuhle velice vzácnou chybu reagují prohlížeče
    > různě.

    Jenze ty chyby jsou pri utoku vkladany umyslne a proto tezko pocitat s jejich zvlastnotnosti. Krom toho si myslim, ze ty zapomenute uvozovky se obcas prihodi kazdemu.

    Zda se, ze si odporujete:

    > Proceduru na vyřazení skriptů vám rád vyrobím, pokud mi
    > slíbíte, že v ní zkusíte najít slabé místo — tedy něco, s
    > čím nepočítám. OK?

    A o kousek nize uvadite presne priklad, ktery ukazuje, ze to vubec neni jednoduche. Jeste jsem zapomnel uvest jednu podminku (kterou jsem implicitne predpokladal), ze odstranovani nesmi poskodit text, t.j. dokument se musi zobrazit stejne, jako by se zobrazil ten pred odstranenim.
    A to je proste prakticky neresitelne :-/
  • 21. 6. 2007 21:09

    anonymní
    A to ma byt jako snazsi s XHTML a jeho externimi entitami, do kterych muzete ten skriptik klidne schovat? :))

    Resenim muze byt treba vyzadovat v externim vstupu kod, ktery splnuje pozadovana kriteria (umyslne nepisu validni, rotoze kriteria mohou byt jina - napr. prisnejsi tj. zakazany skript pripadne nektere atributy a podobne). Vy si na vstup aplikujete nejaky (treba svuj nebo standardni) parser a mate plnou kontrolu nad svym vstupem aniz nejak zasahujete do pruhlizecu...
  • 22. 6. 2007 8:30

    Michal Kára (neregistrovaný)
    Uff, ja psal neco o XHTML? Jinak asi nebude problem externi entity vyrusit.

    Tim externim vstupem jsou dosle maily, takze tezko muzu po jejich tvurcich neco vyzadovat.
  • 22. 6. 2007 8:49

    anonymní
    proc by ne?
    proste budte strict a "nevalidni" maily nezobrazujte :)
    uvidite, jestli budete s takovou politikou uspesny a mozna si lepe uvedomite situaci tvurcu prohlizecu...
  • 22. 6. 2007 9:15

    Michal Kára (neregistrovaný)
    Existuje jisty nezanedbatelny rozdil mezi jedinim z mnoha webmailu a dominantnim prohlizecem, predinstalovanem v dominantnim OS. Ve kterem se s novou verzi casto ruzne stranky nezobrazuji - neni duvod, proc by tento proces nemohl tlacit ke striktnosti.

    A tohle je spis diskuse o tom, zda ma validita jako takova smysl nebo ne, nikoli o tom, ze od zitrka se maji vsechny nevalidni weby prestat zobrazovat.
  • 21. 6. 2007 13:42

    Chamurappi

    Kdybych psal XML parser, tak bych se na DTD vybodl. Vyhovující XML procesor sice musí umět interní podsadu DTD rozebrat, ale tu skoro nikdo nepoužívá, takže bych půlku specifikace obětoval, aniž by si toho běžný smrtelník všiml.

    Není jednoduchý, že? A teď dodělejte zotavení z chyby!
    Nevalidní XML dokument funguje úplně normálně, dokud je správně sestavený (well-formed), z prohřešků proti validitě se parser nepotřebuje zotavovat.

    Co se týče správného sestavení, tak tam by šla tolerance dodělat snadno:

    • Prázdný řádek před XML deklarací => ignoruj
    • Ampersand nenásledovaný jménem entity => ampersand
    • Sekvence znaků ]]> => znaková data
    • Neplatný znak => otazník
    • Nadbytečná ukončovací značka => ignoruj
    • Neukončený element => ukonči s koncem rodiče
    • atd.

    Na každé místo, které vyvolává chybovou hlášku, jde dosadit docela primitivní korekci. Ano, parser pak bude složitější, ale docela zanedbatelně. Běžné XML nástroje se ze syntaktických chyb nezotavují nikoliv proto, že by to bylo obtížné nebo nemožné, ale proto, že to zakazuje specifikace.


    Jak souvisí XML s validitou webových stránek? Myslíš, že třeba zrovna na tvém webu se prohlížeče nemusí zotavovat ze syntaktických chyb v kódu?

  • 22. 6. 2007 15:27

    anonymní
    Tomasi Hradile, ty jsi mamrd jak brno, strc si XML parser do prdele a prestan srat hubou. XML parser == expat, zadny cesky, dementni bastl se mu nevyrovna
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).