PB138cv/Cv9

Z FI WIKI
Přejít na: navigace, hledání

XML Catalogs

Katologové soubory umožňují snazší přenositelnost XML dokumentů při zachování pohodlí pro autory. Pokud někomu posíláme XML dokumenty, měly by použité systémové identifikátory (které například odkazují na soubor s DTD) obsahovat absolutní URL adresu, která je dosažitelná odkudkoliv. Dokumenty jsou pak snadno přenositelné, protože všechny další soubory potřebné pro jejich validaci apod. jsou dostupné na síti.

Problém nastává v situacích, kdy nejsme připojeni k síti. Zdroj označený systémovým identifikátorem je pak nedostupný.

Elegantním řešením tohoto problému jsou katalogové soubory, které umožňují přemapovat veřejné i systémové identifikátory na jejich lokálně dostupnou kopii.

Ukázka

mesto.xml

 
<?xml version="1.0" encoding="ISO-8859-2"?>
 
<!DOCTYPE mesto SYSTEM "http://www.fi.muni.cz/~xpavlov/lidi2.dtd">
 
<mesto>
<author>
  <firstname>Jan</firstname>  
  <surname>Pavlovič</surname>
</author>
 
<clovek>
</clovek>
 
</mesto>

catalog.xml

 
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
    <system systemId="http://www.fi.muni.cz/~xpavlov/lidi2.dtd"
            uri="file:///home/xpavlov/public_html/pb138/lidi2.dtd"/>
 
</catalog>

Použití Katalogu v programu xmllint/xsltproc

  • Stačí nastavit proměnou XML_CATALOG_FILES=/home/xpavlov/pb138/catalog.xml

Použití Katalogu v programu xalan

  • Nastavíme soubor CatalogManager.properties

CatalogManager.properties

 
verbosity=1
relative-catalogs=yes
# Always use semicolons in this list
catalogs=catalog.xml
prefer=public
static-catalog=yes
allow-oasis-xml-catalog-pi=yes
catalog-class-name=org.apache.xml.resolver.Resolver
  • Přídáme do CLASSPATH adresář se souborem CatalogManager.properties a balík resolver.jar.
  • Spustíme transformaci:
    java -classpath .:resolver.jar:classes cz.muni.fi.pb138.demo.catalog.XSLTWithCatalogDemo demo.xml style.xsl demo-ctlg-out.xml
  • Zdrojové kody