1 import xml.dom.minidom
2
3 document = """\
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
19 dom = xml.dom.minidom.parseString(document)
20
21 def 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
28 def 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
36 def handleSlides(slides):
37 for slide in slides:
38 handleSlide(slide)
39
40 def handleSlide(slide):
41 handleSlideTitle(slide.getElementsByTagName("title")[0])
42 handlePoints(slide.getElementsByTagName("point"))
43
44 def handleSlideshowTitle(title):
45 print(f"<title>{getText(title.childNodes)}</title>")
46
47 def handleSlideTitle(title):
48 print(f"<h2>{getText(title.childNodes)}</h2>")
49
50 def handlePoints(points):
51 print("<ul>")
52 for point in points:
53 handlePoint(point)
54 print("</ul>")
55
56 def handlePoint(point):
57 print(f"<li>{getText(point.childNodes)}</li>")
58
59 def handleToc(slides):
60 for slide in slides:
61 title = slide.getElementsByTagName("title")[0]
62 print(f"<p>{getText(title.childNodes)}</p>")
63
64 handleSlideshow(dom)