summaryrefslogtreecommitdiffstats
path: root/libxslt/python/tests/pyxsltproc.py
diff options
context:
space:
mode:
Diffstat (limited to 'libxslt/python/tests/pyxsltproc.py')
-rwxr-xr-xlibxslt/python/tests/pyxsltproc.py298
1 files changed, 0 insertions, 298 deletions
diff --git a/libxslt/python/tests/pyxsltproc.py b/libxslt/python/tests/pyxsltproc.py
deleted file mode 100755
index 238fa5b..0000000
--- a/libxslt/python/tests/pyxsltproc.py
+++ /dev/null
@@ -1,298 +0,0 @@
-#!/usr/bin/python -u
-#
-# The exercise of rewriting xsltproc on top of the python
-# bindings, not complete yet and shows up the things missing
-# from the existing python interfaces
-#
-import sys
-import time
-import os
-import string
-import libxml2
-# Memory debug specific
-libxml2.debugMemory(1)
-import libxslt
-
-debug = 0
-repeat = 0
-timing = 0
-novalid = 0
-noout = 0
-docbook = 0
-html = 0
-xinclude = 0
-profile = 0
-params = {}
-output = None
-errorno = 0
-
-#
-# timing
-#
-begin = 0
-endtime = 0
-def startTimer():
- global begin
-
- begin = time.time()
-
-def endTimer(msg):
- global begin
- global endtime
-
- endtime = time.time()
- print "%s took %d ms" % (msg, (endtime - begin) * 1000)
-
-def xsltProcess(doc, cur, filename):
- global timing
- global xinclude
- global params
- global html
-
- if xinclude:
- if timing:
- startTimer()
- doc.XIncludeProcess()
- if timing:
- endTimer("XInclude processing %s" % (filename))
-
- if timing:
- startTimer()
- if output == None:
- if repeat != 0:
- for j in range(1, repeat):
- res = cur.applyStylesheet(doc, params)
- res.freeDoc()
- doc.freeDoc()
- if html == 1:
- doc = libxml2.htmlParseFile(filename, None)
- else:
- doc = libxml2.parseFile(filename, None)
-# ctxt = libxslt.newTransformContext(doc)
-# if ctxt == None:
-# return
- if profile:
- print "TODO: Profiling not yet supported"
- else:
- res = cur.applyStylesheet(doc, params)
- if timing:
- if repeat != 0:
- endTimer("Applying stylesheet %d times" % (repeat))
- else:
- endTimer("Applying stylesheet")
- doc.freeDoc()
- if res == None:
- print "no result for %s" % (filename)
- return
- if noout != 0:
- res.freeDoc()
- return
- if debug == 1:
- res.debugDumpDocument(None)
- else:
- if timing:
- startTimer()
- cur.saveResultToFilename("-", res, 0)
- if timing:
- endTimer("Saving result")
- res.freeDoc()
- else:
- print "TODO: xsltRunStylesheet not yet mapped"
-
-def usage(name = 'pyxsltproc'):
- print "Usage: %s [options] stylesheet file [file ...]" % (name)
- print "a reimplementation of xsltproc(1) on top of libxslt-python"
- print " Options:"
- print "\t--version or -V: show the version of libxml and libxslt used"
- print "\t--verbose or -v: show logs of what's happening"
- print "\t--output file or -o file: save to a given file"
- print "\t--timing: display the time used"
- print "\t--repeat: run the transformation 20 times"
- print "\t--debug: dump the tree of the result instead"
- print "\t--novalid skip the Dtd loading phase"
- print "\t--noout: do not dump the result"
- print "\t--maxdepth val : increase the maximum depth"
- print "\t--html: the input document is(are) an HTML file(s)"
- print "\t--param name value : pass a (parameter,value) pair"
- print "\t value is an XPath expression."
- print "\t string values must be quoted like \"'string'\""
- print "\t or use stringparam to avoid it"
- print "\t--stringparam name value : pass a (parameter,string value) pair"
- print "\t--nonet refuse to fetch DTDs or entities over network"
- print "\t--catalogs : use SGML catalogs from $SGML_CATALOG_FILES"
- print "\t otherwise XML Catalogs starting from "
- print "\t file:///etc/xml/catalog are activated by default"
- print "\t--xinclude : do XInclude processing on document input"
- print "\t--profile or --norman : dump profiling informations "
- print "\nProject libxslt home page: http://xmlsoft.org/XSLT/"
- print "To report bugs and get help: http://xmlsoft.org/XSLT/bugs.html"
-
-def main(args = None):
- global debug
- global repeat
- global timing
- global novalid
- global noout
- global docbook
- global html
- global xinclude
- global profile
- global params
- global output
- global errorno
-
- done = 0
- cur = None
-
- if not args:
- args = sys.argv[1:]
- if len(args) <= 0:
- usage(sys.argv[0])
-
-
- i = 0
- while i < len(args):
- if args[i] == "-":
- break
- if args[i][0] != '-':
- i = i + 1
- continue
- if args[i] == "-timing" or args[i] == "--timing":
- timing = 1
- elif args[i] == "-debug" or args[i] == "--debug":
- debug = 1
- elif args[i] == "-verbose" or args[i] == "--verbose" or \
- args[i] == "-v":
- print "TODO: xsltSetGenericDebugFunc() mapping missing"
- elif args[i] == "-version" or args[i] == "--version" or \
- args[i] == "-V":
- print "TODO: version informations mapping missing"
- elif args[i] == "-verbose" or args[i] == "--verbose" or \
- args[i] == "-v":
- if repeat == 0:
- repeat = 20
- else:
- repeat = 100
- elif args[i] == "-novalid" or args[i] == "--novalid":
- print "TODO: xmlLoadExtDtdDefaultValue mapping missing"
- novalid = 1
- elif args[i] == "-noout" or args[i] == "--noout":
- noout = 1
- elif args[i] == "-html" or args[i] == "--html":
- html = 1
- elif args[i] == "-nonet" or args[i] == "--nonet":
- print "TODO: xmlSetExternalEntityLoader mapping missing"
- nonet = 1
- elif args[i] == "-catalogs" or args[i] == "--catalogs":
- try:
- catalogs = os.environ['SGML_CATALOG_FILES']
- except:
- catalogs = None
- if catalogs != none:
- libxml2.xmlLoadCatalogs(catalogs)
- else:
- print "Variable $SGML_CATALOG_FILES not set"
- elif args[i] == "-xinclude" or args[i] == "--xinclude":
- xinclude = 1
- libxslt.setXIncludeDefault(1)
- elif args[i] == "-param" or args[i] == "--param":
- i = i + 1
- params[args[i]] = args[i + 1]
- i = i + 1
- elif args[i] == "-stringparam" or args[i] == "--stringparam":
- i = i + 1
- params[args[i]] = "'%s'" % (args[i + 1])
- i = i + 1
- elif args[i] == "-maxdepth" or args[i] == "--maxdepth":
- print "TODO: xsltMaxDepth mapping missing"
- else:
- print "Unknown option %s" % (args[i])
- usage()
- return(3)
-
-
-
-
- i = i + 1
-
- libxml2.lineNumbersDefault(1)
- libxml2.substituteEntitiesDefault(1)
- # TODO: xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS
- # if novalid:
- # TODO: xmlLoadExtDtdDefaultValue = 0
-
- # TODO libxslt.exsltRegisterAll();
- libxslt.registerTestModule()
-
- i = 0
- while i < len(args) and done == 0:
- if args[i] == "-maxdepth" or args[i] == "--maxdepth":
- i = i + 2
- continue
- if args[i] == "-o" or args[i] == "-output" or args[i] == "--output":
- i = i + 2
- continue
- if args[i] == "-param" or args[i] == "--param":
- i = i + 3
- continue
- if args[i] == "-stringparam" or args[i] == "--stringparam":
- i = i + 3
- continue
- if args[i] != "-" and args[i][0] == '-':
- i = i + 1
- continue
- if timing:
- startTimer()
- style = libxml2.parseFile(args[i])
- if timing:
- endTimer("Parsing stylesheet %s" % (args[i]))
- if style == None:
- print "cannot parse %s" % (args[i])
- cur = None
- errorno = 4
- done = 1
- else:
- cur = libxslt.loadStylesheetPI(style)
- if cur != None:
- xsltProcess(style, cur, args[i])
- cur = None
- else:
- cur = libxslt.parseStylesheetDoc(style)
- if cur == None:
- style.freeDoc()
- errorno = 5
- done = 1
- i = i + 1
- break
-
- while i < len(args) and done == 0 and cur != None:
- if timing:
- startTimer()
- if html:
- doc = libxml2.htmlParseFile(args[i], None)
- else:
- doc = libxml2.parseFile(args[i])
- if doc == None:
- print "unable to parse %s" % (args[i])
- errorno = 6
- i = i + 1
- continue
- if timing:
- endTimer("Parsing document %s" % (args[i]))
- xsltProcess(doc, cur, args[i])
- i = i + 1
-
- if cur != None:
- cur.freeStylesheet()
- params = None
-
-if __name__ == "__main__":
- main()
-
-# Memory debug specific
-libxslt.cleanup()
-if libxml2.debugMemory(1) != 0:
- print "Memory leak %d bytes" % (libxml2.debugMemory(1))
- libxml2.dumpMemory()
-
-sys.exit(errorno)