ConTeXt ruleez!

Zdenek Wagner wagner at cesnet.cz
Wed Jun 28 14:45:13 CEST 2006


On Wed, 28 Jun 2006, Jano Kula wrote:

> Zdenek Wagner wrote:
>
> > XSLT, zejmena ve verzi 2.0, umi spoustu krasnych veci, ktere bych nechtel
> > delat v zadnem *TeX*u...
>
> zdravim,
>
> mohl byste uvest par praktickych veci, ktere umi xslt ve verzi 2.0
> oproti 1.0? abych ziskal motivaci. (jasne, ze je to v dokumentaci, ale
> praxe je praxe!).
>
Pouziva XPath 2.0, ktery je podstatne rozsireny proti starsimu XPath 1.0.
Nejpodstatnejsi vylepseni asi jsou:

Cykly <xsl:for-each-group ...>, ve specifikaci jsou velmi ilustrativni
priklady, podle nichz se to da pochopit. Dale je to pouzito v mem clanku
ve Zpravodaji 1/2006

Funkce distinct-nodes() v XPath 2.0

Kontrola typu promennych (napr. <xsl:variable name='a' as='xs:integer'>
nebo <xsl:variable name='e' as='element()*'>, diky cemuz se snaze hledaji
chyby ve stylesheetech)

Promenna muze obsahovat sekvenci uzlu nebo strom, takze ji muzete znovu
zpracovat sablonami bez nutnosti pouzivat funkci nodeset() ci node-set() z
EXSLT. EXSLT ma totiz ruzny jmenny prostor v ruznych procesorech XSTL1.0 a
jmeno funkce se take lisi, takze prenositelny stylesheet pak musi mit
vyhybky. Nyni to jiz neni nutne.

Moznost vystupu do vice souboru (XSLT 1.0 to nema, i kdyz v ruznych
procesorech na to existuji rozsireni, XSLT 2.0 to ma ve standardu).

Vzhledem k vyuziti XPath 2.0 odpadne rada <xsl:if> a <xsl:choose>, protoze
to lze v atributu select napsat primo pomoci if.

Zpracovani obecnych textovych souboru funkci unparsed-text()

Moznost uvedeni seznamu rezimu (mode) v <xsl:template match='...'
mode='...'>

Lze zadat defaultni jmenny prostor zpracovavanych elementu, takze nemusite
ve vyrazech XPath a ve vzorech porad zapisovat stejny prefix

<xsl:output method='xhtml'/>

XQuery 1.0

XML Schema-Aware Processing (to ale umi jen komercni verze Saxona)

Ukazky:
XML Prague 2005, M. Kay: Schema-Aware XSLT Processing,
http://www.xmlprague.cz/2005/program.html
Jsou tam i priklady, takze se muzete podivat, jak se zpracovava schema a
jak se nacita obecny textovy soubor funkci unparsed-text(), je tam pouzito
i <xsl:for-each-group>

XML system pro Zpravodaj, http://bulletin.cstug.cz/xml/
Je tam totez pro XSLT 1.0 i 2.0, takze mate studijni material ke srovnani
(vcetne hledani jmenneho prostoru EXSLT pro ruzne procesory).

Zdeněk Wagner: Zpracování pomocných TeXových souborů pomocí XSLT 2.0.
Zpravodaj 1/2006, http://bulletin.cstug.cz/bul20061.shtml
Ukazuje nacitani obecneho souboru funkci unparsed-text(),
<xsl:for-each-group>, trideni, opakovane zpracovani sekvence ulozene v
promenne. Stylesheet reimplementujici MakeIndex v XSLT je free, odkaz je
na zminene strance, ale podrobny popis je pouze ve Zpravodaji.

http://icebearsoft.euweb.cz/webmake.php - dokumentovany stylesheet pro
tvorbu mych webovych stranek. Vznikl puvodne pro Saxon mozna i ve verzi
5.x, postupne byl vylepsovan a byl upraven pro XSLT 2.0, i kdyz vzhledem k
nekolikaletemu postupnemu vyvoji nemusi byt vse optimalni. Na nekolika
mistec zustalo srovnani, jak je to udelano nyni a jak jsem to delal drive
v XSLT 1.0. V kapitole 6.1 diskutuji prave seznam rezimu, v kapitole 7 a
jejich podkapitolach zpracovavam sekvence ulozene v promennych. Dale jsou
tam pokrocile vyrazy XPath.

http://icebearsoft.euweb.cz/xmltools/rngdoc.php - nastroj pro anotaci
Relax NG schemat, pocinaje kapitolou 4.3 jsou ukazana reseni vyuzivajici
hojne XSLT 2.0 (nodeset, <xsl:for-each-group> a pokrocile vyrazy XPath).

Snad nevadi, ze uvadim temer vyhradne priklady sve prace, ale je to hlavne
tim, ze vsechny citovane nastroje jsou free a jako autor je znam a vim, co
jsem kde pouzil.

> diky
>
> jano kula
>

Zdenek Wagner
e-mail: wagner at cesnet.cz

see also http://hroch486.icpf.cas.cz/wagner/
         http://icebearsoft.euweb.cz





More information about the csTeX mailing list