Starší komentáře ke článku: Problém s uvozovkami kolem elementů Q a BLOCKQUOTE 2.

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 9.9.2002 8:10:48

Napisal som podobny skript, ktory bere do uvahy aj atribut lang
<a href='http://quax.kmit.sk/work/q.php' target='_blank'>http://quax.kmit.sk/work/q.php</a>
Na miesto uvodzoviek doplna do1 (default-open-quote-level1), dc1, sko1, skc1, ... tak sa nezlaknite :)

BLOCKQUOTE podla w3c nemusi byt quotovane, lebo to niekto pouzival na odsadenie. A moj skript to tiez nequtuje.

Skript pouziva innerHTML a regexp co pri velmi dlhych suboroch a pomalych pocitacoch moze by problem. Testovany bol na IE5+ a Mozilla

PS. funkcia sa vola addQuotes()
if(document.all) window.onload = addQuotes;

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 9.9.2002 8:14:19

A malo by to fungovat aj na IE4, ale nebolo to otestovane :)

Avatar

Autor komentáře: Jirka Kosek

Datum vložení: 9.9.2002 12:27:09

Popsaný přístup bych označil jako "overkill" -- bohužel mne nenapadá dostatečně pěkný a výstižný český překlad.

Uvozovky lze přece celkem snadno vložit pomocí #bdquo;text v uvozovkach#ldquo; (# nahraďte ampersandem) -- což funguje ve všech prohlížečích (kromě starých NN, ale pro něj lze znak zapsat přímo číselným kódem).

Pokud nutně toužíte po tom, že text v uvozovkách je citace a má být označena pomocí elementu Q, vždycky okolo něj můžete uvozovky přidat ručně a v CSS je vypnout, aby v Mozille a Opeře nebyly dvojité.

Nějak mi to připadá jednodušší než javascriptové kejkle. Ale možná je to jen tím, že nemám rád JavaScript. ;-)

Avatar

Autor komentáře: Pavel Sníh

Datum vložení: 9.9.2002 15:13:03

Podle mě, javacript s postupem let vyzrál v nástroj, který se hodí k napravování nevhodného chování browserů (nedodržování standardů XHTML či CSS a koneckoncí i DOMu). Psát nesprávné dokumenty (i když se pak fintou jakoby spraví) mi připadá jako výrazně horší a ideově pochybenější cesta. Docela bych uvítal, kdyby pan Snížek pokračoval například "opravou" pseudotříd first-leter a first-line, mohl by vznikout takový pěkný LPGL cross-css (viz cross-browser.com).

Avatar

Autor komentáře: Jirka Kosek

Datum vložení: 9.9.2002 17:51:06

A co je nesprávného na vložení uvozovek přímo do textu? Pomineme-li teď na chvíli možnosti webu pro psaní interaktivních aplikací, je jazyk HTML určen pro zápis dokumentu. Za dokument nepovažuji něco, co obsahuje více kódu než textu jen proto, aby se někam doplnilo pár znaků uvozovek, když je tam může autor vložit sám.

Pokud vám vadí, že některé projlížeče nezvládají některé věci z CSS (jako doplnění uvozovek, pseudotřídy :first-* apod.) je IMHO mnohem vhodnější nasazení XSLT na straně serveru. Nejenže podobné věci zapíšete mnohem snáze než v JS, ale výsledkem bude obyčejný HTML kód, který bude pracovat i v prohlížečích bez podpory JavaScriptu.

Jestli chcete ke každé stránce připojit několik set KB kódu (předpokládám, že uvozovky jsou tak marginální problém, že napravení těch ostatních bude mnohem složitější), který vše opraví a napraví, možná bude jednodušší napsat si Java applet s implementací geniálně dokonalého prohlížeče a do stránek pak vkládat tento aplet. Kdyby to ale bylo tak snadné, asi by prohlížeče již všechny standardy podporovaly správně.

Avatar

Autor komentáře: Marek Prokop

Datum vložení: 9.9.2002 19:44:17

