Blank xml tags; whats the deal?

Okay here is my question. I have an XSD and two pieces of
xml that look like this:
snippet1:
<myTag myattr="someVal"></myTag>
snippet2:
<myTag myattr="someVal"/>
Technically speaking both mean the same thing. I validated
both XML's using XMLSPY and they pass through. But one of
our clent uses the old style, that is snippet1. When he
get's snippet2, he encounters an error.
Does any one know about this kind of issues? As in what
part of the xml spec speaks about this? and what is this
called in terms of parser terminology?
Thanks in advance.

Section 3.1: http://www.w3.org/TR/REC-xml/#sec-starttags
And if your client gets an error when processing an empty element, they need to throw out their parser and get one that complies with the XML recommendation.

Similar Messages

  • You can download past purchases on this computer with just one Apple ID every 90 days. This computer can be used with a different Apple ID in 71 days. Whats the deal???

    You can download past purchases on this computer with just one Apple ID every 90 days. This computer can be used with a different Apple ID in 71 days. Whats the deal???

    You can use multiple AppleIDs to purchase new music but you are limited as to how frequently you can change authorizations for re-downloading  past purchases.  It may well be a measure to deter piracy by stopping a group of people from going around to a friend's computer and downloading purchases on the other person's computer.  It is easy to avoid by making sure you have backup copies on drives at home so you never need to redownload anything.

  • HT5654 When I connect my iPhone to my computer, it says that I need the latest download for my iTunes to be able to sync. I already have the iOS7 and the 11.1.3 update. Whats the deal?

    When I connect my iPhone to my computer, it says that I need the latest download for my iTunes to be able to sync. I already have the iOS7 and the 11.1.3 update. Whats the deal?

    I have the same thing with my ipad "Bill's Ipad cannot be used because it requires itunes version 11.1 or later"
    Thanks for help.

  • Bought my wife an iphone for xmas. when i connect to itunes i get an error message saying apple mobile device service is not started. my iphone and kids apple devices all work fine. set wife up on a seperate account. whats the deal?

    Bought wife an iPhne 4s for xmas. when i connect to itunes i get a message that says iPhone cannot be used because the Apple moible device service is not started. my iPhone and kids apple devices work fine but are on a seperate account. whats the deal?

    Not sure why only one particular phone is having this problem but this article will help you check and restart it if it's in fact not started: http://support.apple.com/kb/ts1567.  Even if it is running, suggest you stop and restart it.

  • I can't hear when video chatting, whats the deal?

    I live far away from my friend, and we video chat. Sometimes I can't hear her, but she always hears me! Everything says that audio is fine, and connection is great but I still can't hear her. WHATS THE DEAL WITH THAT?

    Hi,
    Lets talk  in broad terms first.
    For a Buddy to hear you the Mic as to be connected and turned On in iChat
    Taking that it is going to be an Internal Mic we can presume it is connected.
    In iChat it is turned On in the Video menu (It will read Audio if you have no camera) and is the one to the right of the Buddies menu.
    In here, Microphone Enabled (Or Audio Chat Enabled in  Lion) needs to be ticked.
    The Mic then needs to be chosen in System Preferences > Sound > Input AND in iChat as the input/Microphone choice.
    In iChat the choice is made in iChat menu > Preferences > Video/Audio Section > Microphone drop down.
    In the System Preferences > Sound > Input the volume has to be high enough for you to be heard.
    This tends to be a setting that moves the blue bars to about 3/4s of the way across. (At least 1/2 way and not banging in to the right hand end when you talk)
    If you are doing things in other apps that use the mic differently or even a different Mic you may have problems if you don't manually change things back for iChat.
    So...
    Transferring this to the Other end, your Buddy may not have the Mic on.
    May have been doing something else Audio-wise and not changed things back.
    May have reduced the volume for Input for another App and not reset it.
    She may also have issues with the OS "Seeing" the Mic
    She should check the System Profiler (Information in Lion) and see if in Hardware > USB the mic shows up
    You can access this from the Apple Icon Menu and holding the ALT key down.
    If it does not show up here then a SMC/PMU reset may be in order.
    9:56 PM      Sunday; May 13, 2012
    Please, if posting Logs, do not post any Log info after the line "Binary Images for iChat"
      iMac 2.5Ghz 5i 2011 (Lion 10.7.3)
     G4/1GhzDual MDD (Leopard 10.5.8)
     MacBookPro 2Gb (Snow Leopard 10.6.8)
     Mac OS X (10.6.8),
    "Limit the Logs to the Bits above Binary Images."  No, Seriously

  • I just loaded CS6 and the tools pallets are all in black? Whats the deal?

    I just loaded CS6 and the tools pallets are all in black? Whats the deal?

    Go to Edit/preferences/user interface and make the pointer to dark to light.

  • FOR YEARS IVE USED THE FIREFOX ADDON GOOGLEPCK WITH PCTOOLS NOW I CANT SEE ANY SIGN OF IT AND EVERYONE SEEMS TO NOT EVEN HAVE EVER HEARD OF IT. AS IF THE LAST 3 YEARS OF MY LIFE WERE A DREAM. WHATS THE DEAL?

    FOR YEARS IVE USED THE FIREFOX ADDON GOOGLEPACK WITH PCTOOLS/SPYWARE DOCTOR. NOW I CANT SEE ANY SIGN OF IT ON THE ADDONS LIST AND EVERYONE SEEMS TO NOT EVEN HAVE EVER HEARD OF IT INCLUDING THE ZOMBIES AT PCTOOLS SUPPORT CHATLINE. AS IF THE LAST 3 YEARS OF MY LIFE WERE A DREAM. WHATS THE DEAL?

    TO THIS:
    on support.mozilla.com:
    This could be what you are looking for -
    http://www.pctools.com/spyware-doctor/google_pack/
    Try Googling -'' google pack +pc tools +spyware doctor'' which is where you might reasonably have started.
    Nothing to do with Mozilla, though.
    '''the-edmeister''' has helped thousands of people here and on other forums. He deserves considerable respect and offers good advice on your behaviour.
    SINCE I CAN LOGIN TO MY ACCOUNT I OPED ANOTHER. JJBOY AND BOBPC = SAME.
    ALREADY EXPLAINED THESE SITES DO NOT HAVE IT YOUR LINKS ARE BOGUS. THAT MEANS THEY HAVE NO CURRENT VALUE. IT USED TO BE CORRECT BUT ISNT ANYMORE. THE LINKS ARE OUT-DATED. THERE IS NO LINK TO DOWNLOAD THE GOOGLE PACK FOR FIREFOX WITH FREE PC TOOLS ANYWHERE . THERE IS NO SEARCH ENGINE THAT DOESNT LEAD ON THE SAME JOURNEY TO THE END WHICH IS THAT THERES NO DOWNLOAD. END OF THAT STORY. IF THERE IS A REAL TRUEFULL PLACE WHERE A PERSON CAN DOWNLOAD AND OLDER VERSION THAT APEARS TO BE THE ONLY THING LEFT TO DO.

  • Everytime I login to Firefox I get message saying I am not on the current version, but I am. - Version 30.0 "Up to Date" Whats the deal?

    Everytime I login to Firefox I get message saying I am not on the current version, but I am. - Version 30.0 "Up to Date" Whats the deal?

    James
    thank you big time!!!!!!
    You solved it. Much appreciate it.
    Doug

  • PDF PO Release - XML Tags for the Header and Line Attachments

    Hi,
    I request you to please help me in finding out the XML tags for the PDF PO Release Header and Line Attachments? I tried to get the XML data by running the 'PO Output for Communication' program with the parameter as 'Debug' but its completing normally without giving me the XML data in the log file.
    Please help me in finding the XML tags for the PDF PO Release for the Header and Line Attachments.
    Thanks,
    Kunal

    Hi Kunal,
    Following syntax will get you the header and line level short and long text attachments.
    --Header short text attachments
    <?for-each:HEADER_SHORT_TEXT_ROW?>
         <?SHORT_TEXT?>
    <?end for-each?>
    --Header long text attachments
    <?for-each:/PO_DATA/HEADER_ATTACHMENTS/LONG_TEXT?>
         <?.?>
    <?end for-each?>
    --Line short text attachments
    <?for-each:LINE_SHORT_TEXT_ROW?>
         <?SHORT_TEXT?>
    <?end for-each?>
    --Line long text attachments
    <?variable@incontext:PoLnID;'PO_LINE_ID'?><?for-each:/PO_DATA/LINE_ATTACHMENTS/ID[. =$PoLnID]?>
         <?current()[$PoLnID]/preceding-sibling::TEXT[1]?>
    <?end for-each?>
    Also note that, while running the program in Debug mode for a particular PO/Release the status should be INCOMPLETE, otherwise you won't be able to see the XML tags.
    Thanks,
    PS.
    Edited by: PS on Sep 25, 2012 6:16 AM

  • HT5167 each out i try to update to 10.7.4 (from 10.7.3) i get stuck in a jarbeled start screen and have to reinstall Lion, whats the deal?

    each out i try to update to 10.7.4 (from 10.7.3) i get stuck in a jarbeled start screen and have to reinstall Lion, whats the deal?

    Chieff449 wrote:
    each out i try to update to 10.7.4 (from 10.7.3) i get stuck in a jarbeled start screen and have to reinstall Lion, whats the deal?
    Have you tried installing the 10.7.4 Combo Update from here?
    http://support.apple.com/kb/DL1524
    Pete

  • My new ipad wont make purchases from the app store, asks to verify payment info... I enter it and it says contact itunes support, whats the deal?

    my new ipad wont make purchases from the app store, asks to verify payment info... I enter it and it says contact itunes support, whats the deal?

    FOR ASSISTANCE WITH ORDERS - iTUNES STORE CUSTOMER SERVICE
    For assistance with billing questions or other order inquiries, please refer to our online support page by clicking here: http://www.apple.com/support/itunes/store/. If you cannot find the answers you are seeking in our robust knowledge base, you can contact us by visiting the following URL http://www.apple.com/support/itunes/store/, clicking on the appropriate Customer Service topic, then using the contact button or email form at the bottom of the page. Responses to emails will be provided as soon as possible.
    Phone: 800-275-2273 How to reach a live person: Press 0 four times
    Hours of Operation: Mon-Fri: 9am-5pm ET
    Email: [email protected]
    How to report an issue with Your iTunes Store purchase
    http://support.apple.com/kb/HT1933
    How to Get a Refund from the App Store
    http://gizmodo.com/5886683/how-to-get-a-refund-from-the-app-store
     Cheers, Tom

  • Is apple really going to make us buy a new applie mine was only bought in 2008 only 4 yrs old no problems whats the deal, why was I offered Lion if mountian lion was not going to be able to be used on my macbook. Apple come on this is rediculous!!!

    s apple really going to make us buy a new applie mine was only bought in 2008 only 4 yrs old no problems whats the deal, why was I offered Lion if mountian lion was not going to be able to be used on my macbook. Apple come on this is rediculous!!!

    Macbooks are only supported if the're late 2008 Alu or early 2009 or later:
    The OP may have an early 2008 Macbook. You have a Macbook Pro, which is different.

  • I updated to a newer itunes version and now itunes will not let me play a bunch of my music.  ***? anyone know what the deal is with that?

    I  updated to a newer itunes version and now itunes will not let me play a bunch of my music.  ***? anyone know what the deal is with that?

    How could anyone possibly know as you've provided no details.
    What happens when trying to play the media in question?
    Any errors?
    Is there an ! to the left of the media?  If so, this means iTunes is unable to locate the media file.

  • DataWriter - removing attributes from xml tag at the start of document

    Hi,
    I'm using DataWriter for generating a large XML document, however I do not want the attributees of the starting xml tag to appear in the final file.
    Eg: <?xml version="1.0" {color:#ff0000}encoding="UTF-8" standalone="yes"{color}?>I do not want to output the part highlighted in red.
    What could be the possible ways to do it? I prefer if it can be removed in the begining itself instead of parsing the document and removing in the end.
    -TIA, saum
    Edited by: nkrust on Feb 15, 2010 4:29 PM

    try {
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        Marshaller marshaller = new Marshaller(new OutputStreamWriter(
                                  baos));
                        marshaller.marshal(ResponseContents);
                        // Create an object of type Document from the XML document
                        // created.
                        DocumentBuilderFactory domFactory = DocumentBuilderFactory
                                  .newInstance();
                        domFactory.setNamespaceAware(false);
                        DocumentBuilder builder = domFactory.newDocumentBuilder();
                        responseDoc = builder.parse(new ByteArrayInputStream(
                                  ResponseUtils.formatXMLString(baos.toString())));
                   } catch (IOException e) {
                        e.printStackTrace();
                        System.out.println(e.getMessage());
                   }

  • Want to create XML tag from the query

    Here i want to create a xml output from the below code for the given P_repair_number can anyone help me for the code i have written
    ORA-06502: PL/SQL: numeric or value error: character to number conversion error
    facing the above error when run from concurrent program
    Procedure dfdfdf(p_repair_number number,
                              errbuf        OUT VARCHAR2,
                              retcode       OUT NUMBER) as
    v_error_code NUMBER; -- error code
      v_error_message VARCHAR2(255); -- error message
      v_text_msg VARCHAR2(100);
    cursor Rodetails(p_repair_number IN NUMBER) is
    SELECT
      dra.repair_number,
      dra.repair_line_id,
      items.concatenated_segments item_name,
      items.description item_desc,
      dra.inventory_item_id,
      sr.incident_number sr_incident_number,
      decode(dra.customer_product_id, '',dra.serial_number,cp.serial_number) serial_number,
      ltrim(oeh.order_number) rma_number,
      rstl.resource_name ro_owner_name,
      fndl.meaning flow_status_name,
      dra.status ro_status_code,
      drtt.name repair_type_name,
      dra.problem_description,
      dra.promise_date,
      rgtl.group_name repair_org_name,
      decode(dra.customer_product_id, '',dra.item_revision,cp.inventory_revision) revision,
      cp.lot_number,
      dra.unit_of_measure uom_code,
      uom.unit_of_measure_tl uom_name,
      dra.quantity,
      cp.instance_number ib_instance_number,
      plkup.meaning ro_priority_meaning
    FROM
      csd_repairs dra,
      csd_repair_types_tl drtt,  
      cs_incidents_all_b sr,
      csi_item_instances cp,
      fnd_lookups fndl, 
      csd_flow_statuses_b fsb,
      mtl_system_items_kfv items,
      mtl_units_of_measure_tl uom,
      jtf_rs_resource_extns_tl rstl,
      jtf_rs_groups_tl rgtl,
      oe_order_headers_all oeh,
      cs_estimate_details edt,
      csd_product_transactions txns,
      fnd_lookups plkup 
    WHERE dra.repair_type_id =  drtt.repair_type_id
      AND drtt.language = userenv('LANG')
      AND dra.repair_mode = 'WIP'
      AND dra.incident_id = sr.incident_id
      AND dra.CUSTOMER_PRODUCT_ID = cp.INSTANCE_ID(+)
      AND dra.flow_status_id = fsb.flow_status_id
      AND fsb.flow_status_code = fndl.lookup_code
      AND fndl.lookup_type = 'CSD_REPAIR_FLOW_STATUS'
      AND dra.inventory_item_id = items.inventory_item_id
      AND dra.unit_of_measure = uom.uom_code
      AND uom.language = userenv('LANG')
      AND dra.resource_id = rstl.resource_id (+)
      AND rstl.category (+) = 'EMPLOYEE'
      AND rstl.language (+) = userenv('LANG')
      AND dra.owning_organization_id = rgtl.group_id (+)
      AND rgtl.language (+) = userenv('LANG')
      AND dra.repair_line_id = txns.repair_line_id
      AND txns.estimate_detail_id = edt.estimate_detail_id
      AND edt.order_header_id = oeh.header_id
      AND edt.line_category_code = 'RETURN'
      AND dra.currency_code = oeh.transactional_curr_code
      AND dra.ro_priority_code = plkup.lookup_code(+)
      AND plkup.lookup_type(+) = 'CSD_RO_PRIORITY' 
      AND items.organization_id = cs_std.get_item_valdn_orgzn_id
      AND dra.repair_number=p_repair_number
      AND rownum <50;
    begin
    errbuf := NULL;
    retcode := 0;
      SAVEPOINT Create_external_orders;
      --retcode             := FND_API.G_RET_STS_SUCCESS;
      IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
        fnd_log.STRING (fnd_log.level_procedure, 'CSD.PLSQL.XXTNT_CSD_CREATEORDER.SUBMIT_CREATE_ORDER.BEGIN', 'Enter - PrintTraveller');
      END IF;
    --FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<?xml version="1.0"?>');
    --FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<REPAIR_ORDER>');
    FOR v_rodetails IN Rodetails(p_repair_number)
    LOOP
    /*For each record create a group tag <G_RODETAILS> at the start*/
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<?xml version="1.0"?>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<REPAIR_ORDER>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<G_RODETAILS>');
      FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<REPAIR_NUMBER>' || v_rodetails.repair_number ||
                                       '</REPAIR_NUMBER>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<REPAIR_LINE_ID>' || v_rodetails.repair_line_id
                                    || '</REPAIR_LINE_ID>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<ITEM_NAME>' || v_rodetails.ITEM_NAME
                                     ||'</ITEM_NAME>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<ITEM_DESC>' || v_rodetails.ITEM_DESC
                                    || '</ITEM_DESC>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<SR_INCIDENT_NUMBER>' || v_rodetails.SR_INCIDENT_NUMBER ||
                                       '</SR_INCIDENT_NUMBER>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<SERIAL_NUMBER>' ||v_rodetails.SERIAL_NUMBER
                                     ||'</SERIAL_NUMBER>');                               
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<RMA_NUMBER>' || v_rodetails.RMA_NUMBER
                                    || '</RMA_NUMBER>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<RO_OWNER_NAME>' ||v_rodetails.RO_OWNER_NAME ||
                                       '</RO_OWNER_NAME>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<FLOW_STATUS_NAME>' || v_rodetails.FLOW_STATUS_NAME
                                     ||'</FLOW_STATUS_NAME>');                                
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<RO_STATUS_CODE>' || v_rodetails.RO_STATUS_CODE
                                    || '</RO_STATUS_CODE>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<REPAIR_TYPE_NAME>' || v_rodetails.REPAIR_TYPE_NAME ||
                                       '</REPAIR_TYPE_NAME>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<PROBLEM_DESCRIPTION>' || v_rodetails.PROBLEM_DESCRIPTION
                                     ||'</PROBLEM_DESCRIPTION>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<PROMISE_DATE>' || v_rodetails.PROMISE_DATE
                                    || '</PROMISE_DATE>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<RO_OWNER_NAME>' || v_rodetails.RO_OWNER_NAME ||
                                       '</RO_OWNER_NAME>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<REPAIR_ORG_NAME>' || v_rodetails.REPAIR_ORG_NAME
                                     ||'</REPAIR_ORG_NAME>');                                
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<RO_STATUS_CODE>' || v_rodetails.RO_STATUS_CODE
                                    || '</RO_STATUS_CODE>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<REVISION>' || v_rodetails.REVISION ||
                                       '</REVISION>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<LOT_NUMBER>' || v_rodetails.LOT_NUMBER
                                     ||'</LOT_NUMBER>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<UOM_CODE>' || v_rodetails.UOM_CODE
                                    || '</UOM_CODE>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<UOM_NAME>' ||v_rodetails.UOM_NAME ||
                                       '</UOM_NAME>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<QUANTITY>' || v_rodetails.QUANTITY
                                     ||'</QUANTITY>');                                
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<IB_INSTANCE_NUMBER>' || v_rodetails.IB_INSTANCE_NUMBER
                                    || '</IB_INSTANCE_NUMBER>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<RO_PRIORITY_MEANING>' || v_rodetails.RO_PRIORITY_MEANING ||
                                       '</RO_PRIORITY_MEANING>');
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'</G_RODETAILS>');                             
    FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'</REPAIR_ORDER>');                                
    END LOOP;
    IF(retcode != FND_API.G_RET_STS_SUCCESS) THEN
                    RAISE FND_API.G_EXC_ERROR;
                  END IF;
                  IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
                    fnd_log.STRING (fnd_log.level_statement, 'CSD.PLSQL.XXTNT_CSD_CREATEORDER.SUBMIT_CREATE_ORDER', ' In PrintTraveller');
                  END IF;
    fnd_file.put_line(fnd_file.log, 'Successfully completed PrintTraveller');
    EXCEPTION
    || Catch all error.
    WHEN OTHERS THEN
    ROLLBACK;
    v_error_code := SQLCODE;
    v_text_msg := 'Fatal Error, Oracle Error is: '
    || TO_CHAR (v_error_code, '99999');
    fnd_file.put_line (fnd_file.log, v_text_msg);
    v_error_message := SQLERRM;
    fnd_file.put_line (fnd_file.log, v_error_message);   
    end dfdfdf;Edited by: user12053530 on Apr 19, 2010 5:54 AM

    However using SYS.ODCIVARCHAR2LIST makes sense if your query is a part of bigger processing (PL/SQL procedure or function) and you will do some processing depending on File_Type, like in this example (not compiled, could contain syntax errors):
    DECLARE
      l_stid           VARCHAR2(10);
      l_address        VARCHAR2(30);
      l_File_Type_tab  SYS.ODCIVARCHAR2LIST;
      cur_cursor IS SELECT STID,
                    ADDRESS,
                    CAST(COLLECT(DISTINCT File_Type) AS SYS.ODCIVARCHAR2LIST) AS File_Type
                    FROM (
                          SELECT STID,
                                 ADDRESS,
                                 File_Type
                            FROM DUMMY
                    GROUP BY STID, ADDRESS;
    BEGIN
      OPEN cur_cursor;
      <<main_loop>>
      WHILE (1=1) LOOP
         FETCH cur_cursor INTO l_stid, l_address, l_File_Type_tab;
         EXIT WHEN cur_cursor%NOTFOUND;
         -- Now do processing for each File_Type in l_File_Type_tab;
         <<each_file_type>>
         FOR i IN l_File_Type_tab.FIRST .. l_File_Type_tab.LAST LOOP
           -- for example:
           -- IF l_File_Type_tab(i) = 'SALES'
           -- THEN
           --   do_something(l_stid, l_address);
           -- ELSIF l_File_Type_tab(i) = 'TRANSFER'
           -- THEN
           --   do_something_else(l_stid, l_address);
           -- ELSE
           --   do_something_default(l_stid, l_address);
           -- END IF;
         END LOOP each_file_type;
      END LOOP main_loop;
      CLOSE cur_cursor;
    END;

Maybe you are looking for