Portál AbcLinuxu, 6. května 2025 14:06

Dotaz: XSLT dlouhá doba zpracování

17.12.2012 09:57 Kit
XSLT dlouhá doba zpracování
Přečteno: 225×
Odpovědět | Admin
Zpracovávám dokument v MathML XSLT procesorem. Zkoušel jsem saxon a xsltproc. Doba zpracování krátkého dokumentu je v obou případech 6-10 sekund. Pokud odstraním DOCTYPE, doba se zkrátí na jednotky milisekund, ale nejsou rozpoznány entity.

Zřejmě se dynamicky stahují DTD a další doplňky z netu. Dá se nějakým způsobem použít cache, aby se to nestahovalo pokaždé znovu?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.12.2012 10:19 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: XSLT dlouhá doba zpracování
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dá se nějakým způsobem použít cache, aby se to nestahovalo pokaždé znovu?

V /etc/xml/catalog lze nadefinovat přepis URL na lokální adresář.

Popřípadě lze použít i jiné umístění pomocí proměnné $SGML_CATALOG_FILES a xsltproc --catalogs.

I am always ready to learn although I do not always like to be taught. (W. Churchill)
17.12.2012 10:55 Kit
Rozbalit Rozbalit vše Re: XSLT dlouhá doba zpracování
To zní sice pěkně, ale těch závisejících souborů je docela dost a do ručního stahování se mi moc nechce. Cache by byla určitě zajímavější. I tak díky.
17.12.2012 12:42 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: XSLT dlouhá doba zpracování
ale těch závisejících souborů je docela dost a do ručního stahování se mi moc nechce

To by šlo částečně obejít xmllintem. Pro tenhle jednoduchý vstup:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"
           "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
<math xmlns="http://www.w3.org/1998/Math/MathML">
    <mrow>
        <mi>a</mi>
    </mrow>
</math>

vypíše

xmllint mathml.xml --loaddtd --load-trace --noout 2>&1 | cut '-d"' -f 2

tohle (zkráceno):

mathml.xml
http://www.w3.org/Math/DTD/mathml2/mathml2.dtd
http://www.w3.org/Math/DTD/mathml2/mathml2-qname-1.mod
http://www.w3.org/Math/DTD/mathml2/iso9573-13/isotech.ent
...
http://www.w3.org/Math/DTD/mathml2/iso8879/isobox.ent
...
http://www.w3.org/Math/DTD/mathml2/mathml/mmlextra.ent
http://www.w3.org/Math/DTD/mathml2/mathml/mmlalias.ent

Mimochodem - nejsou ty DTD už připravené jako nějaký balíček (pro Arch se zdá, že něco takového existuje)?

I am always ready to learn although I do not always like to be taught. (W. Churchill)
17.12.2012 18:23 Kit
Rozbalit Rozbalit vše Re: XSLT dlouhá doba zpracování
xmllint jsem si vyzkoušel, ale v principu mi na tomto přístupu vadí, že kvůli každému DTD uživatelského programu musím ručně hrabat do /etc/ (ke kterému má přístup jen root) nebo stále trpět několikasekundové časy zpracování. Jeví se mi to jako dost nešikovné.

Nejde mi ani tak konkrétně o MathML, ale o obecný přístup k cachování DTD a přidružených souborů. Například i DocBook trpí podobným neduhem. To může shazovat použitelnost i jinak kvalitních projektů. Kvůli takové banalitě se výrazně prodlužují časy zpracování a to je špatně.
17.12.2012 20:03 l4m4
Rozbalit Rozbalit vše Re: XSLT dlouhá doba zpracování
kvůli každému DTD uživatelského programu musím ručně hrabat do /etc/
$XML_CATALOG_FILES

Ale především: On-line zdroje nemusejí být dostupné. Naprostá většina těch věcí je v distribucích v nějakém balíku. Takže naopak xsltproc --nonet a donutit uživatele je nainstalovat. Používáš-li něco fakt exotického, tak to tahat s sebou.
17.12.2012 20:57 Kit
Rozbalit Rozbalit vše Re: XSLT dlouhá doba zpracování
Tak xsltproc mi už s $XML_CATALOG_FILES chodí i bez dalšího parametru. Saxon zatím ne, ale to mě tolik netrápí.

Možná nejjednodušším řešením bude HTTP proxy cache.
$ http_proxy=http://127.0.0.1:8000 xsltproc ...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.