Portál AbcLinuxu, 29. října 2025 15:23
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.
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)?
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ě.
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.
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 ...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.