+++ /dev/null
-#!/usr/bin/python -u\r
-# $Id: xslt.py 8353 2009-03-17 16:57:50Z mzjn $\r
-\r
-import sys\r
-import libxml2\r
-import libxslt\r
-from docbook import adjustColumnWidths\r
-\r
-# Check the arguments\r
-usage = "Usage: %s xmlfile.xml xslfile.xsl [outputfile] [param1=val [param2=val]...]" % sys.argv[0]\r
-\r
-xmlfile = None\r
-xslfile = None\r
-outfile = "-"\r
-params = {}\r
-\r
-try:\r
- xmlfile = sys.argv[1]\r
- xslfile = sys.argv[2]\r
-except IndexError:\r
- print usage\r
- sys.exit(1)\r
-\r
-def quote(astring):\r
- if astring.find("'") < 0:\r
- return "'" + astring + "'"\r
- else:\r
- return '"' + astring + '"'\r
-\r
-try:\r
- outfile = sys.argv[3]\r
- if outfile.find("=") > 0:\r
- name, value = outfile.split("=", 2)\r
- params[name] = quote(value)\r
- outfile = None\r
-\r
- count = 4\r
- while (sys.argv[count]):\r
- try:\r
- name, value = sys.argv[count].split("=", 2)\r
- if params.has_key(name):\r
- print "Warning: '%s' re-specified; replacing value" % name\r
- params[name] = quote(value)\r
- except ValueError:\r
- print "Invalid parameter specification: '" + sys.argv[count] + "'"\r
- print usage\r
- sys.exit(1)\r
- count = count+1\r
-except IndexError:\r
- pass\r
-\r
-# ======================================================================\r
-# Memory debug specific\r
-# libxml2.debugMemory(1)\r
-\r
-# Setup environment\r
-libxml2.lineNumbersDefault(1)\r
-libxml2.substituteEntitiesDefault(1)\r
-libxslt.registerExtModuleFunction("adjustColumnWidths",\r
- "http://nwalsh.com/xslt/ext/xsltproc/python/Table",\r
- adjustColumnWidths)\r
-\r
-# Initialize and run\r
-styledoc = libxml2.parseFile(xslfile)\r
-style = libxslt.parseStylesheetDoc(styledoc)\r
-doc = libxml2.parseFile(xmlfile)\r
-result = style.applyStylesheet(doc, params)\r
-\r
-# Save the result\r
-if outfile:\r
- style.saveResultToFilename(outfile, result, 0)\r
-else:\r
- print result\r
-\r
-# Free things up\r
-style.freeStylesheet()\r
-doc.freeDoc()\r
-result.freeDoc()\r
-\r
-# Memory debug specific\r
-#libxslt.cleanup()\r
-#if libxml2.debugMemory(1) != 0:\r
-# print "Memory leak %d bytes" % (libxml2.debugMemory(1))\r
-# libxml2.dumpMemory()\r