Na psaní uvozovek přímo do textu není nesprávného nic, avšak psaní uvozovek okolo obsahu prvku Q je v přímém rozporu s normami HTML 4.0 a XHTML 1.0. Nepoužívání značky Q pro krátké citáty je do určité míry porušením filosofie HTML taktéž, takže díky chybné implementaci prohlížečů tato situace nemá dobré rešení. Řešení pana Snížka mi připadá z těch špatných jednoznačně nejlepší.

Avatar

Autor komentáře: Jirka Kosek

Datum vložení: 9.9.2002 19:58:03

Myslím, že většina případů, kdy člověk do dokumentu potřebuje vložit uvozovky, stejně není citace, talkže Q není potřeba. Ale samozřejmě záleží na konkrétním případu.

Psaní uvozovek do obsahu elementu Q není v přímém rozporu s HTML4.01:

Visual user agents must ensure that the content of the Q element is rendered with delimiting quotation marks. Authors should not put quotation marks at the beginning and end of the content of a Q element.

Význam MUST and SHOULD NOT je ve specifikacích W3C dost odlišný. MUST znamená požadavek, který se musí dodržet. SHOULD znamená požadavek, který by se měl dodržet a dokonce je velmi vhodné ho dodržet. Rozhodně je tedy vložení uvozovek do Q menší zlo než jejich nedoplnění prohlížečem, alespoň pokud nám jde jen o interpretaci W3C doporučení.

Avatar

Autor komentáře: Marek Prokop

Datum vložení: 9.9.2002 20:19:20

Myslím, že většina lidí stejně netvoří webové stránky, takže HTML vlastně není potřeba ;-)

Co se týče specifikace, je mi znám rozdíl mezi MUST a SHOULD (NOT), ale zřejmě se lišíme v interpretaci. Oficiální výklad SHOULD totiž zní:

"SHOULD This word, or the adjective "RECOMMENDED", mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course."

Jestliže tedy větu: "Authors should not put quotation marks at the beginning and end of the content of a Q element," posuzuji v kontextu toho, že "user agents must ensure that the content of the Q element is rendered with delimiting quotation marks" nezbytně dojdu k závěru, že autor, který nechce trestat uživatele prohlížečů respektujících standardy, nesmí uvozovky okolo Q použít.

Avatar

Autor komentáře: Jirka Kosek

Datum vložení: 9.9.2002 21:01:43

Já jako pádný důvod pro ignorování chápu nepodporování povinné vlastnosti z předchozí věty nejpoužívanějším prohlížečem. Myslím, že plné dopady jsou celkem jasné -- některé prohlížeče by mohly uvozovky zdvojit. To si tedy uvědomím a v CSS generování uvozovek zakáži:

q:before { content: "" }
q:after { content: "" }

Chápu, že je to věc názoru a individuálního vkusu. Mě toto řešení přijde mnohem lepší než doplňování pomocí JS:

- chodí ve všech prohlížečích včetně tech, které nepodporují JavaScript, CSS nebo jsou dokonce tak staré, že dokonce nepodporují HTML 4
- na klientovi se nemusí provádět kód -- moc jsem ho nestudoval, ale mám pocit, že na dlouhých dokumentech bude dost drhnout
- v dokumentu, který obsahuje jen text, není důvod pro výkonný kód -- psaní HTML kódu zvládne nepodstatně více lidí než psaní JS kódu

Možná jsem něco nedomyslel, ale pořád mi to řešení s JS připadá jako s kanónem na vrabce.

Jediný problém je snad v tom, že za X let budou všechny prohlížeče možná Q podporovat správně a já bych mohl chtít stránky předělat. Budu stát před problém, jak znaky uvozovek odstranit. A on to zas takový problém nebude, protože v editoru mám funkci najdi/nahraď, a stejně bude v dokumentu po těch letech nejspíš potřeba vyřešit zcela jiné mnohem zásadnější problémy. Navíc pokud jsem dostatečně prozíravý, stejně mám veškerý obsah uložen v nějakém sémanticky bohatém XML (např. v DocBooku) a podle potřeby si vygeneruji HTML ve tvaru, který je zrovna v dané době nejpřijatelnější.

Avatar

Autor komentáře: Marek Prokop

