• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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("<title>%s</title>" % getText(title.childNodes))
46 
47 def handleSlideTitle(title):
48     print("<h2>%s</h2>" % getText(title.childNodes))
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("<li>%s</li>" % getText(point.childNodes))
58 
59 def handleToc(slides):
60     for slide in slides:
61         title = slide.getElementsByTagName("title")[0]
62         print("<p>%s</p>" % getText(title.childNodes))
63 
64 handleSlideshow(dom)
65