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