FK~

Moje odkazy

Ostatní odkazy

EFF: svoboda blogování
Close Windows
Nenajdete mě na Facebooku ani Twitteru
Rozpad EU
Jsem členem FSF
Jsem členem EFF

XML Web generátor – verze 0.4

vydáno: 6. 7. 2012 21:22, aktualizováno: 28. 6. 2014 16:19

XML Web generátor

V případě mého programu XML Web generátor chybí projektový a produktový management a vývoj probíhá zcela živelně. Vydání nové verze znamená, že se urodil dostatek nových funkcí, aby stálo za to a tom napsat. Kvalitáři by z toho neměli radost, ale myslím, že u takovýchto programů to tak prostě má být :-)

Pokud netušíte, o co jde: XML Web generátor je generátor statických webových stránek a je to svobodný software, takže ho můžete nejen používat, ale i vylepšovat a redistribuovat. Více se dočtete zde:

Shrnutí novinek

Verze 0.4 přináší několik drobností a jednu větší funkcionalitu – skriptování.

  • Dokumentace – generování JavaDocu
  • Šifrování – Rot13
  • Tabulky: zarovnání číselných sloupců doprava
  • Poznámky pod čarou
  • Obfuskované odkazy na e-mail
  • Skriptování

Dokumentace – generování JavaDocu

Do adresáře dokumentace/javadoc se generuje dokumentace k javovským třídám. Spustíte příkazem:

$ ant dokumentace

Šifrování – Rot13

Nové makro, které umožňuje vložit „zašifrovaný“ text. Použit je velice primitivní algoritmus Rot13, který pouze sbstituuje písmenka. Nejde tedy o utajení textu před naslouchajícím nepřítelem, ale o to, aby si ho čtenář nepřečetl omylem – to se může hodit např. když píšete recenzi na film a vyzrazujete, jak to dopadne. Tuto část „zašifrujete“ a pro zobrazení čitelného textu musí čtenář kliknout na tlačítko (vyžaduje JavaScript).

Do stránky např. vložíte:

<m:šifra>Panda malá je menší než panda velká.</m:šifra>

a čtenář uvidí:

Cnaqn znyá wr zraší arž cnaqn iryxá.

a tlačítko pro dešifrování. Taky to můžete použít při popisu nějakého geocachingového pokladu, když píšete, pod kterým pařezem se nachází a nechcete ostatním zkazit zábavu při hledání.

živá ukázka (zdrojový kód)

Tabulky: zarovnání číselných sloupců doprava

Makro pro tabulky teď automaticky zarovnává sloupce obsahující čísla doprava.

živá ukázka (zdrojový kód)

Poznámky pod čarou

Když chcete něco poznamenat k textu, můžete to nacpat třeba do titulku elementu <abbr/> (což je můj ošklivý zlozvyk, kterým některé lidi štvu – snad se to odnaučím) nebo vložit odkaz na poznámku pod čarou, což je mnohem lepší, ale v některých systémech to dá moc práce. Někdy se používají hvězdičky, ale když jich je víc, nevypadá to dobře, a když chcete přidat nějakou poznámku mezi ostatní, musíte je všechny přečíslovat…

Aby to tedy tak pracné nebylo, je tu makro <m:podČarou/>. Příklad:

nějaký normální text <m:podČarou> nějaká poznámka, která se vloží pod čáru na konec stránky </m:podČarou> a zase normální text odstavce

Do textu se vloží malé číslo, které funguje jako odkaz na poznámku. Naopak číslo u poznámky umožňuje skočit zpět do textu.

živá ukázka (zdrojový kód)

Obfuskované odkazy na e-mail

Již v předchozí verzi měl generátor makra pro vkládání různých typů odkazů (Wikipedia, RFC, vyhledávače atd.). Teď přibyl nový typ odkazu typ="email", který slouží jako ochrana proti spamu. Spamování (resp. sběr e-mailových adres z webu spamovacími roboty) sice není úplně vyloučeno, ale je značně ztíženo a zároveň uživatel může na odkaz kliknout.

Do XML zdroje vložíte:

<m:a href="vaše.adresa@example.com" typ="email">Napište nám!</m:a>

V XHTML kódu vygenerované stránky se pak objeví text: „vaše.adresa zavináč example tečka com“ (čemuž většina spamovacích robotů nebude rozumět a nepozná, že jde o e-mailovou adresu). Pokud má uživatel v prohlížeči podporu JavaScriptu (většina uživatelů má), zobrazí se mu na stránce normální klikatelný odkaz a může vám snadno napsat.

Obsah elementu (v příkladu: Napište nám!) je nepovinný – pokud ho vynecháte, vloží se e-mailová adresa.

živá ukázka (zdrojový kód)

Skriptování

Nejvýznamnější změnou ve verzi 0.4 je podpora skriptování. Kromě toho, že si můžete definovat vlastní makra v jazyce XSLT a ušetřit si tak práci, můžete do stránek vkládat i skripty v prakticky libovolném jazyce (podporované jsou zatím BASH, Perl, PHP, Python, ale přidání dalších je triviální).

