#!/usr/bin/env python # -*- coding: utf-8 -*- # Written by Børre Gaup import sys from lxml import etree def usage(): print 'This is a script that changes empty values in a corpus xsl file' print 'Call the program like this: change_xsl.py variable-value-pairs filename' print 'This requires an odd number of args to the script' print 'If a value contains a space, use "-chars around it.' print 'e.g. change_xsl_generic.py sub_name "Jens Kristensen" sub_email jens.kristensen@samediggi.no kraken.html.xsl' # check that there is exactly one argument given to the program if ( len(sys.argv) % 2 ) != 0: usage() sys.exit() # Initiate an empty dict change_variables = {} # read in the variable-value pairs, add them in the dict for index in range(1, len(sys.argv) - 1, 2): change_variables[sys.argv[index]] = sys.argv[index + 1] xsl_filename = sys.argv[len(sys.argv) - 1] if (xsl_filename.rfind('.xsl') > 0): tree = etree.parse(xsl_filename) root = tree.getroot() for element in root.iter(): for key, value in change_variables.iteritems(): if element.attrib.get('name') == key: element.set('select', "'" + value + "'") try: tree.write(xsl_filename, encoding="utf-8", xml_declaration = True) except IOError: print 'cannot open', xsl_filename sys.exit(255) else: print "This is not an xsl file: " + xsl_filename print usage()