Datum vložení: 9.9.2002 23:08:08

Argument s nejpoužívanějším prohlížečem přijímám. V podstatě ten samý vedl nedávno i Marka Pilgrima k napsání The Q tag revisited [1], kde ale radí nepoužívat Q z důvodů špatné přístupnosti vůbec. Otázka je, zda se JavaScriptovým řešením přístupnost opravdu zlepší. Pokud ano, viděl bych to jako jednoznačný přínos.

Ostatně, tento trik spadá do stejné kategorie, jako mé řešení ABBR [2], Internet Explorer Margin Fix Davida Schontzlera [3] a skripty Andrew Clovera [4, 5] a to jsou všechno řešení, která byla širokou komunitou prostandardně orientovaných webdesignérů přijata velmi vřele. V podstatě jde stále o stejné téma -- prohlížečům respektujícím standardy dodat plně standardní kód, kdežto u ostatních učinit maximum pro přístupnost obsahu. Nemohu se zbavit pocitu, že to, co navrhujete, je přesný opak. Na první pohled se efekt může zdát podobný, ale připravujete se tím o největší výhodu, kterou standardní kód má -- kompatibilitu se všemi standardy podporujícími prohlížeči současnosti i budoucnosti.

Z toho důvodu se mi také příliš nalíbí úvahy o XSLT, generování HTML z DocBooku či, nedej pán bůh, najdi&nahraď v editoru. V okamžiku kdy bych byl schopen z XML předlohy vygenerovat cokoli, můžu v podstatě na nějaké standardy zapomenout a každému prohlížeči naservírovat jeho proprietární kód. Výhodu dodržování standardů vidím hlavně v tom, že nic takového právě dělat nemusím.

Odkazy:
[1] <a href='http://diveintomark.org/archives/2002/08/14.html#the_q_tag_revisited' target='_blank'>http://diveintomark.org/archives/2002/08/14.html#the_q_tag_revisited</a>
[2] <a href='http://www.sovavsiti.cz/css/abbr.html' target='_blank'>http://www.sovavsiti.cz/css/abbr.html</a>
[3] <a href='http://www.stilleye.com/scripts/marginfix/' target='_blank'>http://www.stilleye.com/scripts/marginfix/</a>
[4] <a href='http://and.doxdesk.com/software/js/position.html' target='_blank'>http://and.doxdesk.com/software/js/position.html</a>
[5] <a href='http://and.doxdesk.com/software/js/minmax.html' target='_blank'>http://and.doxdesk.com/software/js/minmax.html</a>

Avatar

Autor komentáře: Jirka Kosek

Datum vložení: 9.9.2002 23:58:53

<I>V okamžiku kdy bych byl schopen z XML předlohy vygenerovat cokoli, můžu v podstatě na nějaké standardy zapomenout a každému prohlížeči naservírovat jeho proprietární kód. Výhodu dodržování standardů vidím hlavně v tom, že nic takového právě dělat nemusím.</I>

Výhoda tohoto přístupu spočívá v tom, že každé koncové zařízení (a nemusí to být jen prohlížeče s různými chybami, ale třeba mobilní telefon nebo PDA) dostane informaci ve formátu, tvaru a rozsahu, která je pro něj vhodná. Užitek z toho má uživatel. S dodržováním a nedodržováním standardů to nemá nic společného. Jestli budete generovat něco standardního nebo nestandardního záleží na vás. Můžete samotřejmě detekovat typ prohlížeče a posílat mu různé verze stránek (třeba místo Q se rovnou doplní uvozovky ;-), ale také nemusíte.

Naopak máte volné ruce. Když se v nějaké další verzi HTML objeví nějaká nová vlastnost nebo něco zajímavého začnou podporovat prohlížeče, upravíte jeden XSLT styl tak, aby do výsledného HTML něco přidal. Uživatelé z toho mají okamžitý užitek a vás to nestojí skoro žádnou práci, alespoň v porovnání s editováním jednotek/desítek/stovek stránek -- podle toho, jak je váš web velký.

