|
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()
|