• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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