1import xml.dom.minidom 2 3document = """\ 4<slideshow> 5<title>Demo slideshow</title> 6<slide><title>Slide title</title> 7<point>This is a demo</point> 8<point>Of a program for processing slides</point> 9</slide> 10 11<slide><title>Another demo slide</title> 12<point>It is important</point> 13<point>To have more than</point> 14<point>one slide</point> 15</slide> 16</slideshow> 17""" 18 19dom = xml.dom.minidom.parseString(document) 20 21def getText(nodelist): 22 rc = [] 23 for node in nodelist: 24 if node.nodeType == node.TEXT_NODE: 25 rc.append(node.data) 26 return ''.join(rc) 27 28def handleSlideshow(slideshow): 29 print "<html>" 30 handleSlideshowTitle(slideshow.getElementsByTagName("title")[0]) 31 slides = slideshow.getElementsByTagName("slide") 32 handleToc(slides) 33 handleSlides(slides) 34 print "</html>" 35 36def handleSlides(slides): 37 for slide in slides: 38 handleSlide(slide) 39 40def handleSlide(slide): 41 handleSlideTitle(slide.getElementsByTagName("title")[0]) 42 handlePoints(slide.getElementsByTagName("point")) 43 44def handleSlideshowTitle(title): 45 print "<title>%s</title>" % getText(title.childNodes) 46 47def handleSlideTitle(title): 48 print "<h2>%s</h2>" % getText(title.childNodes) 49 50def handlePoints(points): 51 print "<ul>" 52 for point in points: 53 handlePoint(point) 54 print "</ul>" 55 56def handlePoint(point): 57 print "<li>%s</li>" % getText(point.childNodes) 58 59def handleToc(slides): 60 for slide in slides: 61 title = slide.getElementsByTagName("title")[0] 62 print "<p>%s</p>" % getText(title.childNodes) 63 64handleSlideshow(dom) 65