Portál AbcLinuxu, 6. května 2025 14:06
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 xmllint
em. 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.