]> git.evergreen-ils.org Git - working/Evergreen.git/blob - stylesheets/evergreen_docbook_files/docbook-xsl-1.75.2/extensions/xslt.py
Evergreen Version Fix to reflect the new EG releases 2.0.10 and 1.6.1.9
[working/Evergreen.git] / stylesheets / evergreen_docbook_files / docbook-xsl-1.75.2 / extensions / xslt.py
1 #!/usr/bin/python -u\r
2 # $Id: xslt.py 8353 2009-03-17 16:57:50Z mzjn $\r
3 \r
4 import sys\r
5 import libxml2\r
6 import libxslt\r
7 from docbook import adjustColumnWidths\r
8 \r
9 # Check the arguments\r
10 usage = "Usage: %s xmlfile.xml xslfile.xsl [outputfile] [param1=val [param2=val]...]" % sys.argv[0]\r
11 \r
12 xmlfile = None\r
13 xslfile = None\r
14 outfile = "-"\r
15 params  = {}\r
16 \r
17 try:\r
18     xmlfile = sys.argv[1]\r
19     xslfile = sys.argv[2]\r
20 except IndexError:\r
21     print usage\r
22     sys.exit(1)\r
23 \r
24 def quote(astring):\r
25     if astring.find("'") < 0:\r
26         return "'" + astring + "'"\r
27     else:\r
28         return '"' + astring + '"'\r
29 \r
30 try:\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
35         outfile = None\r
36 \r
37     count = 4\r
38     while (sys.argv[count]):\r
39         try:\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
44         except ValueError:\r
45             print "Invalid parameter specification: '" + sys.argv[count] + "'"\r
46             print usage\r
47             sys.exit(1)\r
48         count = count+1\r
49 except IndexError:\r
50     pass\r
51 \r
52 # ======================================================================\r
53 # Memory debug specific\r
54 # libxml2.debugMemory(1)\r
55 \r
56 # Setup environment\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
61                                   adjustColumnWidths)\r
62 \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
68 \r
69 # Save the result\r
70 if outfile:\r
71     style.saveResultToFilename(outfile, result, 0)\r
72 else:\r
73     print result\r
74 \r
75 # Free things up\r
76 style.freeStylesheet()\r
77 doc.freeDoc()\r
78 result.freeDoc()\r
79 \r
80 # Memory debug specific\r
81 #libxslt.cleanup()\r
82 #if libxml2.debugMemory(1) != 0:\r
83 #    print "Memory leak %d bytes" % (libxml2.debugMemory(1))\r
84 #    libxml2.dumpMemory()\r