Skriptování funguje tak, že do XML stránky vložíte:

<m:skript jazyk="bash">
	echo "Ahoj ze skriptu!";
	uname -a;
</m:skript>

A generátor skript provede a jeho standardní výstup vloží na dané místo v XHTML stránce. Skript nemusíte definovat přímo v těle elementu, ale můžete se pomocí atributu src="…" odkázat i na existující soubor (podobně to funguje u zvýrazňování syntaxe či diagramů a tabulek).

Ve skriptech máte dostupné následující proměnné prostředí:

Proměnná Význam
XWG_STRANKA_URI URI aktuálně zpracovávané stránky
XWG_STRANKA_SOUBOR absolutní cesta k souboru
XWG_STRANKA_NADPIS nadpis stránky
XWG_STRANKA_PEREX perex stránky

Výstup skriptu se bere jako prostý text (výchozí chování) nebo jako XML/XHTML fragment (atribut výstup="xhtml"). Skriptem je tedy možné vygenerovat i třeba položky seznamu (<li>) nebo řádky tabulky. Generátor se postará o kontrolu správnosti XML (mezi Javou a XSL šablonou se nepředává text XML, ale DOM strom), takže se vám nestane, že by vám chybný skript rozbil výstup (vložil např. překřížené nebo neuzavřené značky či použil neexistující jmenné prostory). V režimu prostého textu se výstup escapuje, takže opět nehrozí rozbití XML dokumentu.

V XML/XHTML výstupním režimu může skript generovat nejen XHTML značky (odkazy, obrázky, položky seznamu…), ale i další makra – ta se po provedení skriptu interpretují a až pak vloží do stránky.

Stejně tak i zdrojový kód skriptu uzavřený mezi <m:skript></m:skript> může obsahovat jiná makra. Ta se interpretují před provedením skriptu. Můžete mít např. makro, které vkládá název vaší firmy a vkládat ho jak do textu stránek, tak do skriptů, které s ním budou nějak dále pracovat.

Skripty můžete vnořit do jiných značek a vygenrovat skriptem jejich zadání – např. CSV data pro tabulkové makro nebo GraphViz data pro diagramové makro. Stejně tak můžete vygenerovat zdrojový kód pro zvýraznění v makru <m:pre/>, což zní sice trochu zvláštně, ale může to být užitečné – někdy totiž chcete do stránky vložit jen část souboru se zdrojákem, který máte na disku – ve skriptu pak vyříznete (ať už na základě čísel řádků, head/tail nebo třeba XPath dotazem či nějakým regulárním výrazem) jen tu relevantní část, která se má vložit do stránky a zvýraznit. Je to lepší než danou část ručně kopírovat do stránky, protože pak se změní původní zdroj a musíte stránku aktualizovat – skript to udělá za vás. Časem možná přibude funkce, která tohle umožní dělat deklarativně (zadat rozsahy řádků nebo XML ID či XPath – XInclude…) místo procedurálně (skriptem).

Skripty (stejně jako ostatní makra) můžete použít i v definicích maker (XSL soubory). Toho je využito v ukázkovém makru <m:hg-verze/>. To volá skript, který řekne mercurialu, aby vypsal historii úložiště ve formátu XML, a následně toto XML předá XSL šabloně (makru), která z něj vybere čísla verzí, naformátuje datum a celé to vloží do XHTML tabulky na stránku. Takhle:

Číslo verze Datum vydání
0.4 6. 7. 2012
0.3 8. 1. 2012
0.2 23. 8. 2011
0.1 30. 4. 2011

Makra vlastně můžete zanořovat do sebe v libovolném počtu úrovní a několika způsoby :-) Nejlepší bude se podívat na ukázky:

živá ukázka (zdrojový kód)

Skripty se hodí hlavně pro vkládání externích dat do stránek – např. ceníků nebo telefonních seznamů. Ve skriptu se klidně můžete připojit k SQL databázi, LDAPu nebo zavolat nějakou SOAP webobou službu a výsledek převést na XHTML buď přímo ve skriptu nebo v XSL šabloně. Nebo pro generování ukázkových dat – např. výpis faktoriálů, převodní tabulka mezi různými číselnými soustavami, mocniny dvou… nemusíte je psát nebo si je generovat někde bokem, ale jednoduše vložíte do stránek skript, který to udělá za vás. Případně pro různé výpočty – místo, abyste je dělali třeba v tabulkovém editoru a pak pracně kopírovali na web, provedete výpočet přímo na stránce pomocí skriptu (data může čerpat třeba z CSV nebo XML souboru).

Témata: [softwarové inženýrství] [XML] [www]

Komentáře čtenářů

Tento článek zatím nikdo nekomentoval

Přidat komentář

reagujete na jiný komentář (zrušit)
jméno nebo přezdívka
název příspěvku
webová stránka, blog
e-mailová adresa
nápověda: možnosti formátování
ochrana proti spamu a trollům

Náhled komentáře