Lokální mapování
Tento catalog.xml mapuje identifikátor DTD na soubor ve složce dtd vedle katalogu. Relativní uri se řeší vůči katalogu. System slouží pro externí systémový identifikátor, uri pro hledání zdroje podle jeho URI.
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<system systemId="https://example.cz/katalog.dtd" uri="dtd/katalog.dtd"/>
<uri name="https://example.cz/katalog.xsd" uri="schema/katalog.xsd"/>
</catalog> Použití v libxml2
Pokud potřebuješ důvěryhodnou DTD, ulož ji lokálně a zapoj katalog. V libxml2 se katalogy určují proměnnou XML_CATALOG_FILES. Ověř návratový kód; jiné knihovny používají vlastní rozhraní pro vyhledávání a načítání souborů (resolver).
XML_CATALOG_FILES=catalog.xml xmllint --noout --valid katalog.xml Více mapování
Public řeší PUBLIC identifikátory, rewriteSystem a rewriteURI přepisují začátky adres. NextCatalog připojuje další katalog. Pravidla prefer a pořadí kandidátů mají definovaný význam, proto katalog otestuj na přesných URI z reálných dokumentů.
Katalog není firewall
Katalog nemusí zachytit každý odkaz. Pokud katalog odkaz nezná, knihovna se může pokusit načíst soubor přímo z uvedené adresy. Odděleně zakaž nechtěnou síť a lokální soubory, kontroluj i import/include schémat. Pro reprodukovatelnou validaci verzuj katalog společně s lokálními schématy.
Úplná lokální validační sada
<!ELEMENT katalog (kniha*)>
<!ELEMENT kniha (#PCDATA)> <!DOCTYPE katalog SYSTEM "https://example.cz/katalog.dtd">
<katalog><kniha>XML</kniha></katalog> XML_CATALOG_FILES=catalog.xml xmllint --nonet --noout --valid katalog.xml Katalog přesměruje systemId přesně na dtd/katalog.dtd, takže v tomto testu není potřeba síť. Relativní cíl je vztažený ke katalogu. Po změně systémového identifikátoru na jinou URL bez mapování má validace při --nonet selhat. Tím ověříš, že úspěch nebyl závislý na nechtěném síťovém stažení.
Pro rozsáhlé sady udržuj katalog, DTD, XSD a importované soubory společně ve verzované složce. Přesměrování na jinou verzi schématu mění pravidla validace: stejný dokument pak může nově projít nebo být odmítnut. Katalog dokumentuje přesměrování, ale soubory samotné musí být důvěryhodné. Pravidla resolverů jsou v OASIS XML Catalogs; konkrétní integraci ověř v API své knihovny.