Pěkná vlastnost Mozilly je například možnost zobrazení navigačního menu. Podívejte se např. na <a href='http://www.kosek.cz/clanky/xmleditory/index.html' target='_blank'>http://www.kosek.cz/clanky/xmleditory/index.html</a> Mozillou 1.1 a zapněte si Show/Site Navigation Bar. Pohodlně se můte pohybovat mezi stránkami i pomocí klávesových zkratel Alt+P, Alt+N, ...

Mozilla menu generuje na základě obsahu tagů <link rel="..." ...> Ty samozřejmě do stránek asi skoro nikdo nevkládá, protože žádný prohlížeč (snad kromě Amayi) s tím nic rozumného nedělá. Kdybych tuhle užitečnou funkci chtěl přidat na stránky, musím je editovat všechny. Když je generuji z XML pomocí XSLT, přidám si do XSLT pár nových řádek a přegeneruji HTML.

Výhoda XML + XSLT je v tom, že můžete dokonale oddělit obsah od vzhledu. To se vám s HTML + CSS ve většině případů stejně nikdy nepodaří zcela dokonale.

No to už jsme se ale dostali někam úplně jinam. Tak, abych diskusi vrátil trochu zpět a o něco obohatil, malý popis toho, jak funguje generování HTML z XML DocBooku a uvozovky. Text v uvozovkách/citace se v DocBooku uzavírá do elementu quote. Při konverzi do HTML se obsah elementu obalí uvozovkami. Použité uvozovky samozřejmě záleží na jazyku dokumentu a při zanoření se střídají. Až jednou budou všechny prohlížeče správně podporovat v element q, stačí v XSLT stylech pro převod DocBooku do HTML změnit pár řádek . Tomu říkám nechat si otevřené dveře.

Avatar

Autor komentáře: Marek Prokop

Datum vložení: 10.9.2002 0:39:08

Já vám, pane Kosku, rozumím a nechtěl jsem zpochybňovat výhody XML + XSLT. Jde mi jen o to, že (X)HTML + CSS má také své místo na slunci a má ho tam mimo jiné pro svou jednoduchost, okamžitou aplikovatelnost (bez dodatečných vývojových nástrojů, serverových transformací, atd.) a řádově snaží naučitelnost (uf, jak se řekny česky learning curve?).

Doporučovat XML + XSLT někomu, kdo chce jen rozumně jednoduchým způsobem vyřešit problém uvozovek (např. při blogování přes Blogger) v čistém HTML, je ještě větší kanón na vrabce než páně Snížkův skript. Skript, který lze navíc získat hotový, přilinkovat k dokumentu a je vystaráno.

A ještě k tomu DocBooku a XSLT -- až jednou budou všechny prohlížeče správně podporovat Q, budou už doufám také umět XSLT přímo na klientovi a to pak asi opravdu budeme řešit zcela jiné problémy :-)

Avatar

Autor komentáře: Jindřich Recina

Datum vložení: 9.9.2002 15:35:49

Naprostý souhlas. Já uvozovky dělám ručně a v CSS je vypínám. Je to - podle mě - nejsnadnější věc.

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 9.9.2002 17:44:21

a co ked uz je to hotove??? Uz vidim ako to bude niekto robit rucne. A ked data budu v DB???

Je lepsie pomoct cez js, ako sa trapit :)

Avatar

Autor komentáře: Jirka Kosek

Datum vložení: 9.9.2002 17:54:06

Asi mi něco uniká, ale o co je pracnější vložení uvozovek oproti vložení elementu Q?

Rozumný editor vám to vloží sám, po stisku nějaké klávesové zkratky, skriptu který generuje data z databáze je to také jedno.

Avatar

Autor komentáře: Pavel Sníh

Datum vložení: 9.9.2002 20:41:11

Myslím, že si nerozumíme v jedné zásadní věci. Rozdíl mezi zapsáním uvozovky a tagu <q> je minimální (odhlédneme-li od nutnosti pamatovat si v jaké hloubce zanoření citátů zrovna sema jaký znak jí tedy odpovídá :-) ), ovšem rozdíl mezi dokumentem (nebo například archívem přepisu televizních zpráv), který má citaci zapsány v uvozovkách a nebo v tazích <q> mi připadá značný (a vám právě ne). V prvním případě je citace prostě kus textu, v druhém je to jasně označený element, který vypovídá o struktuře dokumentu a jako takový může být zpracováván (například pro prohledávání nebo tvorbu indexu).

