Commit | Line | Data |
---|---|---|
86530b38 AT |
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 = rc + node.data | |
26 | return 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) |