Good afternoon all, I have just gotten my feet wet with the XML-INTO & XML-SAX functions. I don't consider myself on autopilot by any means, but my powers that be now want me to adapt the working XML-SAX sample I created and make a generic version out of it that would take parameters.  I created the working sample in free format.
For example, we will most usually have a store number, trans date, transaction type, sale amount, etc. and an XML file that will be coming to us to parse out. 
How would I have a file (I think) that will have mappings that if the element is called 'transdate' that my generic function could take that and know what to do with it.  I would prefer to stay in free format for this.
I am not sold that this is possible, being some of our files have different naming convensions for things like date, trantype, etc.
Here is a chunk of my working XML-SAX sample:
    when event = *XML_START_ELEMENT;                                    
                                                                        
           if %subst(chars : 1 : stringLen) = 'storeNumber';            
           eval wrkfield = 'storeNumber';                               
           endif;                                                       
                                                                        
           if %subst(chars : 1 : stringLen) = 'transDate';              
           eval wrkfield = 'transDate';                                 
           endif;                                                       
                                                                        
           if %subst(chars : 1 : stringLen) = 'localTransactionNumber'; 
           eval wrkfield = 'localTransactionNumber';                    
           endif;                                                       
                                                                        
       if %subst(chars : 1 : stringLen) = 'centralTransactionNumber';   
       eval wrkfield = 'centralTransactionNumber';                      
    endif;                                                     
                                                               
        if %subst(chars : 1 : stringLen) = 'Status';           
        eval wrkfield = 'Status';                              
        endif;                                                 
                                                               
        if %subst(chars : 1 : stringLen) = 'AssociateID';      
        eval wrkfield = 'AssociateID';                         
        endif;                                                 
                                                               
        if %subst(chars : 1 : stringLen) = 'refundPolicy';     
        eval wrkfield = 'refundPolicy';                        
        endif;                                                 
                                                               
        if %subst(chars : 1 : stringLen) = 'TotalCredit';      
        eval wrkfield = 'TotalCredit';                         
        endif;                                                 
                                                               
 when event = *XML_CHARS;                                      
                                                               
           if wrkfield = 'storeNumber';                        
           eval wrkstore = %subst(chars : 1 : stringLen);      
           clear wrkfield;                                     
           endif;                                              
           if wrkfield = 'transDate';                          
           eval wrktdate = %subst(chars : 1 : stringLen);      
           clear wrkfield;                                     
           endif;                                              
           if wrkfield = 'localTransactionNumber';             
           eval wrkltrans = %subst(chars : 1 : stringLen);     
           clear wrkfield;                                     
           endif;                                              
                                                               
. . . . .
   // see if at end of a document record                   
   // if so write collected data to files                  
                                                           
   when event = *XML_END_ELEMENT;                          
     if %subst(chars : 1 : stringLen) = 'DataArea';        
                                                           
  //    chain (wrkstore) locdim1;                          
  //    eval wrklkey = lockey;                             
  //    eval hstrno = wrklkey;                             
        eval hstrno = wrkstore;                            
                                                           
  //    chain ('Day' : wrktdate) datedim5;                 
  //    eval wrklkey = datekey;                            
        eval htrandate = wrktdate;                         
                                                           
        eval hLOCTRNNO = wrkltrans;                        
        eval hCNTTRNNO = wrkctrans;                        
    eval hCREDITAMT =wrkcredamt;              
                                              
    eval iCNTTRNNO   = wrkctrans;             
    eval iSTATUS     = wrkistat;              
    eval iSKU        = wrksku;                
    eval iRETQTY     = wrkqty;                
    eval iCREDAMT    = wrkcredamt;            
    eval iTAXAMT     = wrktaxamt;             
    eval iADJCRED    = wrkadjcred;            
    eval iTOTCRED    = wrktotcred;            
    eval iCNTITEMID  = wrkcid;                
    eval iORGITEMID  = wrkoid;                
                                              
    eval pCNTTRNNO  = wrkctrans;              
    eval pTRANDATE  = wrktdate;               
    eval pSTATUS    = wrkstatus;              
    eval pASSOCID   = wrkassoc;               
     eval pREFPOLICY = wrkrpolicy;            
     eval pTOTCRED  = wrkcredamt;             
     eval pCONVCRED  = wrkccred;              
     eval pCUSTID    = wrkcustid;             
     eval pCUSTFNAM  = wrkfname;              
     eval pCUSTLNAM  = wrklname;              
                                              
                                              
     write headfmt;                           
     write itemfmt;                           
     write paymfmt;    
                       
       clear wrkfields;     
                            
    endif;                  
                            
. . . . . . .
Any suggestions on how I would attack this would be greatly appreciated.
Thanks in advance,
Sharon
_________________________________________________________________
Color coding for safety: Windows Live Hotmail alerts you to suspicious email.
http://windowslive.com/Explore/Hotmail?ocid=TXT_TAGLM_WL_hotmail_acq_safety_112008
 
As an Amazon Associate we earn from qualifying purchases.