Sova v síti - 5/3 - vydáno 9. 9. 2003 Dobrý den, Do rukou se vám dostává páté letošní číslo Sovy v síti. Přesněji řečeno *dvojčíslo*, neboť v něm najdete hned dva články. Tím prvním zahajuje Martin Kopta svůj seriál o kontrolovaných slovnících a poprvé tak uvádí do emailové Sovy (a zřejmě i do česky psané literatury vůbec) téma informační architektury na Webu. Druhý článek je pokračováním seriálu Romana Pichlíka ze světa XSL transformací. Po úvodním dílu z čísla 3/3, který si můžete zopakovat na adrese http://www.sovavsiti.cz/2003/xslt-1.html vás dnes čeká podrobnější výklad struktury stylových předpisů XSL a zejména praktický příklad. Dáváte-li přednost četbě ezinu na webu, zde jsou odkazy na HTML verze dnešních článků: + Kontrolované slovníky při stavbě a správě webu (část první) http://www.sovavsiti.cz/2003/kontrolovane-slovniky-1.html + XSLT, svět transformací II http://www.sovavsiti.cz/2003/xslt-2.html - - - A teď se již můžete dát do čtení. Krásný den či večer vám přeje, Marek Prokop ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Denně aktualizované novinky, odkazy na články, zajímavé stránky: Weblog Sovy v síti -- http://www.sovavsiti.cz/weblog/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ KONTROLOVANÉ SLOVNÍKY PŘI STAVBĚ A SPRÁVĚ WEBU (ČÁST PRVNÍ) Martin Kopta Když přede mnou někdo ještě před pár měsíci prohodil tajemná slova "kontrolovaný slovník" (controlled vocabulary), koukal jsem na něj jako sůva z nudlí. Záhy jsem ale pochopil, že kontrolované slovníky při stavbě, a především při správě webu, běžně používám. Proč ne slovník, ale rovnou slovníky? Je jich více druhů a na webu jich ke slovu přijde hned několik: + AUTORITATIVNÍ SEZNAM (authority file) + SYNONYMICKÁ ŘADA (synonym ring) + TŘÍDICÍ SCHÉMA (classification scheme) + TEZAURUS (thesauri) Rozdělení jsem převzal z knihy Information Architecture for the World Wide Web [1], kde o kontrolovaných slovnících najdete kapitolu. Nyní si probereme autoritativní seznamy a synonymické řady a příště se podíváme na třídicí schémata a tezaury. == Autoritativní seznam == (Jinak také: vertikální seznam) S jedním autoritativním seznamem se setkáváte už od základní školy a měli byste se ho držet i na webu -- znáte ho pod názvem Pravidla pravopisu. Autoritativní seznam není nic jiného než seznam slov, která je záhodno na webu používat. Takový seznam se hodí v případě, že existuje více variant psaní téhož výrazu. Budete psát název své firmy s iniciálami "Český Telecom", nebo VERZÁLKAMI? Budete psát "on-line" se spojovníkem, nebo bez? Rozhodněte se mezi možnostmi a do autoritativního seznamu své rozhodnutí zvěčněte. Příště už budete mít, kam se podívat. Autoritativní seznam ale není náhradou pravopisných pravidel -- to bychom pak nepotřebovali Ústav pro jazyk český. Autoritativní seznam pakřijde vhod především v těch případech, kdy existuje několik alternativ nebo synonym pro pojmenovávanou skutečnost. Například v obchodě s digitální technikou se budete muset rozhodnout, zda nazvete kategorii výrobků "digitály", "digiťáky" nebo "digitální fotoaparáty". Tady už přichází vedle libovůle a pravopisu ke slovu také optimalizace pro vyhledavače. Když to shrneme, autoritativní seznam je seznam slov a tvarů, které budete závazně používat na webu. Jejich výhodou je konzistentnost stylu, a tedy zjednodušení orientace na webu pro uživatele a lepší připravenost pro vyhledavače. = Seznam pro rejstříky a křížové odkazy = Autoritativní seznam má několik ryze praktických využití. Hodí se při automatickém generování rejstříků nebo křížových odkazů -- prostě stačí postupně vyhledat všechny položky seznamu a nalezené dokumenty vzájemně provázat odkazy (například: "O domácích robotech také na stránkách..."). = Seznam pro manuál editora, neboli styleguide = Autoritativní rejtřík je základem redakčního manuálu. Editoři budou vědět, že "ČESKÉ RADIOKOMUNIKACE" se píší jako "České Radiokomunikace" a při prvním výskytu mají do závorky za názvem firmy uvést zkratku "ČRa", jež se pak bude objevovat místo něj. == Synonymická řada == (Jinak také: horizontální seznam) Kdo četl knihy Karla Čapka, jistě si vzpomene, jak vodník kašlal, kejchal, chrchlal, sípal, chroptěl... Synonymické řady na webu ale nevyužíváme ke zvýšení literární hodnoty. Naopak dá se říci, že pokud se synonym vzdáte a budete se řídit autoritativním seznamem, zkrátí se doba, kterou uživatelé budou potřebovat k pochopení vašeho webu. Na druhou stranu, pokud někdo bude hledá "mikrovlnky" a vy máte na webu jen "mikrovlnné trouby", asi těžko k vám přijde nakoupit. To je také největší úskalí autoritativních seznamů. = Synonyma pro vnitřní prohledávání = Při pohledu na dotazy, které pokládají uživatelé na vašem webu zjistíte, že ať se snažíte sebelépe vystihnout nejběžnější pojmenování, vždy se najde dost lidí, kteří slovo zadají s drobnou odlišností, s překlepem, pravopisnou chybou, v jiném jazyku, synonymem nebo zkratkou. Interní vyhledavač pak nemůže dotaz obsloužit tak, aby se uživatel dostal k požadovaným informacím. Právě překlepy, zkratky, varianty, chyby a synonyma uplatníte při řozšiřování vertikálního autoritativního seznamu o vodorovnou osu. Interní vyhledavač pak může hledaná slova ověřit proti synonymickým řadám a nahradit výrazy jejich autoritativní variantou a hledat teprve tu. Případně, pokud na webu používáte více variant hledaného slova (například zkrácený tvar), můžete o něj hledání rozšířit. Minimálním rozšířením autoritativních seznamů v češtině je skloňování a časování -- pokud ohýbat slova neumí už vyhledavač. Nezapoměňte uživateli vždy sdělit, co jste s dotazem provedli, aby nebyl zmatený, až nalezené dokumenty jím hledané slovo nebudou obsahovat. = Synonyma pro zvýšení návštěvnosti = V případě, kdy potřebujete použít synonyma, abyste získali vyšší návštěvnost z fulltextových vyhledavačů, musíte často hledaná slova dostat do textu na svém webu -- metadata vám v tomhle případě nepomohou. Zvažte, která ze synonym použít, a která nikoli. Asi nemá smysl psát do textu záměrně překlepy, ale někdy se může vyplatit zmínit se o častých pravopisných chybách v drobné poznámce -- například "mikrovlné trouby". Obvykle stačí použít odborný (oficiální) a hovorový (běžný) výraz. Poraďte se o poměru způsobu použití variant s konzultantem optimalizace pro vyhledavače. (Příště: TŘÍDICÍ SCHÉMA a TEZAURUS) == Doporučené odkazy == [1] ROSENFELD, Louis. MORVILLE, Peter. "Chater 9. Thesauri, Controlled Vocabularies, and Metadata". in Information Architecture for The World Wide Web. Second Edition. Strany 176--208. O'Reilly & Associates. Sebastopol (USA, Kalifornie). Srpen 2002. ISBN 0-596-00035-9. Dostupné v síti WWW [2] Riecks, David. "Controlled Vocabulary.com". Dostupné v síti WWW [3] "Web Style Guide". Dostupné v síti WWW (c) 2003 Martin Kopta, mailto:martin.kopta@garcon.cz - - - O autorovi: Martin Kopta je wedoucím projektu DigiWeb.cz http://DigiWeb.cz/weblog HTML verzi tohoto článku naleznete na adrese: http://www.sovavsiti.cz/2003/kontrolovane-slovniky-1.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ukázky z knihy CSS - Kaskádové styly pro webdesignéry http://www.sovavsiti.cz/css-pro-webdesignery/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ XSLT, SVĚT TRANSFORMACÍ II Roman Pichlík V druhém pokračování našeho povídaní pronikneme do tajů XSLT transformace, ukážeme si jak transformovat jednoduchý XML dokument a podíváme se pod pokličku jazyku XPath. == Základní struktura == Každý styl, nebo chcete-li stylový předpis, je sám o sobě pouze XML dokumentem. Platí pro něj tedy základní pravidla, která musí splňovat jakýkoliv jiný XML dokument. Tato pravidla jsou notoricky známá a nebudeme se jich dotýkat. Všechny XSL elementy jsou uvozeny jmenným prostorem xsl, aby bylo možné ve stylu kombinovat různé sady elementů. Například XSL elementy s HTML elementy nebo vlastními XML elementy. Vstupním bodem každého stylu a jeho kořenovým elementem je , který následuje hned po XML hlavičce. Styl se skládá z jednotlivých šablon, které určují, jak se budou části XML dat transformovat do zvoleného výstupního formátu. Pokud otevřeme soubor stylů (obvykle má příponou xsl) uvidíme následující zápis: . . . zápis stylů . URL identifikující jednoznačně jmenný prostor XSL je velice důležitá informace pro zpracování XSLT procesorem. Proto si na její přesný zápis dejte pozor. id - (nepovinný) jedná se o identifikátor XSLT stylu version - (povinný) verze jazyka XSLT extension-element-prefixes - (nepovinný) definuje prefix elementů rozšiřujících XSL exclude-result-prefixes - (nepovinný) definuje jmenný prostor XSLT stylů nekopírovaných na výstup Verze určená atributem version by měla v současnosti nabývat pouze hodnotu 1.0, neboť jedině tato specifikace má status doporučení W3C. XSLT 1.1 zůstalo ve stádiu rozpracování a nic nenasvědčuje tomu, že by se pokračovalo v jeho dalším vývoji. K finálnímu vydání se blíží verze 2.0, ale na tu si budeme muset ještě počkat. Atribut extension-element-prefixes slouží pro rozšíření jednotlivých XSLT procesorů. Skoro každý procesor nabízí nadstandardní funkce, které lze pro transformaci využít. Takové rozšíření je uvozeno jmenným prostorem, který zpracuje pouze daný XSLT procesor. Ostatní XSLT procesory tyto elementy ignorují. == SQL pro XML aneb XPath v akci == Než si ukážeme volbu výstupní metody, stručně se seznámíme s jazykem XPath. Nebojte se bude to pouze lehounké nakouknutí nezbytné k prvním krůčkům. XPath je samotný standard W3C, který slouží pro práci s XML daty. Umožňuje vybírat jednotlivé části XML dat pomocí jednoduchých výrazu. Každý XML dokument si můžeme představit jako strom, jehož uzly tvoří jednotlivé elementy, jejich atributy a textový obsah. Řekněme, že máme XML data s následují strukturou: Roman Pichlík 23.08.2003 Vstupní brána do světa XSL, který skrýva neuvěřitelné množství možností pro prezentaci XML dat. XSLT, svět transformací Když jsem přemýšlel o tomto, článku napadaly mě nejrůznější představy... ... Roman Pichlík 28.08.2003 Úvod do problematiky XSLT, základní struktura stylu, Xpath a výstupní metody transformace. XSLT, svět transformací II V druhém pokračování našeho povídaní... ... Stromovou reprezentaci těchto XML dat si můžeme představit takto: / |-kořen stromu | |-seznam-prispevku - kořenový element | |-prispevek | |- @id | | |-TO | | | |- autor | | |-TO | | | |- datum-vydani | | |-TO | | | |- abstract | | |-TO | | | |- nadpis | | |-TO | | | |_ text | |-TO | |-prispevek |- @id | |-TO | |- autor | |-TO | |- datum-vydani | |-TO | |- abstract | |-TO | |- nadpis | |-TO | |_ text |-TO Tata struktura obsahuje uzly čtyř typů: 1) kořen stromu zapsný znakem / 2) elementy zapsané jejich názvy 3) atributy označené znakem @ a jeich názvem 4) textový obsah označen zkratkou TO Povšimněte si, že textový obsah tvoří další úroveň stromu, stejně jako kořen stromu. Samotný jazyk XPath, nebo lépe řečeno jeho výrazy, které umožňují vybrat jednotlivé části XML, se podobají zápisu adresářové struktury. Toto přirovnání použil ve svém seriálu o XML i Jiří Kosek a mě se zdá nejvýstižnější. Proto jsem ho použil a budu se ho držet. Pro výběr elementu prispevek má výraz XPath podobu: /seznam-prispevku/prispevek pro vybrání prvního prispevku použijeme: /seznam-prispevku/prispevek[1] a pro výběr jeho atributu: /seznam-prispevku/prispevek[1]/@id Pokud chcete vybrat všechny nadpisy, použijte zápis: //nadpis Pro tyto výrazy se používají daále popsané vzory = Základní vzory XPath = jméno elementu - vzoru vyhovují všechny elementy odpovídajícího jména. x/y - vzoru odpovídají všechny elementy, jež jsou přímými potomky elementu x a jmenují se y. //x - vzoru vyhovují všechny elementy se jménem x. vzor[podmínka] - vzoru vyhovuje pokud je splněna podmínka. @x - vzoru vyhovuje pouze atribut se jménem x. Tyto základní vzory postačují pro většinu požadavků, na které může normální smrtelník narazit. Pokud se cítíte trochu zmateni, nic si z toho nedělejte. S praktickou ukázkou bude vše jasnější. == První transformace == Se základní znalostí XPath se můžeme pustit do první transformace, ve které si ukážeme základní stavební kameny každé šablony a použijeme XPath v praxi. Současně si ukážeme jak zvolit výstupní metodu pro transformaci. = První šablona = První stránka vytvořená XSLT transformaci - souhrn příspěvků

