source: TI07-MOLES/trunk/PythonCode/wsgi/DC.py @ 1934

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI07-MOLES/trunk/PythonCode/wsgi/DC.py@1934
Revision 1934, 2.4 KB checked in by lawrence, 13 years ago (diff)

more minor modifications to wsgi browse

Line 
1from xmlHandler import xmlHandler,stripNamespace
2from htmlUtilities import span
3
4class DC(dict):
5    ''' This class represents Dublin Core in Python '''
6   
7    def __init__(self,xml):
8        ''' Initialise a Dublin Core record from xml '''
9       
10        self.metadataType='DC'
11        self.xml=xml
12        self.XH=xmlHandler(xml,string=1)
13        self.tree=self.XH.tree
14        self.order=[]
15
16        for tag in self.tree.getchildren():
17            name=stripNamespace(tag.tag)
18            u=(name,tag.text)
19            if u[1] is None: u=(name,'')
20            if name in self.keys():
21                if isinstance(self[name],list):
22                    self[name].append(u[1])
23                else:
24                    self[name]=[u[1]]
25            else:
26                self.order.append(name)
27                self.update((u,))
28           
29    def toHTML(self):
30        m='<div class="metadata">'
31        h="%s<p>"%m
32        if 'title' in self.keys():
33            h+=span(self['title'],'title')+'<br/>'
34        if 'creator' in self.keys():
35            h+=span(self['creator'],'title')+'<br/>'
36        h+=m
37        if 'description' in self.keys():
38            h+='<div class="abstract">'+span('description: ','keywords')+span(self['description'],'metaentry')+'</div>'
39        for key in self.order:
40            if key not in ['title','creator','description']:
41                k=span(key,'keywords')+': '
42                if isinstance(self[key],list):
43                    k+=self[key][0]
44                    for i in self[key][1:]: k+=', %s'%i
45                else:
46                    print key
47                    k+=self[key]
48                h+=span(k,'metaentry')+'<br/>'
49        h+='</div></div>'
50        return h
51
52    def shortHTML(self,link):
53        pass
54
55import unittest
56class TestCase(unittest.TestCase):
57   
58    def testDC(self):
59       
60        x='''<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/"
61         xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
62          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
63           xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
64            http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
65            <dc:title> A test title</dc:title>
66            <dc:subject>A</dc:subject><dc:subject>B</dc:subject></oai_dc:dc>'''
67        y=DC(x)
68        z=y['subject']
69        print z
70        a=y.toHTML()
71       
72if __name__=="__main__":
73    unittest.main()
Note: See TracBrowser for help on using the repository browser.