Proč se v Javě XML nahrazuje YML?

Petr

Re:Proč se v Javě XML nahrazuje YML?
« Odpověď #180 kdy: 17. 11. 2018, 02:37:38 »
Koncove znacky jste tam nechal, jen byly anonymni, proste hloupost zcela mimo tema diskuse. Vam stale nedoslo, ze tu neni rec o xml, ale lepsim formatu, nez je xml, ktery se neridi pravidly xml.
Znaky </> nejsou součástí html značky.
Tyto znaky jsou součástí každé ukončovací html značky.


Petr

Re:Proč se v Javě XML nahrazuje YML?
« Odpověď #181 kdy: 17. 11. 2018, 02:50:33 »
Kecy v kleci. Bylo a je jasně definované, kde se tag  automaticky ukončí a funguje to tak stále.
Tak to jsem asi žil v době války standardů (IE vs. NN vs. předchůdci FF vs. Opera) v alternativní realitě. Protože definované to bylo tak možná na papíře.

Ne neni to prasarna, je to inteligentni html standard, ktery umoznuje pohodlne a prehledne psat rucne html dokumenty. Vas priklad je na prvni pohled nevalidni i kdyz se ho snazite zneprehlednit absenci formatovani. :-)

Inteligentní? pro velmi specifické použití možná.. ale dál už je to doufám vtip. Pohodlně a přehledně? Na první pohled nevalidní? To opravdu nemyslíte vážně.. zkoušel jste ten úžasný formát někdy strojově parsovat?

Navíc pořád zapomínáte na jednu dost zásadní věc. Tvorba DOM stromu u XML nevyžaduje předchozí znalosti o tom formátu. SAX bez problémů ví, kde zavolat metody pro začátek a konec elementu. XML i YML umožňují definovat vlastní elementy (no spíše tam téměř žádné jiné nejsou) a pořád jsou jednoznačně parsovatelné. Lidmi i stroji. Což je vlastnost, kterou já tedy od obecného formátu rozhodně očekávám.

Invalidní argument. Pokud prohlížeč nedodržuje standardy, tak bude mít problém i v xhtml. Je tedy ie6, který nedodržoval standardy, důkaz toho, že formáty jako xml nebo png jsou špatné?

Ano, inteligentní a pohodlný, pro člověka je html mnohem lepší než xhtml. Parsovat html je brnkačka, v pythonu to dělám běžně.

XML je dobrý pro strojové zpracování, tady je ale řeč o formátu pro ruční psaní formátovaných dokumentů, už zas to musím opakovat. A pro tyto účely je pohodlnější a přehlednější html než xhtml. A že s tím má stroj drobátko víc práce je mi úplně jedno, protože to šetří práci mě.

Kit

Re:Proč se v Javě XML nahrazuje YML?
« Odpověď #182 kdy: 17. 11. 2018, 02:52:23 »
Koncove znacky jste tam nechal, jen byly anonymni, proste hloupost zcela mimo tema diskuse. Vam stale nedoslo, ze tu neni rec o xml, ale lepsim formatu, nez je xml, ktery se neridi pravidly xml.
Znaky </> nejsou součástí html značky.
Tyto znaky jsou součástí každé ukončovací html značky.

Tyto znaky jsou jen escapovacími znaky okolo html značek. Parsery je vypouští - v aplikaci se už nevyskytují. HTML značkou je pouze to slovo uvnitř.

Re:Proč se v Javě XML nahrazuje YML?
« Odpověď #183 kdy: 17. 11. 2018, 08:56:23 »
Důkaz je zjevný, neúspěch xhtml.
Ten váš důkaz je ovšem chybný. Za prvé je spousta dokumentů servírovaných jako HTML ve skutečnosti XHTML dokument. Za druhé, ty dokumenty se označují jako HTML a ne XHTML proto, že prohlížeče parsují HTML a XHTML jinak – parsery HTML jsou v prohlížečích implementované tak, že se zotaví z jakékoli chyby a něco zobrazí. Naproti tomu XML prasery v prohlížečích jsou naprogramované striktně a jakmile je dokument nevalidní, zobrazí jen chybu.

Naopak máme pádné důkazy pro to, že vynechávání koncových značek je hloupost. Za prvé to ani v HTML, kde je to možné, skoro nikdo nepoužívá. Za druhé, po HTML vzniklo mnoho formátů, které mají mít jednodušší zápis, než HTML – např. wiki wiki, Markdown a asi milion dalších. Žádný z nich nezopakoval tu hloupost, že by některé koncové značky udělal nepovinné.

Re:Proč se v Javě XML nahrazuje YML?
« Odpověď #184 kdy: 17. 11. 2018, 09:46:21 »
Ano, nesmíte být hloupý, o jednoduchosti tu nebyla řeč.
Byla, jenže vy jste to stále nezaregistroval. Přehlednost a srozumitelnost je mimo jiné podmíněna jednoduchostí.

Přehledné to ale právě proto je a je lepší když se stroje přizpůsobí lidem a mají složitější parser než když se lidé přizpůsobují strojům.
Opět nechápete, že ten dokument čtou i lidé, a pro jeho pochopení tedy musí text parsovat podobně, jako to dělá stroj. Složitější parser pro stroj znamená složitější a méně přehledný formát pro člověka.

