Blame lib/dbtexmf/xslt/4xslt.py

Packit Service 76cb02
#
Packit Service 76cb02
# 4Suite plugin
Packit Service 76cb02
#
Packit Service 76cb02
import sys
Packit Service 76cb02
import os
Packit Service 76cb02
Packit Service 76cb02
from Ft.Xml.Xslt import Processor
Packit Service 76cb02
from Ft.Lib.Uri import OsPathToUri
Packit Service 76cb02
from Ft.Xml import Catalog, InputSource
Packit Service 76cb02
from Ft.Xml.Domlette import NonvalidatingReader
Packit Service 76cb02
Packit Service 76cb02
class FourXslt:
Packit Service 76cb02
    def __init__(self):
Packit Service 76cb02
        self.verbose = 0
Packit Service 76cb02
        self.use_catalogs = 1
Packit Service 76cb02
        # Do it only once
Packit Service 76cb02
        self.factory = self.get_factory()
Packit Service 76cb02
Packit Service 76cb02
    def get_deplist(self):
Packit Service 76cb02
        return []
Packit Service 76cb02
Packit Service 76cb02
    def get_factory(self):
Packit Service 76cb02
        system_catalogs = ['/etc/xml/catalog',
Packit Service 76cb02
                           '/usr/local/share/xml/catalog']
Packit Service 76cb02
Packit Service 76cb02
        system_catalogs = [p for p in system_catalogs if os.path.exists(p)]
Packit Service 76cb02
Packit Service 76cb02
        if system_catalogs:
Packit Service 76cb02
            xml_catalog_files = os.getenv("XML_CATALOG_FILES")
Packit Service 76cb02
            if xml_catalog_files:
Packit Service 76cb02
                xml_catalog_files += " " + " ".join(system_catalogs)
Packit Service 76cb02
            else:
Packit Service 76cb02
                xml_catalog_files = " ".join(system_catalogs)
Packit Service 76cb02
            os.environ["XML_CATALOG_FILES"] = xml_catalog_files
Packit Service 76cb02
Packit Service 76cb02
        # The factory now takes into account the new XSML_CATALOG_FILES
Packit Service 76cb02
        factory = InputSource.InputSourceFactory(catalog=Catalog.GetDefaultCatalog())
Packit Service 76cb02
        return factory
Packit Service 76cb02
Packit Service 76cb02
    def run(self, xslfile, xmlfile, outfile, opts=None, params=None):
Packit Service 76cb02
        proc = Processor.Processor()
Packit Service 76cb02
        proc.msgPrefix = ""
Packit Service 76cb02
        proc.msgSuffix = "\n"
Packit Service 76cb02
        factory = self.factory
Packit Service 76cb02
Packit Service 76cb02
        uri = OsPathToUri(xmlfile)
Packit Service 76cb02
        xml = factory.fromUri(uri)
Packit Service 76cb02
Packit Service 76cb02
        uri =  OsPathToUri(xslfile)
Packit Service 76cb02
        xslt = factory.fromUri(uri,  processIncludes=False)
Packit Service 76cb02
Packit Service 76cb02
        o = open(outfile, "w")
Packit Service 76cb02
        proc.appendStylesheet(xslt)
Packit Service 76cb02
        if params:
Packit Service 76cb02
            rc = proc.run(xml, outputStream=o, topLevelParams=params)
Packit Service 76cb02
        else:
Packit Service 76cb02
            rc = proc.run(xml, outputStream=o)
Packit Service 76cb02
        o.close()
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
class Xslt(FourXslt):
Packit Service 76cb02
    "Plugin Class to load"
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
def main():
Packit Service 76cb02
    run(sys.argv[1], sys.argv[2], sys.argv[3])
Packit Service 76cb02
Packit Service 76cb02
if __name__ == "__main__":
Packit Service 76cb02
    main()