File: xbel2html.py

package info (click to toggle)
qm 1.1.3-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 8,628 kB
  • ctags: 10,249
  • sloc: python: 41,482; ansic: 20,611; xml: 12,837; sh: 485; makefile: 226
file content (105 lines) | stat: -rw-r--r-- 2,134 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
"""
An XBEL to HTML converter useful for publishing XBEL bookmark lists on the
web.
"""

import doctree,sys

# --- Configuring

out=sys.stdout
inf=sys.argv[1]

if len(sys.argv)>2:
    stylesheet=sys.argv[2]
else:
    stylesheet=None

# --- Templates

top=\
"""
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML>
<HEAD>
  <TITLE>%s</TITLE>
  %s
</HEAD>

<BODY>
<H1>%s</H1>
"""

bottom=\
"""        
<HR>

<ADDRESS>
Converted by xbel2html.py, using xmlproc.
</ADDRESS>

</BODY>
</HTML>
"""

# --- Conversion code

# Writing document top

root=doctree.build_tree(inf)

title=doctree.get_pcdata(doctree.get_element(root,"title"))
if stylesheet!=None:
    stylesheet='  <LINK HREF="%s" REL=stylesheet TYPE="text/css">\n' % \
                stylesheet
else:
    stylesheet=""

out.write(top % (title,stylesheet,title))

desc=doctree.get_element(root,"desc")
if desc!=None:
    out.write("<P>\n%s\n</P>\n\n" % doctree.get_pcdata(desc))

# Writing folder tree

def output(folder,level):
    title=doctree.get_pcdata(doctree.get_element(folder,"title"))
    desc=doctree.get_element(folder,"desc")
    if desc!=None:
        desc=doctree.get_pcdata(desc)

    if level<3:
        out.write("\n<H%d>%s</H%d>\n" % (level+1,title,level+1))
        if desc!=None:
            out.write("\n<P>%s</P>\n" % desc)
    else:
        a=2/0

    bookmarks=doctree.get_elements(folder,"bookmark")
    if bookmarks!=[]:
        out.write("\n<UL>\n")
        for bookmark in bookmarks:
            url=bookmark[1]["href"]
            title=doctree.get_pcdata(doctree.get_element(bookmark,"title"))
            desc=doctree.get_element(bookmark,"desc")
            if desc!=None:
                desc=doctree.get_pcdata(desc)
            else:
                desc=""
            
            out.write("  <LI><A HREF=\"%s\">%s</A>. %s\n" % (url,title,desc))
                
        out.write("</UL>\n")

    for child in doctree.get_elements(folder,"folder"):
        output(child,level+1)    

folders=doctree.get_elements(root,"folder")
for folder in folders:
    output(folder,1)
    
# Writing document bottom

out.write(bottom)