Samozřejmě, pokud si děláte osobní stránky, je vám rozdíl uvozovky a <q> šumák, pokud ale děláte informační systém rozhodně nechcete zbytečně přicházet o šanci vědět o vašich datech více. Takže <q> použijete určitě.

Je ale pravda, že věta "user agents must ensure that the content of the Q element is rendered with delimiting quotation marks" by v zásadě mohla znamenat, že pokud prohlížeč narazí na tag <q>, ve kterém je vložen ozávorkovaný text, další závorky už nevloží. Nicméně i tak mi užití javascriptu k vynucení si požadovaného chování připadá celkem rozumné, a to zejména proto, že vložení správných uvozovek je pro mě stejně kosmetická záležitost jako třeba italika u em (tedy zdůraznění) či bold u strong (tedy silného zdůraznění nikoli "silného písma"). Je to tedy přesně ta tenká červená linie mezi XHTML a CSS, ladné kombinaci budoucnosti, která již zapomněla význam tagů <B>, <I>, <center>, <font> atd...

p.s.: pro ten "overkill" se myslím ujalo hezké české "kanón na vrabce"... pokud pamatujete zábavnou knížku ilustrovanou tuším Renčínem s názvem možná Programátorské poklesy... nemíchá-li se mi do toho Leacock nemístně

Avatar

Autor komentáře: Pavel Sníh

Datum vložení: 9.9.2002 20:45:32

když jsem před časem bědoval, že místní systém nenechá člověka napsat tag... nemyslel jsem to tak, že by se tagy měly v příspěvcích interpretovat... kdo se má v diskusním fóru psát s entitama sakra....

ty dvě tučný čárky měly být ičko a béčko...

Avatar

Autor komentáře: David

Datum vložení: 18.12.2004 16:40:09

</B> (uzavření boldu)

Avatar

Autor komentáře: David

Datum vložení: 18.12.2004 16:40:53

</I> a kurzívy.

Avatar

Autor komentáře: Jirka Kosek

Datum vložení: 9.9.2002 21:33:21

Ale rozumíme si. Problém je v tom, že kdyby element Q doplňoval spolehlivě uvozovky, bude ho většina lidí používat nejen pro vkládání citací, ale i uvozovek. Je to sice špatně, ale je to fakt. Marek Prokop má určitě v rukávu odkaz na nějakou studii, která prokáže že XX% stránek HTML značky sémanticky zneužívá (osobně odhaduji, že to XX bude hodně přes 50).

Pokud budete vytvářet archiv zpráv, většinou nepoužijete HTML (alespoň projekty, na kterých jsem se podílel nepoužívaly HTML, ale vlastní specializovaný XML slovník). U takové citace potřebujete mít další údaje, na které HTML nestačí -- třeba kdo ji pronesl apod. Lepší je proto použít nějaký sémanticky bohatší na XML založený jazyk. Uživatelům na webu ho převedete do HTML -- jak tam budou vložené uvozovky a citace je celkem jedno. Pokud však budete komerční firma, vystavíte patrně jen HTML kód, protože vytvoření XML kódu se sémantikou bylo dost nákladné na to, aby se jen tak zdarma někde vyvěsilo a ostatní z něj mohli snadno automaticky extrahovat informace. Je to určitě ošklivé a Mirek Dušín by to nikdy neudělal, ale je to tak.

Avatar

Autor komentáře: Bohdan Ganický

Datum vložení: 9.9.2002 19:17:48

Musím naprosto souhlasit s panem Koskem. Ja osobne pouzivam pseudoelementy :before a :after a prohlizece, ktere respektuji standardy, to zobrazi spravne a jenom cekam, az to tak budou delat i ty ostatni. Kdyby me prece jen neco nutilo, aby uvozovky byly videt v kazdem prohlizeci, urcite nebudu divocit s JS a naladuju to tam rucne. Ostatne jak casto pouzivate <I>blockquote</I> pri delani stranek?

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 10.9.2002 9:52:07

