Changeset 322


Ignore:
Timestamp:
03/05/15 09:22:54 (5 years ago)
Author:
mjuckes
Message:

added mip inputs

Location:
CMIP6dreq/trunk
Files:
270 added
5 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreq/trunk/docs/vocabDefn.txt

    r319 r322  
    2424vocab forcings; Forcing; cmip.drv.004; def 
    2525vocab table; Data specification table; cmip.drv.004; def 
    26  - description; comment; freqency 
     26 - description; comment; frequency 
    2727vocab cref; Coordinate Reference; cmip.drv.004; def 
    2828 - label 
     
    3636vocab complianceCode; Data specification compliance codes; cmip.drv.004; def 
    3737vocab glossary; Glossary; cmip.drv.004; def 
    38 vocab modelCompType; Model Component Types/Categories; cmip.drv.004; def 
    39 vocab modelType; [redundant with *Native Grid*]; cmip.drv.004; def 
     38 - fullName; description; url 
     39vocab modelCompType; Model Component Types/Categories [redundant with *Native Grid*]; cmip.drv.004; def 
     40vocab modelType; Class of model; cmip.drv.004; def 
     41vocab index; Index of vocabularies; xxx; def 
     42 - table; title; description 
  • CMIP6dreq/trunk/docs/vocabFrameworkSchema.xsd

    r319 r322  
    1919<xs:complexType name="ct__vocab"> 
    2020  <xs:sequence> 
    21      <xs:element name="itemAttribute" type="ct__itemAttribute" maxOccurs="50"/> 
     21     <xs:element name="rowAttribute" type="ct__itemAttribute" maxOccurs="50"/> 
    2222  </xs:sequence> 
    2323  <xs:attribute name="label" type="xs:string" use="required"/> 
     
    3131  <xs:complexType> 
    3232    <xs:sequence> 
    33       <xs:element name="vocab" type="ct__vocab" minOccurs="1" maxOccurs="200"/> 
     33      <xs:element name="table" type="ct__vocab" minOccurs="1" maxOccurs="200"/> 
    3434    </xs:sequence> 
    3535  </xs:complexType> 
  • CMIP6dreq/trunk/docs/xlst_xdsSchemaGen.xml

    r319 r322  
    5252    <xs:pattern value="([a-zA-Z0-9])+"/></xs:restriction> 
    5353  </xs:simpleType><xsl:text>&#xa;</xsl:text> 
     54  <xs:complexType name="ct__info" mixed="true"> 
     55    <xs:attribute name="srcType" type="xs:string"/> 
     56    <xs:attribute name="srcRef" type="xs:string"/> 
     57  </xs:complexType> 
    5458 
    5559<!-- create simple and complex type definitions --> 
     
    8387  </xd:detail> 
    8488</xd:doc> 
    85 <xsl:template match="vocab" mode="main"> 
     89<xsl:template match="table" mode="main"> 
    8690   <xsl:comment>[applying elem main]</xsl:comment><xsl:text>&#xa;</xsl:text> 
    8791   <xs:element> 
     
    98102  </xd:detail> 
    99103</xd:doc> 
    100 <xsl:template match="vocab" mode="header"> 
     104<xsl:template match="table" mode="header"> 
    101105     <xsl:comment>Auto-generated vocabulary complexType declarations/></xsl:comment><xsl:text>&#xa;</xsl:text> 
    102106     <xs:annotation> 
     
    109113        <xsl:attribute name="name">ct__<xsl:value-of select="@label"/></xsl:attribute><xsl:text>&#xa;</xsl:text> 
    110114        <xs:sequence> 
     115           <!-- removed in favour of placing information in an optional index section --> 
     116           <!-- <xs:element name="info" type="ct__info"/> --> 
    111117           <xs:element name="item" maxOccurs="3000"> 
    112118           <xsl:attribute name="type">ct__<xsl:value-of select="@label"/>_vocabItem</xsl:attribute> 
     
    147153 
    148154<xd:doc> 
    149   <xd:short>itemAttribute: specifications of list item attributes</xd:short> 
     155  <xd:short>rowAttribute: specifications of list item attributes</xd:short> 
    150156  <xd:detail> 
    151   The itemAttribute template constructs the specifications of attributes in list items. 
     157  The rowAttribute template constructs the specifications of attributes in list items. 
    152158  </xd:detail> 
    153159</xd:doc> 
    154 <xsl:template match="itemAttribute" mode="attr"> 
     160<xsl:template match="rowAttribute" mode="attr"> 
    155161   <xsl:if test="@label!='label' and @label != 'title'"> 
    156162     <xs:attribute name="id" type="xs:string"> 
     
    165171</xsl:template> 
    166172 
    167 <xsl:template match="itemAttribute" mode="annotate-attr"> 
     173<xsl:template match="rowAttribute" mode="annotate-attr"> 
    168174   <xsl:value-of select="@label"/>; 
    169175   <xsl:choose> 
  • CMIP6dreq/trunk/src/framework/dreq.py

    r320 r322  
    1  
    2 import xml, string 
     1import xml, string, collections 
    32import xml.dom 
    43import xml.dom.minidom 
     
    98    self.vdef = 'out/vocabDefn.xml'  
    109    self.vsamp = 'out/vocabSample.xml' 
     10    self.nts = collections.namedtuple( 'sectdef', ['tag','label','title','id','itemLabelMode'] ) 
     11    self.nti = collections.namedtuple( 'itemdef', ['tag','label','title','type'] ) 
     12    self.ntt = collections.namedtuple( 'sect', ['header','attributes'] ) 
    1113 
    1214    doc = xml.dom.minidom.parse( self.vdef  ) 
     15    self.contentDoc = xml.dom.minidom.parse( self.vsamp ) 
    1316##<vocab label="institute" title="Institute" id="cmip.drv.001" itemLabelMode="def"> 
    1417##  <itemAttribute label="label"/> 
    15     vl = doc.getElementsByTagName( 'vocab' ) 
     18    vl = doc.getElementsByTagName( 'table' ) 
    1619    print len(vl) 
     20    self.slist = [] 
     21    self.tables = {} 
    1722    for v in vl: 
     23      t = self.parsevcfg(v) 
     24      self.tables[t[0].label] = t 
     25      self.slist.append( t ) 
     26 
     27    for k in self.tables.keys(): 
     28      vl = self.contentDoc.getElementsByTagName( k ) 
     29      if len(vl) == 1: 
     30        v = vl[0] 
     31        t = v.getAttribute( 'title' ) 
     32        i = v.getAttribute( 'id' ) 
     33        il = v.getElementsByTagName( 'item' ) 
     34        print k, t, i, len(il) 
     35         
     36        for i in il: 
     37          s = '' 
     38          for a in self.tables[k].attributes.keys(): 
     39            if i.hasAttribute(a): 
     40              x = i.getAttribute(a) 
     41            else: 
     42              x = None 
     43            s+= '%s=%s; ' % (a,x) 
     44          print ' ---- ', s 
     45 
     46  def parsevcfg(self,v): 
    1847      l = v.getAttribute( 'label' ) 
    1948      t = v.getAttribute( 'title' ) 
    2049      i = v.getAttribute( 'id' ) 
    2150      ilm = v.getAttribute( 'itemLabelMode' ) 
    22       print v.nodeName, l,t,i,ilm 
     51      il = v.getElementsByTagName( 'rowAttribute' ) 
     52      vtt = self.nts( v.nodeName, l,t,i,ilm ) 
     53      ll = [] 
     54      idict = {} 
     55      for i in il: 
     56        tt = self.parseicfg(i) 
     57        idict[tt.label] = tt 
     58        ll.append(tt) 
     59      return self.ntt( vtt, idict ) 
    2360 
     61  def parseicfg(self,i): 
     62      l = i.getAttribute( 'label' ) 
     63      if i.hasAttribute( 'title' ): 
     64        t = i.getAttribute( 'title' ) 
     65        self.lastTitle = t 
     66      else: 
     67        t = None 
     68      if i.hasAttribute( 'type' ): 
     69        ty = i.getAttribute( 'type' ) 
     70      else: 
     71        ty = "xs:string" 
     72      return self.nti( i.nodeName, l,t,ty ) 
    2473 
    2574c = config() 
  • CMIP6dreq/trunk/src/framework/ptxt.py

    r320 r322  
    1616nt__itematt = collections.namedtuple( 'itematt', ['name','type','title'] ) 
    1717 
    18 vocab_elTmpl = '''<vocab label="%(label)s" title="%(title)s" id="%(id)s" itemLabelMode="%(ilm)s"> 
     18vocab_elTmpl = '''<table label="%(label)s" title="%(title)s" id="%(id)s" itemLabelMode="%(ilm)s"> 
    1919%(itemAttrList)s 
    20 </vocab> 
     20</table> 
    2121''' 
    22 ial_elTmpl = '  <itemAttribute label="%(label)s"%(wrappedType)s%(wrappedTitle)s/>' 
     22ial_elTmpl = '  <rowAttribute label="%(label)s"%(wrappedType)s%(wrappedTitle)s/>' 
    2323 
    2424expl_Tmpl = '''<%(label)s class="vocab" title="%(title)s" id="%(id)s"> 
    25 <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> 
     25<!-- <info srcType="dummy" srcRef="ptxt.py">Dummy entries</info> --> 
    2626%(exampleItem)s 
    2727</%(label)s> 
     
    4040     self.ilt = bits[3] 
    4141     self.kk = kk 
    42      print '[%s] %s {%s:%s}' % (self.label, self.title, self.id, self.ilt) 
     42     self.msg( '[%s] %s {%s:%s}' % (self.label, self.title, self.id, self.ilt) ) 
    4343     self.itematts = [  nt__itematt( 'label','xs:string',None ), 
    4444                        nt__itematt( 'title','xs:string',None ) ] 
     
    102102     if oo != None: 
    103103         oo.write( self.vocab ) 
    104      print vocab 
     104     self.msg( vocab ) 
     105 
     106  def msg(self,txt): 
     107     swallow=True 
     108     if swallow: 
     109       return 
     110     print text 
    105111 
    106112  def attr(self,line): 
     
    110116       x = self.pb(b) 
    111117       self.itematts.append( nt__itematt( bn, x[0], x[1] ) ) 
    112        print bn, x[0], x[1]  
     118       self.msg( '%s, %s, %s' % (bn, x[0], x[1]) ) 
    113119 
    114120  def pb(self, b): 
     
    125131    return [itemType, itemTitle]  
    126132 
    127 ii = open('../../docs/vocabDefn.txt').readlines() 
    128 kk= 0 
    129 this = None 
    130 fns = {'defn':'vocabDefn', 'samp':'vocabSample' } 
    131 fn = fns[mode] 
    132 oo = open( 'out/%s.xml' % fn, 'w' ) 
    133 if mode == 'samp': 
    134   mainEl = "main" 
    135 else: 
    136   mainEl = "defDoc" 
     133class main(object): 
    137134 
    138 oo.write( '''<?xml version="1.0" ?> 
     135  def __init__(self): 
     136    ii = open('../../docs/vocabDefn.txt').readlines() 
     137    kk= 0 
     138    this = None 
     139    fns = {'defn':'vocabDefn', 'samp':'vocabSample' } 
     140    fn = fns[mode] 
     141    oo = open( 'out/%s.xml' % fn, 'w' ) 
     142    if mode == 'samp': 
     143      mainEl = "main" 
     144    else: 
     145      mainEl = "defDoc" 
     146 
     147    oo.write( '''<?xml version="1.0" ?> 
    139148<%s>\n''' % mainEl ) 
    140149 
    141 for l in ii: 
    142   if l[:5] == 'vocab': 
    143     if this != None: 
    144       this.tmpl(oo=oo,mode=mode) 
    145     kk+=1 
    146     this = vocab(l,kk=kk) 
    147   else: 
    148     this.attr( l ) 
     150    for l in ii: 
     151      if l[:5] == 'vocab': 
     152        if this != None: 
     153          this.tmpl(oo=oo,mode=mode) 
     154        kk+=1 
     155        this = vocab(l,kk=kk) 
     156      else: 
     157        this.attr( l ) 
    149158 
    150 this.tmpl(oo=oo,mode=mode) 
    151 oo.write( '</%s>\n' % mainEl ) 
    152 oo.close() 
     159    this.tmpl(oo=oo,mode=mode) 
     160    oo.write( '</%s>\n' % mainEl ) 
     161    oo.close() 
    153162     
     163 
     164m = main() 
Note: See TracChangeset for help on using the changeset viewer.