Jfiles to repeat node

hi,
i have this json

 "TaxTotal": [
     {
       "TaxAmount": [
         {
           "_": 87.63,
           "currencyID": "MYR"
         }
       ],
       "TaxSubtotal": [
         {
           "TaxableAmount": [
             {
               "_": 87.63,
               "currencyID": "MYR"
             }
           ],
           "TaxAmount": [
             {
               "_": 87.63,
               "currencyID": "MYR"
             }
           ],
           "TaxCategory": [
             {
               "ID": [
                 {
                   "_": "01"
                 }
               ],
               "TaxScheme": [
                 {
                   "ID": [
                     {
                       "_": "OTH",
                       "schemeID": "UN/ECE 5153",
                       "schemeAgencyID": "6"
                     }
                   ]
                 }
               ]
             }
           ]
         }
       ]
     }
   ],

the TaxSubTotal can be repeated few times because of multiple tax.

my following jfiles codes create only one node. where is my mistake:

! TaxTotal Section
InvoiceTaxTotalQueueType           QUEUE,TYPE,NAME('TaxTotal')
TaxAmountQueueType                   &TaxAmountQueueType,NAME('TaxAmount | queue')
TaxSubtotalQueueType                 &TaxSubtotalQueueType,NAME('TaxSubtotal | queue')
                                   END

TaxAmountQueueType                 QUEUE,TYPE,NAME('TaxAmount')
_                                    REAL,NAME('_')
currencyID                           STRING(255),NAME('currencyID')
                                   END

TaxSubtotalQueueType               QUEUE,TYPE,NAME('TaxSubtotal')
TaxableAmountQueueType               &TaxableAmountQueueType,NAME('TaxableAmount | queue')
TaxAmountQueueType                   &TaxAmountQueueType,NAME('TaxAmount | queue')
PercentQueueType                     &PercentQueueType,NAME('Percent | opt | queue')
TaxCategoryQueueType                 &TaxCategoryQueueType,NAME('TaxCategory | queue')
                                   END

PercentQueueType                   QUEUE,TYPE,NAME('Percent')
_                                    REAL,NAME('_')
                                   END

TaxableAmountQueueType             QUEUE,TYPE,NAME('TaxableAmount')
_                                    REAL,NAME('_')
currencyID                           STRING(255),NAME('currencyID')
                                   END

TaxCategoryQueueType               QUEUE,TYPE,NAME('TaxCategory')
TaxCategoryIDQueueType               &TaxCategoryIDQueueType,NAME('ID | queue')
TaxExemptionReasonQueueType          &TaxExemptionReasonQueueType,NAME('TaxExemptionReason | opt | queue')
TaxSchemeQueueType                   &TaxSchemeQueueType,NAME('TaxScheme | queue')
                                   END

TaxCategoryIDQueueType             QUEUE,TYPE,NAME('TaxCategoryID')
_                                    STRING(255),NAME('_')
                                   END

TaxSchemeQueueType                 QUEUE,TYPE,NAME('TaxScheme')
TaxSchemeIDQueueType                 &TaxSchemeIDQueueType,NAME('ID | queue')
                                   END

TaxExemptionReasonQueueType        QUEUE,TYPE,NAME('TaxExemptionReason')
_                                    STRING(255),NAME('_')
                                   END

! Note: The TaxScheme ID structure should reference a specialized ID queue type
! with additional attributes for this specific context:
TaxSchemeIDQueueType               QUEUE,TYPE,NAME('TaxSchemeID')
_                                    STRING(255),NAME('_')
schemeID                             STRING(255),NAME('schemeID')
schemeAgencyID                       STRING(255),NAME('schemeAgencyID')
                                   END

TaxTotalElement  ROUTINE   
 element.Invoice.TaxTotal.TaxAmountQueueType &= NEW TaxAmountQueueType

TaxSubTotalElement  ROUTINE
 element.Invoice.TaxTotal.TaxSubtotalQueueType &= NEW TaxSubtotalQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType &= NEW TaxableAmountQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxAmountQueueType &= NEW TaxAmountQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.PercentQueueType &= NEW PercentQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType &= NEW TaxCategoryQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType &= NEW TaxCategoryIDQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxExemptionReasonQueueType &= NEW TaxExemptionReasonQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType &= NEW TaxSchemeQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType &= NEW TaxSchemeIDQueueType    


do TaxTotalElement
do TaxSubTotalElement


  IF INH:Tax > 0 THEN   
    element.Invoice.TaxTotal.TaxAmountQueueType._ = INH:Tax + INH:Tax2 
    element.Invoice.TaxTotal.TaxAmountQueueType.currencyID = CLIP(INH:CurrencySign)
   
    add(element.Invoice.TaxTotal)
    add(element.Invoice.TaxTotal.TaxAmountQueueType)
         

    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType._ = INH:Tax
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType.currencyID = CLIP(INH:CurrencySign)
    
    element.Invoice.TaxTotal.TaxSubtotalQueueType.PercentQueueType._ = INH:TaxPercentage
    

   element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType._ = CLIP(INH:TaxTypesCode1)

   ETT:TaxTypesCode = CLIP(INH:TaxTypesCode1)
   IF Access:TaxTypes.Fetch(ETT:KeyTaxTypesCode) = Level:Benign THEN 
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType._ = CLIP(ETT:TaxTypesDesc)
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeID = 'UN/ECE 5153' 
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeAgencyID = '6'
   END 
    
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxAmountQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType)
        
        
 END 
        
  IF INH:Tax2 > 0 THEN  
        do TaxSubTotalElement
        
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType._ = INH:Tax2
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType.currencyID = CLIP(INH:CurrencySign)
    
    element.Invoice.TaxTotal.TaxSubtotalQueueType.PercentQueueType._ = INH:TaxPercentage2
    

   element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType._ = CLIP(INH:TaxTypesCode2)

   ETT:TaxTypesCode = CLIP(INH:TaxTypesCode2)
   IF Access:TaxTypes.Fetch(ETT:KeyTaxTypesCode) = Level:Benign THEN 
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType._ = CLIP(ETT:TaxTypesDesc)
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeID = 'UN/ECE 5153' 
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeAgencyID = '6'
    END   

   add(element.Invoice.TaxTotal.TaxSubtotalQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxAmountQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType)
        
  END   


  IF INH:TaxExemptionsDetails <> ' ' THEN 
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxExemptionReasonQueueType._ = CLIP(INH:TaxExemptionsDetails)
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxAmountQueueType._ = 0
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxAmountQueueType.currencyID = CLIP(INH:CurrencySign)
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType._ = 'E'    
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType._ = 'OTH'    
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeID = 'UN/ECE 5153'    
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeAgencyID = 6    
 END