Na první pohled to nevidí nikdo, protože je to neformátovaná zmrdovština, ale jakmile splníte premisu, že je to zavedeno pro potřeby ručně psaných formátovaných dokumentů, což tu musím opakovat jako kolovrátek, protože jste to dosud nepochopil, a dáte to sem naformátované,  pak bude na první pohled zřejmé, že odkaz který začíná v půlce jednoho odstavce a končí v druhé je chybně a je to nevalidní. Nevalidní je proto i ten třetí příklad.
Tím, že budete opakovat jako kolovrátek to, co všichni vědí, se nevyhnete tomu, co stále nechápete – že to vynechávání koncových tagů bylo sice zavedeno pro potřeby ručně psaných dokumentů, ale moc se to nepovedlo. Až později se dostalo do všeobecného povědomí, že zdrojové kódy programů ale i ručně editované *ML dokumenty se mnohem častěji čtou, než píšou, takže zápis musí být optimalizován především pro čtení, ne pro psaní. Holt ten, kdo to píše, musí občas napsat pár znaků navíc, aby se to pak lépe četlo. Navíc těch pár znaků navíc umí napsat každý slušnější editor.

Vidím, že jsem vaše znalosti HTML přecenil. A u toho prvního příkladu jste mě dobře nachytal – já jsem tam přichystal chyták v chytáku, a jak se teď ukázalo, vy jste tam neodhalil ani ten první chyták – takže jste sice napsal správně, že je dokument nevalidní, ale z úplně jiného důvodu.

Když ten třetí příklad přepíšu tak, aby tam byly všechny nepovinné tagy, vypadá takhle:

Kód: [Vybrat]
<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <p>
      text
    </p>
    <p>
      text
      <a href="">text
        <p>text</p>
        <hr>
        text
       </a>
       text
    <p>
      text
    </p>
  </body>
</html>

Problém je v tom, že v HTML nemůže být element p vložený v jiném elementu p. Takže když to bude prohlížeč parsovat a narazí na to vnitřní p, pokusí se ten vnější tag p ukončit (bude předpokládat, že tam je to vynechané koncové p), jenže ho ukončit nemůže, protože má ještě neuzavřený element a a ten má koncový tag povinný.

Z úplně stejného důvodu je nevalidní i tenhle dokument:
Kód: [Vybrat]
<p>text<p>text<a href="">text<hr>text</a>text<p>textOpět, hr nemůže být uvnitř p, takže se prohlížeč pokusí p uzavřít, ale nemůže, protože je parser vnořený v otevřeném a, které musí být vždy uzavřeno explicitně.

Je hezké, že tady obhajujete to, jak jsou pravidla pro parsování HTML strašně jednoduchá, a sám je přitom neznáte.


Michal2

Re:Proč se v Javě XML nahrazuje YML?
« Odpověď #185 kdy: 17. 11. 2018, 11:25:51 »
Z úplně stejného důvodu je nevalidní i tenhle dokument:
Kód: [Vybrat]
<p>text<p>text<a href="">text<hr>text</a>text<p>textOpět, hr nemůže být uvnitř p, takže se prohlížeč pokusí p uzavřít, ale nemůže, protože je parser vnořený v otevřeném a, které musí být vždy uzavřeno explicitně.

To se cte jako napinava detektivka s prekvapivymi dejovymi zvraty. A jak to teda dopadne?

Re:Proč se v Javě XML nahrazuje YML?
« Odpověď #186 kdy: 17. 11. 2018, 12:23:00 »
To se cte jako napinava detektivka s prekvapivymi dejovymi zvraty. A jak to teda dopadne?
:-) Prohlížeč usoudí, že autor je nemehlo a zapomíná uzavírat elementy (protože se někde dočetl, že je to úžasná vlastnost HTML, že se mohou uzavírací tagy vynechávat), takže uzavře ten aktuální element <a> a tím pádem může uzavřít i <p>. Pak konečně může zpracovat <hr>. Tím to ale ještě nekončí, protože tam přece bylo to neuzavřené <a>, to se nemůže nechat jen tak. Takže až za to <hr> parser nakopíruje znovu ten otevírací tag <a> se všemi jeho atributy (takže v DOMu ten element bude dvakrát). Pak je konečně <a> uzavřené autorem a dál už je zdroják validní.

Mimochodem, kdyby si s tímhle nevalidním kódem nějaký parser poradil jinak, není kompatibilní s HTML5 standardem. Protože ten definuje i způsob, jak se má parser chovat při jaké chybě. Pokouší se to definovat pro všechny možné chybové stavy, nevím a nechci vědět, zda se jim to podařilo. Takže autor může psát validní HTML5, ale i když napíše nevalidní HTML5, všechny HTML5 prohlížeče by to měly interpretovat (a tedy i zobrazit) stejně. Takže proč by se autor s nějakou validitou dokumentu obtěžoval. Ale určitě se dozvíme, že to, že dokumenty nemusí být validní, také zásadně zlepšuje jejich čitelnost a přehlednost.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Proč se v Javě XML nahrazuje YML?
« Odpověď #187 kdy: 17. 11. 2018, 13:45:08 »
Na první pohled to nevidí nikdo, protože je to neformátovaná zmrdovština, ale jakmile splníte premisu, že je to zavedeno pro potřeby ručně psaných formátovaných dokumentů, ...

Dokumenty jsou ale často generované strojem. Pak je třeba, aby bylo formátování povinné.