Seznam všech aktuálních příspěvků

Zapsal , dne http://example.com/foo.html# Trvalý odkaz

Nyní s připraveným stylem můžeme provést transformaci předešlých XML dat (na konci článku najdete ukázkové příklady v PHP, Jave a Mozille). Výsledkem transformace je následující kód. První stránka vytvořená XSLT transformaci - souhrn příspěvků

Seznam všech aktuálních příspěvků

XSLT, svět transformací

Když jsem přemýšlel o tomto článku napadali mě nejrůznější představy...

Zapsal Roman Pichlík, dne 23.08.2003 Trvalý odkaz

XSLT, svět transformací II

V druhém pokračování našeho povídaní...

Zapsal Roman Pichlík, dne 28.08.2003 Trvalý odkaz

Povšimněte si deklarace DTD, meta tagu určujícího typ dokumentu a kódování, které přidá XSLT procesor automaticky. To je způsobeno xsl elementem output, na který se podíváme v příštím pokračování. == Příklady transformace v PHP, Jave, Mozille == Přílohu článku tvoří soubory source.xml a stylesheet.xsl, ve kterých jsou dnešní probírané příklady. Přílohu naleznete na adrese http://www.sovavsiti.cz/download/priklady-0305.zip Mnohem typičtějším případem je tvorba XML dat tzv. on the fly tedy za běhu aplikace, kdy je výstup tvořen například z výsledku SQL dotazu. My ale zvolíme statické uložení do souboru, které se pro naše ukázky hodí lépe. = Java = Pokud soubory transformer.jar, source.xml a stylesheet.xsl uložíte do adresáře temp, můžete transformaci spustit v příkazovém řádku takto: c:\temp>java -jar transformer.jar source.xml stylesheet.xsl output.html 1 Parametry: - jméno zdrojového xml souboru - jméno šablony stylu - jméno souboru, do kterého bude uložen výstup - výstup transformace (1 - do souboru, 0 - výpis na konsolu) Pokud jar rozbalíte například zipem, najdete vedle binárních souborů .class i zdrojové soubory .java, kterými se můžete inspirovat. Pro bezproblémový chod doporučuji JRE 1.4, které má v sobě již XSLT procesor. Pokud použijete starší JDK musíte nastavit CLASSPATH na zvolený XSLTC procesor. = PHP = Předem upozorňuji, že nejsem nijak zdatný odborník na PHP. Kód jsem testoval na PHP 4.3, kde bylo XSLT přidáno jako experimentální podpora a jako XSLTC procesor se používal Sablotron. Rozkopírování příslušných extensions a nastavení PHP je dokumentováno v distribuci. = Mozilla = Transformovat umí i Mozilla, což dokládá soubor mozilla.html, který provede transformaci. Opět stačí mít mozilla.html ve stejném adresáři jako soubory source.xml a stylesheet.xsl. Zkoušeno v Mozille 1.4. Více informací o transformaci v prohlížečích založených na jádře Gecko naleznete na adrese http://devedge.netscape.com/viewsource/2003/xslt-js/ Transformaci můžeme provádět v jakémkoliv XSLT procesoru. Hodně zábavy. (c) 2003 Roman Pichlík, mailto:roman.pichlik@asei.cz - - - O autorovi: Roman "Dagi" Pichlík se specializuje na na webové skriptování. Od konce roku 2002 vydává vlastní weblog pro kodéry Dagblog, který najdete na adrese http://www.sweb.cz/pichlik/ HTML verzi tohoto článku naleznete na adrese: http://www.sovavsiti.cz/2003/xslt-2.html Předešlý díl seriálu XSLT, svět transformací naleznete na adrese: http://www.sovavsiti.cz/2003/xslt-1.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Doporučte sovu v síti vašim přátelům. Přepošlete jim toto číslo, nebo použijte formulář na http://www.sovavsiti.cz/recommend.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A to je pro dnešek vše. Na shledanou za dva týdny. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nechcete, nebo naopak chcete dostávat Sovu v síti? Odběr lze odhlásit odesláním zprávy na unsubscribe@sovavsiti.cz. Přihlásit se lze odesláním zprávy na subscribe@sovavsiti.cz, nebo formulářem na adrese http://www.sovavsiti.cz/. Chcete nám cokoli sdělit? Uvítáme vaše náměty, připomínky, kritiku, atd. na adrese mailto:redakce@sovavsiti.cz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Není-li v konkrétním případě uvedeno jinak, je autorem publikovaných textů Marek Prokop. Tento ezin, nebo jeho část můžete volně šířit dále, pokud současně uvedete údaje o autorech a odkaz na Sovu v síti. _________________________________________________________________ Sova v síti -- (c) 2003 Marek Prokop -- http://www.sovavsiti.cz/