2 # $Id: xslt.py 8353 2009-03-17 16:57:50Z mzjn $
\r
7 from docbook import adjustColumnWidths
\r
9 # Check the arguments
\r
10 usage = "Usage: %s xmlfile.xml xslfile.xsl [outputfile] [param1=val [param2=val]...]" % sys.argv[0]
\r
18 xmlfile = sys.argv[1]
\r
19 xslfile = sys.argv[2]
\r
25 if astring.find("'") < 0:
\r
26 return "'" + astring + "'"
\r
28 return '"' + astring + '"'
\r
31 outfile = sys.argv[3]
\r
32 if outfile.find("=") > 0:
\r
33 name, value = outfile.split("=", 2)
\r
34 params[name] = quote(value)
\r
38 while (sys.argv[count]):
\r
40 name, value = sys.argv[count].split("=", 2)
\r
41 if params.has_key(name):
\r
42 print "Warning: '%s' re-specified; replacing value" % name
\r
43 params[name] = quote(value)
\r
45 print "Invalid parameter specification: '" + sys.argv[count] + "'"
\r
52 # ======================================================================
\r
53 # Memory debug specific
\r
54 # libxml2.debugMemory(1)
\r
57 libxml2.lineNumbersDefault(1)
\r
58 libxml2.substituteEntitiesDefault(1)
\r
59 libxslt.registerExtModuleFunction("adjustColumnWidths",
\r
60 "http://nwalsh.com/xslt/ext/xsltproc/python/Table",
\r
63 # Initialize and run
\r
64 styledoc = libxml2.parseFile(xslfile)
\r
65 style = libxslt.parseStylesheetDoc(styledoc)
\r
66 doc = libxml2.parseFile(xmlfile)
\r
67 result = style.applyStylesheet(doc, params)
\r
71 style.saveResultToFilename(outfile, result, 0)
\r
76 style.freeStylesheet()
\r
80 # Memory debug specific
\r
82 #if libxml2.debugMemory(1) != 0:
\r
83 # print "Memory leak %d bytes" % (libxml2.debugMemory(1))
\r
84 # libxml2.dumpMemory()
\r