66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
|
import xml.dom.minidom
|
||
|
|
||
|
document = """\
|
||
|
<slideshow>
|
||
|
<title>Demo slideshow</title>
|
||
|
<slide><title>Slide title</title>
|
||
|
<point>This is a demo</point>
|
||
|
<point>Of a program for processing slides</point>
|
||
|
</slide>
|
||
|
|
||
|
<slide><title>Another demo slide</title>
|
||
|
<point>It is important</point>
|
||
|
<point>To have more than</point>
|
||
|
<point>one slide</point>
|
||
|
</slide>
|
||
|
</slideshow>
|
||
|
"""
|
||
|
|
||
|
dom = xml.dom.minidom.parseString(document)
|
||
|
|
||
|
space = " "
|
||
|
def getText(nodelist):
|
||
|
rc = ""
|
||
|
for node in nodelist:
|
||
|
if node.nodeType == node.TEXT_NODE:
|
||
|
rc = rc + node.data
|
||
|
return rc
|
||
|
|
||
|
def handleSlideshow(slideshow):
|
||
|
print "<html>"
|
||
|
handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
|
||
|
slides = slideshow.getElementsByTagName("slide")
|
||
|
handleToc(slides)
|
||
|
handleSlides(slides)
|
||
|
print "</html>"
|
||
|
|
||
|
def handleSlides(slides):
|
||
|
for slide in slides:
|
||
|
handleSlide(slide)
|
||
|
|
||
|
def handleSlide(slide):
|
||
|
handleSlideTitle(slide.getElementsByTagName("title")[0])
|
||
|
handlePoints(slide.getElementsByTagName("point"))
|
||
|
|
||
|
def handleSlideshowTitle(title):
|
||
|
print "<title>%s</title>" % getText(title.childNodes)
|
||
|
|
||
|
def handleSlideTitle(title):
|
||
|
print "<h2>%s</h2>" % getText(title.childNodes)
|
||
|
|
||
|
def handlePoints(points):
|
||
|
print "<ul>"
|
||
|
for point in points:
|
||
|
handlePoint(point)
|
||
|
print "</ul>"
|
||
|
|
||
|
def handlePoint(point):
|
||
|
print "<li>%s</li>" % getText(point.childNodes)
|
||
|
|
||
|
def handleToc(slides):
|
||
|
for slide in slides:
|
||
|
title = slide.getElementsByTagName("title")[0]
|
||
|
print "<p>%s</p>" % getText(title.childNodes)
|
||
|
|
||
|
handleSlideshow(dom)
|