Changeset 884


Ignore:
Timestamp:
04/05/06 18:21:41 (13 years ago)
Author:
lawrence
Message:

More complete html-isation of numsim ...

Location:
TI01-discovery/trunk/schema/numsim
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery/trunk/schema/numsim/HADCM3 PUM 4.5 Beowulf.xml

    r876 r884  
    201201        </NS_Component> 
    202202    </NS_Model> 
    203     <NS_BoundaryCondition NS_type="Preindustrial"> 
     203    <NS_BoundaryCondition NS_Type="Preindustrial"> 
    204204        <NS_Description>Green house gases were held at preindustrial levels</NS_Description> 
    205205    </NS_BoundaryCondition> 
    206     <NS_BoundaryCondition NS_type="Present Day"> 
     206    <NS_BoundaryCondition NS_Type="Present Day"> 
    207207        <NS_Description>Apart from greenhouse gases, other boundary conditions (solar irradiance 
    208208            sulpher etc) are present day and not varying as is possible with this 
    209209        model.</NS_Description> 
    210210    </NS_BoundaryCondition> 
    211     <NS_InitialCondition NS_type="Unknown"> 
    212         <NS_Description>.The initial condition in this run used an initial condition from a previous 
     211    <NS_InitialCondition NS_Type="Unknown"> 
     212        <NS_Description>The initial condition in this run used an initial condition from a previous 
    213213            spin up run with a date of 2789. While this date is arbitrary it reflects a greater 
    214214            level of spin-up equilibration than previous long runs of HadCM3. The ocean was at some 
  • TI01-discovery/trunk/schema/numsim/NumSim.xsd

    r876 r884  
    196196            <xs:element name="NS_References" type="NS_ReferenceList" minOccurs="0" maxOccurs="1"/> 
    197197        </xs:sequence> 
    198         <xs:attribute name="NS_type" type="NS_InitialConditionTypes"/> 
    199         <xs:attribute name="NS_perturbed" type="xs:boolean"/> 
     198        <xs:attribute name="NS_Type" type="NS_InitialConditionTypes"/> 
     199        <xs:attribute name="NS_Perturbed" type="xs:boolean"/> 
    200200    </xs:complexType> 
    201201    <xs:complexType name="NS_BoundaryCondition"> 
     
    207207            <xs:element name="NS_BoundaryDataset" type="NS_RelatedTo" minOccurs="0" maxOccurs="1"/> 
    208208        </xs:sequence> 
    209         <xs:attribute name="NS_type" type="NS_BoundaryConditionNames"/> 
     209        <xs:attribute name="NS_Type" type="NS_BoundaryConditionNames"/> 
    210210    </xs:complexType> 
    211211    <xs:complexType name="NS_EnsembleDetails"> 
  • TI01-discovery/trunk/schema/numsim/NumSim2Html.py

    r876 r884  
    22# 
    33# Start with methods for handling the various types we've defined and what they should look like 
    4 # 
    54#  See useful ideas at http://effbot.org/zone/element-iterparse.htm#plist 
    65 
     
    1413            if tag.startswith("__"): raise AttributeError(tag) 
    1514            return self._element.findtext(tag) 
    16              
    17 def hyperlink(e): 
     15 
     16def _theader(title,span=1): 
     17        ''' Produces a table header for table block titles ''' 
     18        h=''' 
     19        <table cellspacing="0" cellpadding="3" border="0"> 
     20        <tbody> 
     21        <tr><td class="lineHead" colspan="%s"><span class="headingO">%s</span></td></tr>'''%(str(span),title) 
     22        return h 
     23 
     24def _wrapAttrib(e,item): 
     25        ''' Wraps an attribute request appropriately ''' 
     26        a=e.attrib.get(item) 
     27        h='' 
     28        if a is not None: h=a 
     29        return h 
     30         
     31def _hyperlink(e): 
    1832        ''' Takes an element object which has an NS_link attribute 
    1933        set and returns a hyperlink''' 
     
    2135        title='{http://www.w3.org/1999/xlink}title' 
    2236        try: 
    23                 s='<a href="%s">%s</a>'%(e.attrib.get(href),e.attrib.get(title)) 
     37                s='<a href="%s">%s</a>'%(_wrapAttrib(e,href),_wrapAttrib(e,title)) 
    2438        except: 
    2539                s='' 
    2640        return s 
     41         
     42def Condition(e): 
     43        ''' Common elements for initial and boundary condition elements ''' 
     44        if e is None: return '' 
     45        html='<div id="condition">' 
     46        ctype=_wrapAttrib(e,'NS_Type') 
     47        if ctype == 'Unknown': ctype='' 
     48        if ctype !='': ctype=': '+ctype 
     49        ptype=_wrapAttrib(e,'NS_Perturbed') #for initial condition 
     50        if ptype != '': ptype=' ('+ptype+')' 
     51        html+='<p class="emphatic">%s</p>'% (e.tag+ctype+ptype) 
     52        html+=Description(e.find('NS_Description')) 
     53        html+=References(e.find('NS_References')) 
     54        html+=Parameters(e.find('NS_ControlledParameters')) 
     55        html+=RelatedTo(e.find('NS_BoundaryDataset')) 
     56        html+='</div>' 
     57        return html 
     58         
     59def Parameters(e): 
     60        if e is None: return '' 
     61        html='<ul>' 
     62        for item in e.findall('NS_Value'): 
     63                html+='<li>%s</li>'%item.text 
     64        html+='</ul>' 
     65        return html 
    2766 
    28 def References(e): 
    29         ''' Takes a reference list and formats it (currently doesn't support ISO option)''' 
    30         if e is None: return '' 
    31         s='<DIV id="RefList"><p>References:<ul>' 
    32         for item in e.findall('NS_Reference'): 
    33                 s+='<li>%s</li>'%item.text 
    34         s+='</ul></p></DIV>' 
    35         return s 
    36          
    37  
    38 def RelatedModel(e): 
    39         '''Return html for a related model''' 
    40         if e is None: return '' 
    41         r=e.find('NS_Relationship') 
    42         s='<p><b>%s</b>: %s'%(e.tag[3:],hyperlink(e)) 
    43         if r is not None: 
    44                 s+='<br/>'+r.text 
    45         s+='</p>' 
    46         return s 
    47          
    4867def Description(element): 
    4968        '''Takes a description element and formats it appropriately''' 
     
    6180        return s 
    6281         
    63 def Model(e): 
     82def Model(e,title=None): 
    6483        ''' Parse a model element ''' 
    6584        html='' 
    6685        if e is None: return html 
    67         html='<DIV id="NumSimCom"><table border="1"><tbody>' 
    68         html+='<tr><td colspan="2">%s</td></tr>'%e.find('NS_Name').text 
    69         html+='<tr><td colspan="2">%s</td></tr>'%Description(e.find('NS_Description')) 
    70         html+='<tr><td colspan="2">%s</td></tr>'%References(e.find('NS_References')) 
    71         html+='<tr><td colspan="2">%s</td></tr>'%RelatedModel(e.find('NS_RelatedModel')) 
     86        if title is not None: 
     87                html+='<h3>%s</h3>'%title 
     88        html+='<DIV id="SubBlock">'+_theader(e.find('NS_Name').text) 
     89        html+='<tr><td>%s</td></tr>'%Description(e.find('NS_Description')) 
     90        html+='<tr><td>%s</td></tr>'%References(e.find('NS_References')) 
     91        html+='<tr><td>%s</td></tr>'%RelatedTo(e.find('NS_RelatedModel')) 
    7292        for item in e.findall('NS_Component'): 
    73                 html+='<tr><td>%s</td><td>%s</td></tr>'%( 
    74                             item.find('NS_Name').text,Model(item)) 
     93                html+='<tr><td>%s</td></tr>'%Model(item) 
    7594        html+='</tbody></table></DIV>' 
    7695        return html 
    7796         
     97def References(e): 
     98        ''' Takes a reference list and formats it (currently doesn't support ISO option)''' 
     99        if e is None: return '' 
     100        s='<DIV id="RefList"><p>References:<ul>' 
     101        for item in e.findall('NS_Reference'): 
     102                s+='<li>%s</li>'%item.text 
     103        s+='</ul></p></DIV>' 
     104        return s 
     105         
     106def RelatedTo(e): 
     107        '''Return html for a relationship''' 
     108        if e is None: return '' 
     109        r=e.find('NS_Relationship') 
     110        s='<p class="emphatic">%s: %s'%(e.tag[3:],_hyperlink(e)) 
     111        if r is not None: 
     112                s+='</p><p>'+r.text 
     113        s+='</p>' 
     114        return s 
     115         
    78116def Simulated(element): 
    79         html='<h2>Simulated Data</h2>' 
     117         
     118        html='<div id="Simulated"><h2>Simulated Data</h2>' 
    80119        html+=Description(element.find('NS_Description')) 
    81         html+='<h4>%s</h4>'%element.find('NS_Model/NS_Name').text 
    82         html+=Model(element.find('NS_Model')) 
     120         
     121        html+='<div id="SubBlock">'+_theader('Constraints') 
     122        for i in element.findall('NS_BoundaryCondition'):html+='<tr><td>%s</td></tr>'%Condition(i) 
     123        for i in element.findall('NS_InitialCondition'):html+='<tr><td>%s</td></tr>'%Condition(i) 
     124        html+='</tbody></table></div>' 
     125         
     126        html+=Model(element.find('NS_Model'),title='Model') 
     127         
     128        html+='</div>' #close simulated div 
     129 
    83130        return html 
    84131         
     
    86133        x=ET.parse('HADCM3 PUM 4.5 Beowulf.xml').getroot() 
    87134        html=Simulated(x) 
     135        print '''<?xml version="1.0" encoding="UTF-8"?> 
     136                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
     137                <html xmlsns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
     138                        <head> 
     139                                <META http-equiv="Content-Type" content="text/xhtml; charset=iso-8859-1"/> 
     140                                <title>Browse: %s</title> 
     141                                <LINK media="all, screen" href="numsim.css" type="text/css" rel="stylesheet"/> 
     142                        </head>'''%'NS Test' 
    88143        print html 
     144        print '</html>' 
Note: See TracChangeset for help on using the changeset viewer.