#!/usr/bin/env python """ style.py Example of accessing and altering the style attribute of an element with simplistic methods to parse and format the style attribute. """ import sys, getopt import xml.dom.ext import xml.dom.ext.reader.Sax2 import xml.xpath def parseStyle(s): """Create a dictionary from the value of an inline style attribute""" return dict([i.split(":") for i in s.split(";")]) def formatStyle(a): """Format an inline style attribute from a dictionary""" return ";".join([":".join(i) for i in a.iteritems()]) #collect ids from the arguments opts = getopt.getopt(sys.argv[1:],'',['id=']) ids = [opt[1] for opt in opts[0] if opt[0]=='--id'] #create xml parser reader = xml.dom.ext.reader.Sax2.Reader() #open SVG tempfile stream = open(sys.argv[-1:][0],'r') #create DOM object doc = reader.fromStream(stream) stream.close() #Code to modify the DOM object goes here for id in ids: path = '//*[@id="%s"]' % id for node in xml.xpath.Evaluate(path,doc): style = node.attributes.getNamedItem('style') s = parseStyle(style.value) s['fill-opacity']='0.5' style.value = formatStyle(s) #serialize DOM object into XML on stdout xml.dom.ext.Print(doc)