Ignore:
Timestamp:
20/07/11 12:05:16 (8 years ago)
Author:
sdonegan
Message:

Updated keyword handling to allow proper detection and use of vocab list entered keywords. Note that only BODC and CEDA are currently using this so still need to keep old methods for other DCs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch/ExtractISO.py

    r7901 r7953  
    238238                self.keywordsList = self.listify(self.keywords) 
    239239                 
    240                  
     240                #Does the record have a specific NERC VocabList identifier? 
     241                 
     242                #NOTE: this value not currently used in all NERC DC records in this method.. 
     243                 
     244                scopeValsPresent = self.listify(self.getElementVal(self.isoModel.scopeCode(self.isoModel.ingestKeywordIdentifier()))) 
     245                 
     246                if len(scopeValsPresent) == 0: 
     247                        logging.error("No Scope value present!") 
     248                        self.docInScope = False 
     249                 
     250                else: 
     251                        self.docInScope = True 
     252                         
     253                        logging.info("Scope value detected (%s)" %self.isoModel.ingestKeywordIdentifier() ) 
     254                         
     255                        #as a fudge until all providers agree on how they are putting in their scope vals... 
     256                        #pull the actual list ID and stick it in the keyword list so current method of adding scope works.. 
     257                        self.keywordsList.append(self.isoModel.ingestKeywordIdentifier().split('/')[-1]) 
     258                         
    241259                if self.keywords == 'None': 
    242260                        logging.warn("No parameter info for record!") 
     
    10791097        otherwise an empty list is returned 
    10801098        ''' 
    1081         def returnDependantElementVal(self,baseXpath,elXpath,depXpath,depValReqd,showValue=False): 
     1099        def returnDependantElementVal(self,baseXpath,elXpath,depXpathOrig,depValReqd,showValue=False): 
    10821100                         
    10831101                #Note using single path namespath appender rather than list version.. (keeps it simpler)         
    10841102                baseXpath = self.appendNameSpace(baseXpath) 
    1085                  
    10861103                 
    10871104                resDependantVal = [] 
     
    10991116                        thisElXpth = self.appendNameSpace(elXpath)                                               
    11001117                        thisEl = self.doFindall(el,thisElXpth) 
     1118                         
     1119                        attrFlag = False 
    11011120                         
    11021121                        #if there's a value for the actual xpath we want, go and get the dependant value 
     
    11091128                                         
    11101129                                        elVal = elValIt.text 
    1111                                  
     1130                                                                                 
     1131                                        if '@' in depXpathOrig: 
     1132                                                 
     1133                                                #if there is an attribute in there, strip if off (should ALWAYS be last value anyway..) 
     1134                                                thisAttribute = depXpathOrig.split('@')[-1] 
     1135                                                 
     1136                                                #does the attribute have a namespace (i.e. xlink;href) 
     1137                                                if ":" in thisAttribute: 
     1138                                                        thisAttribute = self.appendNameSpace(thisAttribute) 
     1139                                                 
     1140                                                if depXpathOrig.split('@')[0][-1] == '/': 
     1141                                                        depXpath = depXpathOrig.split('@')[0][:-1] 
     1142                                                else: 
     1143                                                        depXpath = depXpathOrig.split('@')[0] 
     1144                                                         
     1145                                                attrFlag = True                                          
     1146                                                 
     1147                                        else: 
     1148                                                depXpath = depXpathOrig 
     1149                                                 
    11121150                                        thisEldepXpth = self.appendNameSpace(depXpath)                                   
    1113                                         thisDepEl = self.doFindall(el,thisEldepXpth)                                                             
    1114                                  
     1151                                        thisDepEl = self.doFindall(el,thisEldepXpth)                                                                                                     
     1152                                         
    11151153                                        if thisDepEl != 'None': 
    11161154                                                                                                                         
    1117                                                 depVal = thisDepEl[0].text # still need a single dependant value 
    1118                                                                          
    1119                                                 if depVal == depValReqd: 
    1120                                                  
    1121                                                         if showValue is True: 
    1122                                                                 logging.info("") 
    1123                                                                 logging.info("          Element Value: " + elVal) 
    1124                                                                 logging.info("") 
     1155                                                if attrFlag: 
     1156                                                         
     1157                                                        if thisDepEl[0].attrib.get(thisAttribute) == depValReqd: 
     1158                                                                resDependantVal.append(elVal) 
     1159                                                                 
     1160                                                         
     1161                                                else: 
     1162                                                        #not an attribute but an element value                                   
     1163                                                        depVal = thisDepEl[0].text # still need a single dependant value 
     1164                                                                 
     1165                                                        if depVal == depValReqd: 
     1166                                                 
     1167                                                                if showValue is True: 
     1168                                                                        logging.info("") 
     1169                                                                        logging.info("          Element Value: " + elVal) 
     1170                                                                        logging.info("") 
    11251171                                                                                                                 
    1126                                                         resDependantVal.append(elVal) 
     1172                                                                resDependantVal.append(elVal) 
    11271173                                                 
    11281174                                                                                                                                                 
     
    12381284                                'gss':'http://www.isotc211.org/2005/gss', 
    12391285                                'srv':'http://www.isotc211.org/2005/srv', 
    1240                                 'geonet':'http://www.fao.org/geonetwork' 
     1286                                'geonet':'http://www.fao.org/geonetwork', 
     1287                                'xlink':'http://www.w3.org/1999/xlink' 
    12411288                                } 
    12421289                 
Note: See TracChangeset for help on using the changeset viewer.