A raz sa stane ze tam tie uvodzovky budu 2 krat. Co ked bude browser len HTML a to korektne. Co ked bude mat uzivatel vlastny stylesheet???.

Pri pisani este rozmyslat nad tym ake uvodzovky tam dat (podla jazyka), aka je hlbka vnorenia, atd. Radsej tam dam jeden riadok ktorym vlozim skript ako sa takto trapit.

Vacsina problemov odpada ked stranku tvory jeden clovek. Ak je tvorcov viac (napr: portalu, noviny, ...) je dost velky problem ich naucit co a ako. A este to potom kontrolovat. Fakt zabava :)

Avatar

Autor komentáře: Martin Snížek

Datum vložení: 11.9.2002 23:38:32

<I>Pokud nutně toužíte po tom, že text v uvozovkách je citace a má být označena pomocí elementu Q, vždycky okolo něj můžete uvozovky přidat ručně a v CSS je vypnout, aby v Mozille a Opeře nebyly dvojité.</I>

Přesně tohle mě napadlo, když jsem se tímto problémem začal zabývat -- správná srozumitelnost dokumentu se ale tím pádem stává závislá na stylesheetech, což je v rozporu se dobrou přístupností webu. Potom např. každý robot, který pracuje pouze s dokumentem bez obrázků, skriptů a stylů, by interpretoval dokument nesprávně, a to jenom proto, že dodržuje webové standardy. Tohle se mi nezdá správné dělat jenom kvůli tomu, že MSIE automatické uvozovky neumí.

Avatar

Autor komentáře: Martin Kopta

Datum vložení: 9.9.2002 23:31:06

Sem vepište svůj příspěvek.

---> To taky udělám!

Dneska jsem se celý den drbal na hlavě a přemýšlel nad těmi uvozovkami. Z hlediska pravopisu si (po pěti letech studia českého jazyka) troufnu říci, že vyloženě nutné nejsou. Ortografie pouze určuje, pro jaké účely se používají a jaký mají vzhled. Také typografie se uvozovkami příliš nepáře. Trochu problematický je ohled na uvozovky v hladké sazbě, protože uvození pomlčkou se nedá využít vždy, ale ve smíšené sazbě se dobře uplatňují vyznačovací řezy a barvy.

Jinak Jirkovi Koskovi bych chtěl připomenout, že informaci o tom, kdo větu pronesl může v HTML skrývat značka <CITE> nebo atribut CITE, ale je pravda, že oproti Dublin Core je to prd.

Asi bych se v současnosti přikláněl -- pokud na uvozovkách trváte -- na řešení zvoleném Jirkou Koskem (zapsat je a pro Mozillu zrušit). Mně tedy uvozovky nijak zvlášť nechybí, citát obvykle dobře uvodí už dvojtečka a odlišit se dá kurzivou.

Možná by bylo lepší, kdyby některý autor Intervalu (třeba Ondra Kopp) napsal drobný skriptík onFocus="this.value='';" pro formulářové pole pro příspěvky. :-)

Avatar

Autor komentáře: Marek Prokop

Datum vložení: 10.9.2002 0:22:49

Martine, citát sice možná dostatečně uvodí dvojtečka, co ho ale stejně zřetelně ukončí? Kursiva je možná hezká, ale slepému poslouží asi jako mrtvému zimník. Z toho, co píše Mark Pilgrim o Jaws (viz odkaz v jednom z mých předešlých příspěvků) jsem vyrozuměl, že některé současné screen readery samotné Q také nijak nezvýrazní, i když si dovedu představit, že jiné by Q mohlo přinutit odrecitovat "cituji: 'blba bla bla' konec citátu".

Další otázka je, jak se kursiva projeví v textovém prohlížeči.

Avatar

Autor komentáře: nikdo

Datum vložení: 6.1.2003 19:55:02

Kudla, co to tu řešíte ???

Zpět na článek | Úvodní stránka Interval.cz