& and & parser in XML attributes

Let's say we have :
cartoon="Tom & Jerry"
has an attribute in our XML.
Well Spry explodes and doesn't load the XML.
The Spry parser doesn't seam to work. Any solution?

& characters in XML attributes need to be entity encoded.
Adding your attribute as is to an existing XML file and loading it
in FireFox causes it to throw a "not well-formed" error. IE just
silently fails.
Try changing it to cartoon="Tom & Jerry", that should
work.
On the Spry end of things, we could do a better Job about
reporting XML format errors, but in IE it silently fails.
--== Kin ==--

Similar Messages

  • Repeated retrieval and parsing of XML file causes IE to display an error message

    I have a flash application that makes a HTTP call every 120
    seconds to retrieve a xml file. This file is being generated with
    fresh data every few minutes or so and pushed to the apache web
    root with a unix mv command.
    I'm using the standard Flash XML object. The HTTP request is
    NOT over SSL (I know there is a bug related to this). Here is the
    code to make the retrieval:
    xmlData = null;
    xmlData = new XML();
    xmlData.ignoreWhite = true;
    xmlData.onLoad = xmlTraverse;
    xmlData.load("
    http://domain/dir/somefile.xml");
    The "xmlTraverse" method was written by my team. There is no
    known bug in the parsing logic.
    Intermittently and unpredictably, IE will display the
    following dialogue box:
    "A script in this movie is causing Macromedia Flash Player 8
    to run slowly. If it continues to run, your computer may become
    unresponive. Do you want to abort the script?"
    I originally leaned toward an infinite loop causing this
    problem. The timeline jumps back and forth between two frames,
    checking in the latter frame if the xml has been loaded and parsed
    before allowing execution to move to the next frame. I hardcoded
    the loop check to always be false, but this did not produce the
    message above (although it pegged my CPU).
    The only scenario where I've managed to reproduce the message
    above is by making a huge (50 MB) xml file. This consistently
    produces the message. But I don't realistically see how our xml
    file could ever be over 1 MB.
    First, can anyone cite another cause for this message? I'm
    starting to lean towards the issue lying in our parsing logic such
    as infinite recursion on a badly formed XML file. Second, does
    anyone know of a solid xml SAX parsing actionscript utility where
    you can assign callbacks to XML nodes? If the problem is in the
    parsing, we may have to replace our homegrown solution with
    something more robust and proven.

    Is it a recursive parsing function? I'm not sure about this,
    but I think this message pops up when there are more than 256
    iterations in a loop (I've read something about this 256 limit,
    that will end while loops if they exceed this, but with another
    error message... but again, I'm not totally sure about that).
    The message is typically for loops, but I don't know when it
    fires. Sometimes it appears for really 'small' loops when you're
    using the debugger (e.g. a for loop with 100 iterations), so maybe
    it is connected to the time a loop is running. You could place some
    trace statements in the xmlTraverse method, to see where the
    function was when the message occurs, or take the time the function
    needs and check if this might be related to the error.
    That's all I can come up with, guess there are people here
    with more insight to this...
    cheers,
    blemmo

  • Calling web service with utl_dbws and parsing the xml result with Xpath

    I'm invoking a web service from the database(10.2.0.2.0) using sys.utl_dbws and all is working well. After executing response := sys.utl_dbws.invoke(call_, request); I execute dbms_output.put_line(substr(response.getstringval(),1,1500)); which results with:
    <refCursor10gProcessResponse xmlns="http://xmlns.oracle.com/refCursor10g">
    <result xmlns="http://xmlns.oracle.com/refCursor10g">
    <Row xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/ADM/SERVICES/GETST/">
    <Column name="C_ID" sqltype="VARCHAR2">20292</Column>
    <Column name="AYR" sqltype="VARCHAR2">2002</Column>
    <Column name="EDT" sqltype="VARCHAR2">2002-06-13</Column>
    <Column name="ETUS" sqltype="VARCHAR2">O</Column>
    <Column name="PC" sqltype="NUMBER">537</Column>
    <Column name="SG" sqltype="VARCHAR2"/>
    <Column name="VD" sqltype="VARCHAR2">Y</Column>
    <Column name="VR" sqltype="VARCHAR2">R</Column>
    <Column name="TS" sqltype="VARCHAR2">31</Column>
    <Column name="D" sqltype="VARCHAR2">I</Column>
    <Column name="T" sqltype="VARCHAR2">1</Column>
    <Column name="P" sqltype="VARCHAR2"/>
    <Column name="MT" sqltype="VARCHAR2">2</Column>
    <Column name="PTAT" sqltype="VARCHAR2"/>
    </Row>
    </result>
    </refCursor10gProcessResponse>
    How do I parse out just the value 20292 of Column name="C_ID" using xpath? I've tired but I don't think i have the xpath set up correctly:
    dbms_output.put_line(response.extract('//result/Row/Column/child::text)','xmlns="http://xmlns.oracle.com/refCursor10g"').getstringval());
    Error messgae is:
    ORA-30625: method dispatch on NULL SELF argument is disallowed
    ORA-06512: at "ADM.CONSUME_WEB_SERVICES", line 439
    ORA-06512: at 3
    Thanks

    Tried getting by the attribute but I don't think I have the format correct:
    dbms_output.put_line(response.extract('//result/Row/Column@C_ID/child::text()','xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/ADM/SERVICES/GETST"').getstringval());
    Here's the full soap response envelope:
    <env:Envelope
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header/>
    <env:Body>
    <refCursor10gProcessResponse xmlns="http://xmlns.oracle.com/refCursor10g">
    <result xmlns="http://xmlns.oracle.com/refCursor10g">
    <Row xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/ADM/SERVICES/GETST/">
    <Column name="C_ID" sqltype="VARCHAR2">20292</Column>
    <Column name="AYR" sqltype="VARCHAR2">2002</Column>
    <Column name="EDT" sqltype="VARCHAR2">2002-06-13</Column>
    <Column name="ETUS" sqltype="VARCHAR2">O</Column>
    <Column name="PC" sqltype="NUMBER">537</Column>
    <Column name="SG" sqltype="VARCHAR2"/>
    <Column name="VD" sqltype="VARCHAR2">Y</Column>
    <Column name="VR" sqltype="VARCHAR2">R</Column>
    <Column name="TS" sqltype="VARCHAR2">31</Column>
    <Column name="D" sqltype="VARCHAR2">I</Column>
    <Column name="T" sqltype="VARCHAR2">1</Column>
    <Column name="P" sqltype="VARCHAR2"/>
    <Column name="MT" sqltype="VARCHAR2">2</Column>
    <Column name="PTAT" sqltype="VARCHAR2"/>
    </Row>
    </result>
    </refCursor10gProcessResponse>
    </env:Body>
    </env:Envelope>
    Any thoughts?

  • Storing and parsing  an XML document

    Hi everybody,
    does anybody know how to store (clob) and to parse (query) and XML document? can you give me an example and/or some useful information?
    Thanx in advance,
    Ettore

    Hi, first try determine how much time does the parsing xml get,
    you could just remove insert lines, and count,
    if the time is similar it means that parsing xml has great infulance on total time,
    otherwise there is insert affection you could try ue forall loop syntax insted of for ( just FORALL currentNode IN 0 .. xmldom.getLength(nodeList) - 1 LOOP) or
    direct load using 'insert into <table_name> .. as select',
    'forall' minimize conext switches it could help
    to achive direct load you need first rewrite your procedure to function in order to return table, (table of object ), so your insert could look like
    insert into SWTable
    as select * from table
    (cast
    USP_FILEINFOINSTANCEINSERT(
    URLFile =>x
    lComputerID =>y) as SWTable_t)
    where SWTable_t - table of SWTable_o
    SWTable_o - object with all SWTable's atributes

  • Read and parse XML

    Hi all,
    is there some procedure or function or whatever I can use to read and parse an XML file into Oracle?
    The XML contains 30+ Megs of data, which would represent data in 10+ tables if you would convert it into flat files.
    I know I can read the XML and save it line by line in a table, but I do not want to parse it myself. It would be cool if there was a tool or so that would read the dtd definition of the XML, then read the XML data, parse it and create temporary tables with the flat content of the xml (can you code object oriented with PL/SQL? this would even be cooler!).
    Does someone have an idea how to do that?
    Thanks,
    Steff

    Wow, I've never tried to parse an XML file quite that large
    before. Does it contain a bunch of encoded binary data, or does it
    have houndreds of thousands of xml-nodes?
    In any event, I do have one thought:
    Do you need absolutely everything in the file? If you only
    need access to a small portion of it, it would be worth your while
    to pull out only the "stuff" that you need before you parse it. You
    could use regular expressions to strip out things you don't need,
    or to pull out only the stuff you do need.
    The more you can minimize the "parse" effort the better off
    you'll be.
    Alternatively, if it's a file describing many "records" of
    the same type, it would be best if you could "chunk" the file and
    parse each record individually.

  • Consuming and parsing a custom Web Service in OSC

    I need to consume a web service in OSC and parsing the xml elements returned by the web service response.
    I don't find the method or function to parse the XML to get the values into variables and after save them in fields.
    Somebody knows how to do this by Groovy script or any other method?
    Thanks in advance,

    Hello Stefan,
    I am trying to consume a web service which receives a few string parameters and it returns a type: java.lang.String.
    Groovy Script:
    def proxy = adf.webServices.WSTipoCambio.ObtenerIndicadoresEconomicosXML("317","06/03/2015","06/03/2015","RVA","N")
       if (proxy!=null) {
          setAttribute('WSResult_c',proxy)
    I can display this response as a xml text as you can see below, but I need to parse and save one by one tag that is returned in this message in custom fields.
    <Datos_de_INGC011_CAT_INDICADORECONOMIC>
      <INGC011_CAT_INDICADORECONOMIC>
        <COD_INDICADORINTERNO>317</COD_INDICADORINTERNO>
        <DES_FECHA>2015-03-06T00:00:00-06:00</DES_FECHA>
        <NUM_VALOR>528.75000000</NUM_VALOR>
      </INGC011_CAT_INDICADORECONOMIC>
    </Datos_de_INGC011_CAT_INDICADORECONOMIC>
    I cannot find the methods or commands en "Groovy" for getting each of these values in separate fields.
    Could you help me with a most complete reference please?

  • Error processing request in sax parser  No 'action' attribute found in XML

    Hi All,
            I am doing a FILE to JDBC Scenario.  I just want to send a data from file to Sql Db table. For this I have written a stored procedure to insert the row in a table.
    This is the message mapping for FILE to JDBC ….
    Sender                                                                   Receiver
    *FILESENDER_MT  1..1    FILESENDER_DT     * SPRECEIVER_MT    1..1
        .NO                    1..1    xsd:string                    * Statement           1..1   string
        .Name                1..1    xsd:string                      *user_PROC       1..1                                                                               
    action            1..1required
                                                                                *No                                                                               
    isInput        1..1  string
                                                                                    type           1..1  string
                                                                                *Name
                                                                                    isInput        1..1  string
                                                                                    type           1..1  string 
    Mapped Values....
    Statement is mapped with <b>FILESENDER_MT</b>
    action attribute is mapped with "<b>EXECUTE</b>" Constant
    No is mapped with <b>NO</b>
    Name is mapped with <b>Name</b>
    for both isInput is mapped with <b>TRUE</b>
    for both type is mapped with <b>CHAR</b>
    Here is the my stored procedure.....
    CREATE PROCEDURE [dbo].[user_PROC]
    @NO char(10),  @Name char(10)  AS
    insert into FILE2JDBC values('a','ab')
    GO
    when i run this stored procedure in Sql directly it was executed successfully....
    I have checked In SXMB_MONI status is showing green...
    xml messages from SXMB_MONI ....
    this is the message from payloads of Inbound Message
    <PRE> <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:FILESENDER_MT xmlns:ns0="http://www.prospectadelhi.com/DELHI_FILE2JDBC">
      <NO>111</NO>
      <NAME>murthy</NAME>
      </ns0:FILESENDER_MT></PRE>
    this is the message from payloads of Request Message Mapping
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:SPRECEIVER_MT xmlns:ns0="http://www.prospectadelhi.com/DELHI_FILE2JDBC">
    - <Statement>
    - <user_PROC>
      <action>EXECUTE</action>
    - <NO>
      <isInput>TRUE</isInput>
      <type>CHAR</type>
      </NO>
    - <Name>
      <isInput>TRUE</isInput>
      <type>CHAR</type>
      </Name>
      </user_PROC>
      </Statement>
      </ns0:SPRECEIVER_MT>
    this is the error showing in runtime workbench>component monitoring->communication channel monitoring-->Receiver Communication Channel....
    <b>Error while parsing or executing XML-SQL document: Error processing request in sax parser: No 'action' attribute found in XML document (attribute "action" missing or wrong XML structure)</b>
    Can any body tell me whether the problem is in Mapping or in Data Type Structure..
    Please resolve this issue....
    Thanks in Advance,
    Murthy.

    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:SPRECEIVER_MT xmlns:ns0="http://www.prospectadelhi.com/DELHI_FILE2JDBC">
    - <Statement>
    <b>- <user_PROC>
    <action>EXECUTE</action></b>
    - <NO>
    <isInput>TRUE</isInput>
    <type>CHAR</type>
    </NO>
    - <Name>
    <isInput>TRUE</isInput>
    <type>CHAR</type>
    </Name>
    </user_PROC>
    </Statement>
    </ns0:SPRECEIVER_MT>
    The Action should be a Attribute of Element user_Proc as,
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:SPRECEIVER_MT xmlns:ns0="http://www.prospectadelhi.com/DELHI_FILE2JDBC">
    - <Statement>
    <b>- <user_PROC action="Execute"></b>- <NO>
    <isInput>TRUE</isInput>
    <type>CHAR</type>
    </NO>
    - <Name>
    <isInput>TRUE</isInput>
    <type>CHAR</type>
    </Name>
    </user_PROC>
    </Statement>
    </ns0:SPRECEIVER_MT>
    Likewise isInput and Type should be Attributes and not Elements .
    Regards
    Bhavesh

  • Loading xml file and parsing error in web start

    Hello,
    I load a xml file from jar file, but i have a error at parsing see :
    ClassLoader cl= this.getClass().getClassLoader();
    File file = new File(cl.getResource("paradise/test/maquette/parser/areas.xml").getFile());
    parseur.parse(new InputSource(new FileInputStream(file)), this);
    the file opening but at parseur.parse() i have a path error with :
    http:// . . . . \Paradise_client\paradise.jar!\paradise\test\maquette\parser\areas.xml , bad name of directories .....
    Can you help me ? please :-(

    I need to do a similar thing but in my case I don't know the structure of the xml file. I have 2 questions for this mapping. For an xml file like this:
    <?xml version="1.0"?>
    <catalog>
    <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
    <publisher>Dummy Publisher Co.</publisher>
    <publisher_address>
    <city>London</city>
    <street>Heart St.</street>
    <no>23/5</no>
    </publisher_address>
    <description>An in-depth look at creating applications
    with XML.
    </description>
    </book>
    </catalog>
    If I'm right, I need to create a database named catalog and a table named book. But the problem comes out here: How can i store publisher_address? In a table or what? Other problem is, is there a difference between storing id attribute of the book and genre element of the book? I think they are just columns of the book table. But if I'm wrong what is the correct solution?

  • How get xml-data at servlet by http and parse it?

    hello! please help me who can, i have very urgent task but not much skilful to deal with work in web. is anywhere source code or similar example of task to get xml-data at servlet by http and parse it . thank you in advance

    here a basic code that reads and parses an remote xml file:
    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
    public class SAXParserExample extends DefaultHandler {
         StringBuffer buffer;
         String urlString = "http://nds.nokia.com/uaprof/NN95_8GB-1r100.xml";
         public SAXParserExample() {
         public void runExample() {
              parseDocument();
         private void parseDocument() {
              // get a factory
              SAXParserFactory spf = SAXParserFactory.newInstance();
              try {
                   // get a new instance of parser
                   SAXParser sp = spf.newSAXParser();
                   URL url = new URL(urlString);
                   HttpURLConnection httpSource = (HttpURLConnection) url.openConnection();
                   // parse the file and also register this class for call backs
                   sp.parse(httpSource.getInputStream(), this);
              } catch (SAXException se) {
                   se.printStackTrace();
              } catch (ParserConfigurationException pce) {
                   pce.printStackTrace();
              } catch (IOException ie) {
                   ie.printStackTrace();
         // Event Handlers
         public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
              System.out.println("+++ start of element: " + qName);
              buffer = new StringBuffer();
         public void characters(char[] ch, int start, int length) throws SAXException {
              buffer.append(ch, start, length);
         public void endElement(String uri, String localName, String qName) throws SAXException {
              System.out.println(buffer.toString());
              System.out.println("+++ end of element " + qName);
         public static void main(String[] args) {
              SAXParserExample spe = new SAXParserExample();
              spe.runExample();
    }you have only to change the urlString and adapt to your needs.
    hope it helps

  • How to validate XML against XSD and parse/save in one step using SAXParser?

    How to validate XML against XSD and parse/save in one step using SAXParser?
    I currently have an XML file and XSD. The XML file specifies the location of the XSD. In Java code I create a SAXParser with parameters indicating that it needs to validate the XML. However, SAXParser.parse does not validate the XML, but it does call my handler functions which save the elements/attributes in memory as it is read. On the other hand, XMLReader.parse does validate the XML against the XSD, but does not save the document in memory.
    My code can call XMLReader.parse to validate the XML followed by SAXParser.parse to save the XML document in memory. But this sound inefficient. Besides, while a valid document is being parsed by XMLReader, it can be changed to be invalid and saved, and XMLReader.parse would be looking at the original file and would think that the file is OK, and then SAXParser.parse would parse the document without errors.
    <Book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="book.xsd" name="MyBook">
      <Chapter name="First Chapter"/>
      <Chapter name="Second Chapter">
        <Section number="1"/>
        <Section number="2"/>
      </Chapter>
    </Book>
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Book">
    <xs:complexType>
      <xs:sequence>
       <xs:element name="Chapter" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
         <xs:sequence>
          <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">
           <xs:complexType>
            <xs:attribute name="xnumber"/>
          </xs:complexType>
          </xs:element>
         </xs:sequence>
         <xs:attribute name="name"/>
        </xs:complexType>
       </xs:element>
      </xs:sequence>
      <xs:attribute name="name"/>
    </xs:complexType>
    </xs:element>
    </xs:schema>
    public class SAXXMLParserTest
       public static void main(String[] args)
          try
             SAXParserFactory factory = SAXParserFactory.newInstance();
             factory.setNamespaceAware(true);
             factory.setValidating(true);
             SAXParser parser = factory.newSAXParser();
             parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage",
                                "http://www.w3.org/2001/XMLSchema");
             BookHandler handler = new BookHandler();
             XMLReader reader = parser.getXMLReader();
             reader.setErrorHandler(handler);
             parser.parse("xmltest.dat", handler); // does not throw validation error
             Book book = handler.getBook();
             System.out.println(book);
             reader.parse("xmltest.dat"); // throws validation error because of 'xnumber' in the XSD
    public class Book extends Element
       private String name;
       private List<Chapter> chapters = new ArrayList<Chapter>();
       public Book(String name)
          this.name = name;
       public void addChapter(Chapter chapter)
          chapters.add(chapter);
       public String toString()
          StringBuilder builder = new StringBuilder();
          builder.append("<Book name=\"").append(name).append("\">\n");
          for (Chapter chapter: chapters)
             builder.append(chapter.toString());
          builder.append("</Book>\n");
          return builder.toString();
       public static class BookHandler extends DefaultHandler
          private Stack<Element> root = null;
          private Book book = null;
          public void startDocument()
             root = new Stack<Element>();
          public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
             if (qName.equals("Book"))
                String name = attributes.getValue("name");
                root.push(new Book(name));
             else if (qName.equals("Chapter"))
                String name = attributes.getValue("name");
                Chapter child = new Chapter(name);
                ((Book)root.peek()).addChapter(child);
                root.push(child);
             else if (qName.equals("Section"))
                Integer number = Integer.parseInt(attributes.getValue("number"));
                Section child = new Section(number);
                ((Chapter)root.peek()).addSection(child);
                root.push(child);
          public void endElement(String uri, String localName, String qName) throws SAXException
             Element finished = root.pop();
             if (root.size() == 0)
                book = (Book) finished;
          public Book getBook()
             return book;
          public void error(SAXParseException e)
             System.out.println(e.getMessage());
          public void fatalError(SAXParseException e)
             error(e);
          public void warning(SAXParseException e)
             error(e);
    public class Chapter extends Element
       public static class Section extends Element
          private Integer number;
          public Section(Integer number)
             this.number = number;
          public String toString()
             StringBuilder builder = new StringBuilder();
             builder.append("<Section number=\"").append(number).append("\"/>\n");
             return builder.toString();
       private String name;
       private List<Section> sections = null;
       public Chapter(String name)
          this.name = name;
       public void addSection(Section section)
          if (sections == null)
             sections = new ArrayList<Section>();
          sections.add(section);
       public String toString()
          StringBuilder builder = new StringBuilder();
          builder.append("<Chapter name=\"").append(name).append("\">\n");
          if (sections != null)
             for (Section section: sections)
                builder.append(section.toString());
          builder.append("</Chapter>\n");
          return builder.toString();
    }Edited by: sn72 on Oct 28, 2008 1:16 PM

    Have you looked at the XML DB FAQ thread (second post) in this forum? It has some examples for validating XML against schemas.

  • How can I take the part that parses the .XML file and make it a procedure.

    CREATE OR REPLACE PACKAGE BODY XMLSTUD6 AS
    Author: Jimmy Harris
    Created: 5/25/2006
    Purpose: 1.This package has an XML file initialized to a variable called DOC .
              2.It will then take the values from the XML file and insert them into a PL/SQL table.
              3.From the PL/SQL table it will insert values into the STUDENTS table.
              4.After step four above, the STUDLOAD procedure will insert (Sequence,Status, .XML file, USER, SYSDATE, ERROR_Message
                             into the AUDIT_XMLSTUD table regardless if insert status was successfull or not status is indicated by either an Y or
              NO and the original XML filed that was currently processed, the date and user who executed the procedure.
              If the status was NO then it will insert the Oracle SQLERRM massage, into the REASON_FOR_ERROR column.
                             If status is Y then REASOK_FOR_ERROR IS NULL.
                             5,Make sure you embed the xml file with an inner and outer ' ' ie: ' the whole .xml file string ' as the input
                             parameter into the STUDLOAD procedure.
    This package excepts the whole .XML file as a CLOB as an input parameter, so that the end-user will not have
                                  modify the code.      
    Modification History:     1.6/09/2006 JImmy Harris Modified code, added the Function "WORD_CONVERTER1" to accept the requested text data and
    return a coded value back to our Welligent system.     
                                  2. Was advised that a front end type of functionality was not neccesary for this issue so I removed the INSERT_XML_FILE,
                                  UPDATE_XML_FILE and the INSERT_XML_file.
    FUNCTION WORD_CONVERTER1 (v_domain IN VARCHAR2 := null,
    v_incoming IN VARCHAR2 := null) RETURN VARCHAR2 IS
    v_well VARCHAR2(32);
    v_editdd BOOLEAN;
    v_code VARCHAR2(32);
    CURSOR C_conv_wrd IS
    SELECT WELL
    INTO v_code
    FROM CONVERSION_TABLE
    WHERE DOMAIN = UPPER(TRIM(v_domain))
    AND INCOMING = UPPER(TRIM(v_incoming));
    BEGIN
    OPEN c_conv_wrd;
    LOOP
    FETCH c_conv_wrd INTO v_code;
    EXIT WHEN c_conv_wrd%NOTFOUND;
    END LOOP;
    CLOSE c_conv_wrd;
    RETURN v_code;
    END WORD_CONVERTER1;
    PROCEDURE STUDLOAD (DOC CLOB) IS
    v_parser xmlparser.Parser;
    v_doc xmldom.DOMDocument;
    v_nl xmldom.DOMNodeList;
    v_n xmldom.DOMNode;
    v_mm NUMBER;
    v_dd NUMBER;
    v_yyyy NUMBER;
    v_DATE DATE;
    v_race VARCHAR2(1);
    v_eth VARCHAR2(1);
    v_prim_lang VARCHAR2(1);
    v_house_lang VARCHAR2(1);
    v_gender VARCHAR2(1);
    TYPE stuxml_type IS TABLE OF STUDENTS%ROWTYPE;
    s_tab stuxml_type := stuxml_type();
    v_success VARCHAR2(200);
    v_failure VARCHAR2(200);
    l_error_code varchar2(200);
    BEGIN
    -- Create a parser.
    v_parser := xmlparser.newParser;
    xmlparser.setValidationMode(v_parser, FALSE);
    -- Parse the document and create a new DOM document.
    SYS.XMLPARSER.PARSECLOB ( v_parser, DOC );
    v_doc := SYS.XMLPARSER.getDocument(v_parser);
    -- Free resources associated with the Parser now it is no longer needed.
    xmlparser.freeParser(v_parser);
    -- Get a list of all the STUD nodes in the document using the XPATH syntax.
    v_nl := xslprocessor.selectNodes(xmldom.makeNode(v_doc),'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent');
    -- Loop through the list and create a new record in a table collection for each STUD record.
    FOR stud IN 0 .. xmldom.getLength(v_nl) - 1 LOOP
    v_n := xmldom.item(v_nl, stud);
    s_tab.extend;
    -- Use XPATH syntax to assign values to he elements of the collection.
    s_tab(s_tab.last).STUDENT_LAST_NAME :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Name/LastName');
         s_tab(s_tab.last).STUDENT_FIRST_NAME :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Name/FirstName');
         s_tab(s_tab.last).STUDENT_MI :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Name/MiddleName');
         v_dd := xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/BirthDate/Day');
         v_mm := xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/BirthDate/Month');
    v_yyyy := xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/BirthDate/Year');
         v_DATE := TO_DATE(v_mm||' '||v_dd||' '||v_yyyy,'MMDDYYYY');
         s_tab(s_tab.last).STUDENT_DOB := v_date;
         s_tab(s_tab.last).STUDENT_STREET :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/Street');
         s_tab(s_tab.last).STUDENT_APART_NO :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/ApartmentNumber');
         s_tab(s_tab.last).STUDENT_COUNTY :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/County');
         s_tab(s_tab.last).STUDENT_STATE :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/State');
         s_tab(s_tab.last).STUDENT_ZIP :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/ZipCode');
    v_race := WORD_CONVERTER1('RACE',UPPER(xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Race')));
         v_eth := WORD_CONVERTER1('EHTNICITY',UPPER(xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Ethnicity')));
         v_prim_lang:= WORD_CONVERTER1('PRIMARY_LANG',UPPER(xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/PrimaryLanguage')));
         v_house_lang:= WORD_CONVERTER1('SECONDARY_LANG',UPPER(xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/HouseholdLanguage')));
         v_gender := WORD_CONVERTER1('GENDER',UPPER(xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Gender')));
    s_tab(s_tab.last).STUDENT_RACE := v_race;
         s_tab(s_tab.last).STUDENT_ETHNIC := v_eth;
         s_tab(s_tab.last).STUDENT_PRI_LANG :=v_prim_lang;
         s_tab(s_tab.last).STUDENT_SEC_LANG := v_house_lang;
         s_tab(s_tab.last).STUDENT_GENDER :=v_gender;
    END LOOP;
    FOR stud IN s_tab.first..s_tab.last LOOP
    INSERT INTO STUDENTS (SHISID, SSN, DOE_SCHOOL_NUMBER,PATIENT_TYPE, TEACHER, HOMEROOM,STUDENT_LAST_NAME, STUDENT_FIRST_NAME, STUDENT_MI,STUDENT_DOB,
    STUDENT_BIRTH_CERT, STUDENT_COMM,STUDENT_MUSA, STUDENT_FAMSIZE, STUDENT_FAMINCOME,STUDENT_UNINSURED, STUDENT_LUNCH, STUDENT_ZIP,STUDENT_STATE,
    STUDENT_COUNTY, STUDENT_STREET,STUDENT_APART_NO, STUDENT_PHONE, STUDENT_H2O_TYPE,STUDENT_WASTE_TRT, STUDENT_HOME_SET, STUDENT_NONHOME_SET,
    STUDENT_GENDER, STUDENT_RACE, STUDENT_ETHNIC,STUDENT_PRI_LANG, STUDENT_SEC_LANG, STUDENT_ATRISK,EMER_COND_MEMO, ASSIST_DEVICE_TYPE,
    SCHOOL_ENTER_AGE,STUDENT_CURR_GRADE, S504_ELIG_DATE, S504_DEV_DATE,S504_REV_DATE, STUDENT_504, STUDENT_IEP,IEP_EXP_DATE, GRAD_CLASS, TYPE_DIPLOMA,
    GRADE_RETAIN, LIT_PASS_TEST_MATH, LIT_PASS_DATE_MATH,LIT_PASS_TEST_WRITE, LIT_PASS_DATE_WRITE, LIT_PASS_TEST_READ,LIT_PASS_DATE_READ, SPEC_ED_ELIG,
    SPEC_ED_CODE,TRANSPORT_CODE, TRANSPORT_NO, PRIME_HANDICAP,PRIME_HANDICAP_PERCENT, PRIME_HANDI_MANAGER, FIRST_ADD_HANDI,FIRST_ADD_HANDICAP_PERCENT,
    FIRST_ADD_HANDI_504, FIRST_ADD_HANDI_504_DATE, SECOND_ADD_HANDI, SECOND_ADD_HANDICAP_PERCENT, MED_EXTERNAL_NAME, INS_TYPE, INS_PRI, INS_NAME,
    INS_MEDICAID_NO, ELIGDATE, INS_PRIV_INSURANCE, INS_APPR_BILL, INS_APPR_DATE, INS_PARENT_APPR,INS_POL_NAME, INS_POL_NO, INS_CARRIER_NO,
    INS_CARRIER_NAME, INS_CARRIER_RELATE, INS_AFFECT_DATE, INS_COPAY_OV, INS_COPAY_RX, INS_COPAY_AMBUL,INS_COPAY_EMER, INS_COPAY_OUTPAT,STUDENT_INACTIVE,
    PHYS_ID, ENCOUNTERNUM,USERID,MODDATE, STUDENT_ID, S504_DISABILITY,CHAPTER1, WELLNESS_ENROLL, SCHOOL_OF_RESIDENCE,INITIAL_IEP_DATE, CALENDAR_TRACK,
    USA_BORN,ALT_ID, FUTURE_SCHOOL, IEP_LAST_MEETING,IEP_LAST_SETTING, IEP_LAST_REFER_EVAL, THIRD_ADD_HANDI,LEP, GIFTED, IEP_EXIT_REASON,
    CASE_MANAGER_ID, INTAKE_NOTES, CALLER_PHONE,CALL_DATE, CALLER_RELATIONSHIP, CALLER_NAME,BUSINESS_PHONE, FAX, EMAIL,HIGHEST_EDUCATION, INTAKE_DATE,
    SERVICE_COORDINATOR, DISCHARGE_DATE, DISCHARGE_REASON, DISCHARGE_NOTES,INTAKE_BY, INTAKE_STATUS, IEP_LAST_SERVED_DATE,IEP_APC_DATE, IEP_EXIT_DATE,
    ADDRESS2, LEGAL_STATUS, RELIGION, EMPLOYMENT_STATUS, TARG_POP_GROUP1, TARG_POP_GROUP2, MARITAL_STATUS,THIRD_ADD_HANDI_PERCENT, LAST_INTERFACE_DATE,
    SERVICE_PLAN_TYPE,CURRENT_JURISDICTION, FIPS, BIRTH_PLACE_JURISDICTION,BIRTH_PLACE_HOSPITAL, BIRTH_PLACE_STATE, BIRTH_PLACE_COUNTRY,
    OTHER_CLIENT_NAME, SIBLINGS_WITH_SERVICES, PERM_SHARE_INFORMATION,PERM_VERIFY_INSURANCE, REFERRING_AGENCY, REFERRING_INDIVIDUAL,AUTOMATIC_ELIGIBILITY,
    INTAKE_IEP_ID, FUTURE_SCHOOL2,FUTURE_SCHOOL3, TRANSLATOR_NEEDED, TOTAL_CHILDREN_IN_HOME,REFERRED_BY, FAMILY_ID, SCREENING_CONSENT_FLAG,PICTURE_FILE,
    DUAL_ENROLLED, DOE_SCHOOL_NUMBER2)
    VALUES (123456789025, null,null ,null,null,null ,s_tab(stud).STUDENT_LAST_NAME,s_tab(stud).STUDENT_FIRST_NAME,s_tab(stud).STUDENT_MI,
    s_tab(stud).STUDENT_DOB,null ,null,null ,null,null,null,null,s_tab(stud).STUDENT_ZIP,s_tab(stud).STUDENT_STATE ,s_tab(stud).STUDENT_COUNTY,
    s_tab(stud).STUDENT_STREET,s_tab(stud).STUDENT_APART_NO,null,null,null ,null , null,
    s_tab(stud).STUDENT_GENDER ,s_tab(stud).STUDENT_RACE , s_tab(stud).STUDENT_ETHNIC,
    s_tab(stud).STUDENT_PRI_LANG ,s_tab(stud).STUDENT_SEC_LANG, null, null ,null , null,
    null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null,
    null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null,
    null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null,
    null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null,
    null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null,
    null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null ,null , null, null, null,null );
    END LOOP;
    INSERT INTO AUDIT_XMLSTUD1(XMLSTUDPK,USERID,XMLFILE,STATUS,REASON_FOR_ERROR,DATE_MODIFIED)
    VALUES(SEQ_XMLSTUD1.NEXTVAL,USER,DOC,'Y',NULL,SYSDATE);
    HTP.HTMLOPEN;
    v_success:= 'The values from the .XML file have been successfully inserted into the STUDENTS table in the Oracle Database.';
    htp.bold(v_success);
    HTP.HTMLCLOSE;
    COMMIT;
    -- Free any resources associated with the document now it that it is no longer needed.
    xmldom.freeDocument(v_doc);
    EXCEPTION
    WHEN OTHERS THEN
    l_error_code := SQLERRM;
    INSERT INTO AUDIT_XMLSTUD1(XMLSTUDPK,USERID,XMLFILE,STATUS,REASON_FOR_ERROR,DATE_MODIFIED)
    VALUES(SEQ_XMLSTUD1.NEXTVAL,USER,nvl(DOC,TO_CLOB('No .XML file entered, user pressed button without entering correct information.')),'NO',l_error_code,SYSDATE);
    HTP.HTMLOPEN;
    v_failure:= 'The attempt made to insert files to the Student table has failed because,'||l_error_code;
    htp.bold(v_failure);
    HTP.HTMLCLOSE;
    COMMIT;
    END STUDLOAD;
    PROCEDURE UPDSTUDLOAD (DOC CLOB) IS
    v_parser xmlparser.Parser;
    v_doc xmldom.DOMDocument;
    v_nl xmldom.DOMNodeList;
    v_n xmldom.DOMNode;
    v_mm NUMBER;
    v_dd NUMBER;
    v_yyyy NUMBER;
    v_DATE DATE;
    v_race VARCHAR2(1);
    v_eth VARCHAR2(1);
    v_prim_lang VARCHAR2(1);
    v_house_lang VARCHAR2(1);
    v_gender VARCHAR2(1);
    TYPE stuxml_type IS TABLE OF STUDENTS%ROWTYPE;
    s_tab stuxml_type := stuxml_type();
    v_success VARCHAR2(200);
    v_failure VARCHAR2(200);
    l_error_code varchar2(200);
    BEGIN
    -- Create a parser.
    v_parser := xmlparser.newParser;
    xmlparser.setValidationMode(v_parser, FALSE);
    -- Parse the document and create a new DOM document.
    SYS.XMLPARSER.PARSECLOB ( v_parser, DOC );
    v_doc := SYS.XMLPARSER.getDocument(v_parser);
    -- Free resources associated with the Parser now it is no longer needed.
    xmlparser.freeParser(v_parser);
    -- Get a list of all the STUD nodes in the document using the XPATH syntax.
    v_nl := xslprocessor.selectNodes(xmldom.makeNode(v_doc),'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent');
    -- Loop through the list and create a new record in a table collection for each STUD record.
    FOR stud IN 0 .. xmldom.getLength(v_nl) - 1 LOOP
    v_n := xmldom.item(v_nl, stud);
    s_tab.extend;
    -- Use XPATH syntax to assign values to he elements of the collection.
    s_tab(s_tab.last).STUDENT_LAST_NAME :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Name/LastName');
         s_tab(s_tab.last).STUDENT_FIRST_NAME :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Name/FirstName');
         s_tab(s_tab.last).STUDENT_MI :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Name/MiddleName');
         v_dd := xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/BirthDate/Day');
         v_mm := xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/BirthDate/Month');
    v_yyyy := xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/BirthDate/Year');
         v_DATE := TO_DATE(v_mm||' '||v_dd||' '||v_yyyy,'MMDDYYYY');
         s_tab(s_tab.last).STUDENT_DOB := v_date;
         s_tab(s_tab.last).STUDENT_STREET :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/Street');
         s_tab(s_tab.last).STUDENT_APART_NO :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/ApartmentNumber');
         s_tab(s_tab.last).STUDENT_COUNTY :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/County');
         s_tab(s_tab.last).STUDENT_STATE :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/State');
         s_tab(s_tab.last).STUDENT_ZIP :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/ZipCode');
    v_race := WORD_CONVERTER1('RACE',UPPER(xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Race')));
         v_eth := WORD_CONVERTER1('EHTNICITY',UPPER(xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Ethnicity')));
         v_prim_lang:= WORD_CONVERTER1('PRIMARY_LANG',UPPER(xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/PrimaryLanguage')));
         v_house_lang:= WORD_CONVERTER1('SECONDARY_LANG',UPPER(xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/HouseholdLanguage')));
         v_gender := WORD_CONVERTER1('GENDER',UPPER(xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Gender')));
    s_tab(s_tab.last).STUDENT_RACE := v_race;
         s_tab(s_tab.last).STUDENT_ETHNIC := v_eth;
         s_tab(s_tab.last).STUDENT_PRI_LANG :=v_prim_lang;
         s_tab(s_tab.last).STUDENT_SEC_LANG := v_house_lang;
         s_tab(s_tab.last).STUDENT_GENDER :=v_gender;
    END LOOP;
    FOR stud IN s_tab.first..s_tab.last LOOP
         UPDATE STUDENTS
         SET
         STUDENT_LAST_NAME = s_tab(stud).STUDENT_LAST_NAME,
         STUDENT_FIRST_NAME = s_tab(stud).STUDENT_FIRST_NAME,
         STUDENT_MI = s_tab(stud).STUDENT_MI,
         STUDENT_DOB = s_tab(stud).STUDENT_DOB,
         STUDENT_ZIP = s_tab(stud).STUDENT_ZIP,
         STUDENT_STATE = s_tab(stud).STUDENT_STATE,
         STUDENT_COUNTY = s_tab(stud).STUDENT_COUNTY,
         STUDENT_STREET = s_tab(stud).STUDENT_STREET,
         STUDENT_APART_NO = s_tab(stud).STUDENT_APART_NO
         WHERE SHISID = 123456789025;
    END LOOP;
    INSERT INTO AUDIT_XMLSTUD1(XMLSTUDPK,USERID,XMLFILE,STATUS,REASON_FOR_ERROR,DATE_MODIFIED)
    VALUES(SEQ_XMLSTUD1.NEXTVAL,USER,DOC,'Y',NULL,SYSDATE);
    HTP.HTMLOPEN;
    v_success:= 'The updated .XML file has been successfully saved to the STUDENTS table in the Oracle Database.';
    htp.bold(v_success);
    HTP.HTMLCLOSE;
    COMMIT;
    -- Free any resources associated with the document now it that it is no longer needed.
    xmldom.freeDocument(v_doc);
    EXCEPTION
    WHEN OTHERS THEN
    l_error_code := SQLERRM;
    INSERT INTO AUDIT_XMLSTUD1(XMLSTUDPK,USERID,XMLFILE,STATUS,REASON_FOR_ERROR,DATE_MODIFIED)
    VALUES(SEQ_XMLSTUD1.NEXTVAL,USER,nvl(DOC,TO_CLOB('No .XML file entered, user pressed button without entering correct information.')),'NO',l_error_code,SYSDATE);
    HTP.HTMLOPEN;
    v_failure:= 'The attempt made to insert files to the Student table has failed because,'||l_error_code;
    htp.bold(v_failure);
    HTP.HTMLCLOSE;
    COMMIT;
    END UPDSTUDLOAD;
    PROCEDURE DELSTUDLOAD (DOC CLOB) IS
    v_parser xmlparser.Parser;
    v_doc xmldom.DOMDocument;
    v_nl xmldom.DOMNodeList;
    v_n xmldom.DOMNode;
    v_mm NUMBER;
    v_dd NUMBER;
    v_yyyy NUMBER;
    v_DATE DATE;
    TYPE stuxml_type IS TABLE OF STUDENTS%ROWTYPE;
    s_tab stuxml_type := stuxml_type();
    v_success VARCHAR2(200);
    v_failure VARCHAR2(200);
    l_error_code varchar2(200);
    BEGIN
    -- Create a parser.
    v_parser := xmlparser.newParser;
    xmlparser.setValidationMode(v_parser, FALSE);
    -- Parse the document and create a new DOM document.
    SYS.XMLPARSER.PARSECLOB ( v_parser, DOC );
    v_doc := SYS.XMLPARSER.getDocument(v_parser);
    -- Free resources associated with the Parser now it is no longer needed.
    xmlparser.freeParser(v_parser);
    -- Get a list of all the STUD nodes in the document using the XPATH syntax.
    v_nl := xslprocessor.selectNodes(xmldom.makeNode(v_doc),'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent');
    -- Loop through the list and create a new record in a table collection for each STUD record.
    FOR stud IN 0 .. xmldom.getLength(v_nl) - 1 LOOP
    v_n := xmldom.item(v_nl, stud);
    s_tab.extend;
    -- Use XPATH syntax to assign values to he elements of the collection.
    s_tab(s_tab.last).STUDENT_LAST_NAME :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Name/LastName');
         s_tab(s_tab.last).STUDENT_FIRST_NAME :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Name/FirstName');
         s_tab(s_tab.last).STUDENT_MI :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Name/MiddleName');
         v_dd := xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/BirthDate/Day');
         v_mm := xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/BirthDate/Month');
    v_yyyy := xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/BirthDate/Year');
         v_DATE := TO_DATE(v_mm||' '||v_dd||' '||v_yyyy,'MMDDYYYY');
         s_tab(s_tab.last).STUDENT_DOB := v_date;
         s_tab(s_tab.last).STUDENT_STREET :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/Street');
         s_tab(s_tab.last).STUDENT_APART_NO :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/ApartmentNumber');
         s_tab(s_tab.last).STUDENT_COUNTY :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/County');
         s_tab(s_tab.last).STUDENT_STATE :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/State');
         s_tab(s_tab.last).STUDENT_ZIP :=xslprocessor.valueOf(v_n,'/com.welligent.Student.BasicStudent.Create/DataArea/NewData/BasicStudent/Address/ZipCode');
    END LOOP;
    FOR stud IN s_tab.first..s_tab.last LOOP
         DELETE FROM STUDENTS
         WHERE SHISID = 123456789025;
    END LOOP;
    INSERT INTO AUDIT_XMLSTUD1(XMLSTUDPK,USERID,XMLFILE,STATUS,REASON_FOR_ERROR,DATE_MODIFIED)
    VALUES(SEQ_XMLSTUD1.NEXTVAL,USER,DOC,'Y',NULL,SYSDATE);
    HTP.HTMLOPEN;
    v_success:= 'The .XML file has been successfully deleted from the STUDENTS table in the Oracle Database.';
    htp.bold(v_success);
    HTP.HTMLCLOSE;
    COMMIT;
    -- Free any resources associated with the document now it that it is no longer needed.
    xmldom.freeDocument(v_doc);
    EXCEPTION
    WHEN OTHERS THEN
    l_error_code := SQLERRM;
    INSERT INTO AUDIT_XMLSTUD1(XMLSTUDPK,USERID,XMLFILE,STATUS,REASON_FOR_ERROR,DATE_MODIFIED)
    VALUES(SEQ_XMLSTUD1.NEXTVAL,USER,nvl(DOC,TO_CLOB('No .XML file entered, user pressed button without entering correct information.')),'NO',l_error_code,SYSDATE);
    HTP.HTMLOPEN;
    v_failure:= 'The attempt made to insert files to the Student table has failed because,'||l_error_code;
    htp.bold(v_failure);
    HTP.HTMLCLOSE;
    COMMIT;
    END DELSTUDLOAD;
    END XMLSTUD6;

    Try opening the problem files using a text editor or file viewer to see what the first few bytes contain. All valid FM binary files for FM 11 will contain <MakerFile 11.0> in the first bytes of the file.
    When updating books, it's sometimes better to just to create a new book file and add the files to that.
    When renaming files in a book, changes at the system level will break any links/cross-references between files, so it's always best to use the Rename option in the Book file to change FM file names. This will maintain the correct linkages.

  • How to parse an XMl without using prefix in the namespace and elements?

    Hi
    The following is a sample of the xml that I need to parse.
    Without the prefix in the namespace section I am getting an error but when i just put in the prefix it works fine. Any help here would be greatly appreciated.
    I think i need to change something in the parser set up...may be the somewhere in the bolded lines....but i am clueless...
    //Xml begins
    <?xml version="1.0" encoding="utf-8" ?>
    - <Statemessages xsi:schemaLocation="http://www.SomeLocation.com/SomeXSD.xsd" xmlns="http://www.abcd.com/BSN" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    - <FileControl>
    <CreationDate>2008-08-11</CreationDate>
    - <Source>
    <SystemID>SAP4BSN</SystemID>
    <MandantID>100</MandantID>
    </Source>
    - <Destination>
    <SystemID>CWL</SystemID>
    <MandantID>746</MandantID>
    </Destination>
    <SequenceNumber>000000004</SequenceNumber>
    <Counter>000000001</Counter>
    </FileControl>
    - <Message>
    - <PartyRegistrationID>
    <ID>2101576347</ID>
    <Type>RG</Type>
    <ID>2101576347</ID>
    <Type>AG</Type>
    </PartyRegistrationID>
    <CustomerGroupID>02</CustomerGroupID>
    <Name>Lewicki</Name>
    <Subname>Hans Bruno Michel</Subname>
    <DateTime>2008-08-11T23:59:59</DateTime>
    - <DefaultOfPayment>
    <MessageID>00000001</MessageID>
    <GrossAmountBefore>0.0</GrossAmountBefore>
    <GrossAmountCurrent>-17.9</GrossAmountCurrent>
    <Currency>EUR</Currency>
    <SettlementOfBalance>Nein</SettlementOfBalance>
    <IncludingSubsidiaryClaim>Ja</IncludingSubsidiaryClaim>
    </DefaultOfPayment>
    - <ContractsWithDefaultOfPayment>
    <ContractID>0148863732</ContractID>
    </ContractsWithDefaultOfPayment>
    - <Messagedetails>
    - <ReturnDebitNote>
    <MessageID>00000002</MessageID>
    <KindOf>BA</KindOf>
    <Reason>E2</Reason>
    <Date>2008-08-11</Date>
    <GrossAmount>-15.4</GrossAmount>
    <Currency>EUR</Currency>
    </ReturnDebitNote>
    </Messagedetails>
    </Message>
    </Statemessages>
    //XML end
    I am using the following stored procedure to try this;
    create or replace PROCEDURE CompleteSaveXML_1 AS
    XMLMessage2 XMLTYPE;
    v_parser dbms_xmlparser.Parser;
    v_clob CLOB;
    v_sent DATE;
    v_doc xmldom.DOMDocument;
    v_nl xmldom.DOMNodeList;
    v_nFCL xmldom.DOMNodeList;
    v_nFCN xmldom.DOMNode;
    v_nFCSourceL xmldom.DOMNodeList;
    v_nFCSourceN xmldom.DOMNode;
    v_nFCDestinationL xmldom.DOMNodeList;
    v_nFCDestinationN xmldom.DOMNode;
    m_nl xmldom.DOMNodeList;
    m_n xmldom.DOMNode;
    v_n xmldom.DOMNode;
    v_n3 xmldom.DOMNodeList;
    v_n4 xmldom.DOMNode;
    v_b xmldom.DOMNode;
    v_d xmldom.DOMNode;
    v_a xmldom.DOMNodeList;
    v_c xmldom.DOMNodeList;
    m_prg xmldom.DOMNodeList;
    m_pr xmldom.DOMNode;
    condf_nl xmldom.DOMNodeList;
    condf_n xmldom.DOMNode;
    msgdtl_nl xmldom.DOMNodeList;
    msgdtl_n xmldom.DOMNode;
    rtndbt_nl xmldom.DOMNodeList;
    rtndbt_n xmldom.DOMNode;
    dnlt_nl xmldom.DOMNodeList;
    dnlt_n xmldom.DOMNode;
    cancl_nl xmldom.DOMNodeList;
    cancl_n xmldom.DOMNode;
    conid_nl xmldom.DOMNodeList;
    conid_n xmldom.DOMNode;
    canclid_nl xmldom.DOMNodeList;
    canclid_n xmldom.DOMNode;
    par_ref number(10) :=0;
    msgnum number(20):=0;
    var1 number(30):=0;
    rtnnum number(20):=0;
    dnnum number(20):=0;
    tpmsg number(20):=0;
    condfpmt number(20):=0;
    canclnum number(20):=0;
    --Added the next variable
    sequence_no     number(20):=0;
    --These are the new variables
    condfpmt1 number(20):=0;
    rtnnum1 number(20):=0;
    dnnum1 number(20):=0;
    tpmsg1 number(20):=0;
    canclnum1 number(20):=0;
    --changing
    part_refid_value number(20);
    parid_typ_n xmldom.DOMNode;
    parid_typ_nl xmldom.DOMNodeList;
    parid_id_nl xmldom.DOMNodeList;
    parid_id_n     xmldom.DOMNode;
    party_ref_node xmldom.DOMNode;
    var_pr_reg_typ VARCHAR2(2);
    msgrtdbt_nl xmldom.DOMNodeList;
    msgrtdbt_n xmldom.DOMNode;
    kndrtdbt_nl xmldom.DOMNodeList;
    kndrtdbt_n xmldom.DOMNode;
    rsnrtdbt_nl xmldom.DOMNodeList;
    rsnrtdbt_n xmldom.DOMNode;
    datrtdbt_nl xmldom.DOMNodeList;
    datrtdbt_n xmldom.DOMNode;
    grssrtdbt_nl xmldom.DOMNodeList;
    grssrtdbt_n xmldom.DOMNode;
    currtdbt_nl xmldom.DOMNodeList;
    currtdbt_n xmldom.DOMNode;
    rtnnum2 number(20):=0;
    msgdnlt_nl xmldom.DOMNodeList;
    msgdnlt_n xmldom.DOMNode;
    lvdnlt_nl xmldom.DOMNodeList;
    lvdnlt_n xmldom.DOMNode;
    datdnlt_nl xmldom.DOMNodeList;
    datdnlt_n xmldom.DOMNode;
    grsdnlt_nl xmldom.DOMNodeList;
    grsdnlt_n xmldom.DOMNode;
    curdnlt_nl xmldom.DOMNodeList;
    curdnlt_n xmldom.DOMNode;
    limdnlt_nl xmldom.DOMNodeList;
    limdnlt_n xmldom.DOMNode;
    lvimp number(20);
    nullchk varchar2(30) ;
    chk_flseq number(10);
    fl_seq number(30);
    --these are the new variables
    TYPE tab_type IS TABLE OF FileControl%ROWTYPE;
    t_tab_FC tab_type := tab_type();
    TYPE tab_type1 IS TABLE OF MessageTab%ROWTYPE;
    t_tab1 tab_type1 := tab_type1();
    TYPE tab_type2 IS TABLE OF ContractsWithDefaultOfPayment%ROWTYPE;
    t_tab2 tab_type2 := tab_type2();
    TYPE tab_type3 IS TABLE OF CancellationTab%ROWTYPE;
    t_tab3 tab_type3 := tab_type3();
    TYPE tab_type4 IS TABLE OF ReturnDebitNoteTab%ROWTYPE;
    t_tab4 tab_type4 := tab_type4();
    TYPE tab_type5 IS TABLE OF DunningLettersTab%ROWTYPE;
    t_tab5 tab_type5 := tab_type5();
    cursor MessageCursor is
    select * from OM_BSN_STATEMSGS
    where PROCESSED is null AND SENT in(Select min(SENT) from OM_BSN_STATEMSGS
    where PROCESSED is null)
    order by sent asc;
    v_statemsgs OM_BSN_STATEMSGS%ROWTYPE;
    BEGIN
    DBMS_OUTPUT.put_line('creating parser');
    -- v_parser := DBMS_XMLPARSER.NEWPARSER;
    v_parser := DBMS_XMLPARSER.NEWPARSER();
    DBMS_OUTPUT.put_line('done creating');
    DBMS_XMLPARSER.setValidationMode(v_parser, true);
    DBMS_XMLPARSER.showWarnings(v_parser, true);
    open MessageCursor;
    loop
    fetch MessageCursor into v_statemsgs;
    exit when MessageCursor%NOTFOUND;
    DBMS_XMLPARSER.PARSECLOB(P => v_parser, DOC => v_statemsgs.MESSAGE);
    -- xmlparser.parse(v_parser, File_Location);
    v_doc := xmlparser.getDocument(v_parser);
    dbms_xmlparser.freeParser(v_parser); DBMS_OUTPUT.put_line('Step 1');
    v_nFCL := xslprocessor.selectNodes(xmldom.makeNode(v_doc),'/Statemessages/FileControl');
    v_nFCN := xmldom.item(v_nFCL,0);
    Source
    v_nFCSourceL := xslprocessor.selectNodes(xmldom.makeNode(v_doc),'/Statemessages/FileControl/Source');
    v_nFCSourceN := xmldom.item(v_nFCSourceL,0);
    Destination
    v_nFCDestinationL := xslprocessor.selectNodes(xmldom.makeNode(v_doc),'/Statemessages/FileControl/Destination');
    v_nFCDestinationN := xmldom.item(v_nFCDestinationL,0);
    -- Populate tab type for ORFC
    t_tab_FC.extend;
    t_tab_FC(t_tab_FC.last).creation_date := to_date(xslprocessor.valueOf(v_nFCN,'CreationDate'),'YYYY-MM-DD');
    t_tab_FC(t_tab_FC.last).src_sys_id := xslprocessor.valueOf(v_nFCSourceN,'SystemID');
    t_tab_FC(t_tab_FC.last).src_mandant_id := xslprocessor.valueOf(v_nFCSourceN,'MandantID');
    t_tab_FC(t_tab_FC.last).dest_sys_id := xslprocessor.valueOf(v_nFCDestinationN,'SystemID');
    t_tab_FC(t_tab_FC.last).dest_mandant_id := xslprocessor.valueOf(v_nFCDestinationN,'MandantID');
    t_tab_FC(t_tab_FC.last).seq_no := xslprocessor.valueOf(v_nFCN,'SequenceNumber');
    t_tab_FC(t_tab_FC.last).counter := xslprocessor.valueOf(v_nFCN,'Counter');
    --Saving the value of this seq_no so that it can be inserted in the message tab.
    sequence_no:= xslprocessor.valueOf(v_nFCN,'SequenceNumber');
    --Insert into ORFC TAB
    fl_seq := xslprocessor.valueOf(v_nFCN,'SequenceNumber');
    select count(*) into chk_flseq from FileControl where SEQ_NO =fl_seq;
    if (chk_flseq =0) then
    FOR each_FC IN t_tab_FC.first .. t_tab_FC.last LOOP
    INSERT INTO FileControl
    creation_date,
    src_sys_id,
    src_mandant_id,
    dest_sys_id,
    dest_mandant_id,
    seq_no,
    counter)
    VALUES
    t_tab_FC(each_FC).creation_date,
    t_tab_FC(each_FC).src_sys_id ,
    t_tab_FC(each_FC).src_mandant_id,
    t_tab_FC(each_FC).dest_sys_id,
    t_tab_FC(each_FC).dest_mandant_id,
    t_tab_FC(each_FC).seq_no,
    t_tab_FC(each_FC).counter
    END LOOP;
    end if;
    DBMS_OUTPUT.put_line('Step 2');
    if (chk_flseq =0) then /* chk the xml's filecontrol seq exists in filecontrltab */
    -- Use XPATH syntax to assign values to he elements of the collection.
    v_nl := xslprocessor.selectNodes(xmldom.makeNode(v_doc),'/Statemessages/Message');
    tpmsg := xmldom.getLength(v_nl);
    DBMS_OUTPUT.put_line('Message node length'||tpmsg);
    if (tpmsg>0) then
    FOR cur_emp IN 0 .. xmldom.getLength(v_nl) - 1 LOOP
    v_n := xmldom.item(v_nl, cur_emp);
    select (BISON_OM_MessageID.NEXTVAL) into var1 from dual;
    t_tab1.extend;
    t_tab1(t_tab1.last).message_id := var1;
    t_tab1(t_tab1.last).seq_no     := sequence_no;
    ---party reg
    m_prg := xslprocessor.selectNodes(v_n,'PartyRegistrationID');
    FOR Ref_Id_Loop IN 0 .. xmldom.getLength(m_prg) - 1 LOOP
    party_ref_node := xmldom.item(m_prg,0);
    part_refid_value := xslprocessor.valueOf(party_ref_node,'.');
    end loop;
    m_pr := xmldom.item(m_prg, 0);
    --changing
    --chang id
    parid_id_nl := xslprocessor.selectNodes(m_pr,'ID');
    DBMS_OUTPUT.put_line('Going to read PartyRegistrationID');
    FOR cur_parid_id IN 0 .. xmldom.getLength(parid_id_nl) - 1 LOOP
    parid_id_n := xmldom.item(parid_id_nl,cur_parid_id);
    DBMS_OUTPUT.put_line('Value of id:'|| xslprocessor.valueOf(parid_id_n,'.'));
    t_tab1(t_tab1.last).party_ref_id := xslprocessor.valueOf(parid_id_n,'.');
    exit;
    end loop ;
    ---- change id
    parid_typ_nl := xslprocessor.selectNodes(m_pr,'Type');
    FOR cur_parid_typ IN 0 .. xmldom.getLength(parid_typ_nl) - 1 LOOP
    parid_typ_n := xmldom.item(parid_typ_nl,cur_parid_typ);
    var_pr_reg_typ := xslprocessor.valueOf(parid_typ_n,'.');
    if var_pr_reg_typ='RG' then
    t_tab1(t_tab1.last).PARTY_REG_TYPE_RG := var_pr_reg_typ;
    elsif var_pr_reg_typ='AG' then
    t_tab1(t_tab1.last).PARTY_REG_TYPE_AG := var_pr_reg_typ;
    end if;
    end loop;
    --Chang
    -- t_tab1(t_tab1.last).PARTY_REG_TYPE_AG := xslprocessor.valueOf(m_pr,'Type');
    par_ref :=xslprocessor.valueOf(m_pr,'ID');
    t_tab1(t_tab1.last).customer_grp_id := xslprocessor.valueOf(v_n,'CustomerGroupID');
    t_tab1(t_tab1.last).name := xslprocessor.valueOf(v_n,'Name');
    t_tab1(t_tab1.last).subname := xslprocessor.valueOf(v_n,'Subname');
    t_tab1(t_tab1.last).datetime := xslprocessor.valueOf(v_n,'DateTime');
    DBMS_OUTPUT.put_line('Step 3 ContractsWithDefaultOfPayment');
    m_nl := xslprocessor.selectNodes(v_n,'DefaultOfPayment');
    m_n := xmldom.item(m_nl, 0);
    t_tab1(t_tab1.last).payment_msg_id := xslprocessor.valueOf(m_n,'MessageID');
    t_tab1(t_tab1.last).gross_amt_before := xslprocessor.valueOf(m_n,'GrossAmountBefore');
    t_tab1(t_tab1.last).gross_amt_current := xslprocessor.valueOf(m_n,'GrossAmountCurrent');
    t_tab1(t_tab1.last).currency := xslprocessor.valueOf(m_n,'Currency');
    t_tab1(t_tab1.last).settlemen_of_balance := xslprocessor.valueOf(m_n,'SettlementOfBalance');
    t_tab1(t_tab1.last).including_subsidiary_claim := xslprocessor.valueOf(m_n,'IncludingSubsidiaryClaim');
    condf_nl := xslprocessor.selectNodes(v_n,'ContractsWithDefaultOfPayment');
    condf_n := xmldom.item(condf_nl,0);
    condfpmt := xmldom.getLength(condf_nl);
    if (condfpmt > 0) then
    conid_nl := xslprocessor.selectNodes(condf_n,'ContractID');
    FOR cur_conid IN 0 .. xmldom.getLength(conid_nl) - 1 LOOP
    conid_n := xmldom.item(conid_nl,cur_conid);
    t_tab2.extend;
    t_tab2(t_tab2.last).message_id := var1;
    t_tab2(t_tab2.last).contract_id := xslprocessor.valueOf(conid_n,'.');
    end loop;
    condfpmt1 := 1;
    end if;
    cancl_nl := xslprocessor.selectNodes(v_n,'Cancellation');
    cancl_n := xmldom.item(cancl_nl,0);
    DBMS_OUTPUT.put_line('No of cancellations'||xmldom.getLength(cancl_nl) );
    canclnum := xmldom.getLength(cancl_nl) ;
    if (canclnum > 0) then
    canclid_nl := xslprocessor.selectNodes(cancl_n,'MessageID');
    FOR cur_canclid IN 0 .. xmldom.getLength(canclid_nl) - 1 LOOP
    canclid_n := xmldom.item(canclid_nl,cur_canclid);
    t_tab3.extend;
    t_tab3(t_tab3.last).message_id := var1;
    t_tab3(t_tab3.last).cancellation_msg_id := xslprocessor.valueOf(canclid_n,'.');
    end loop;
    canclnum1 :=1;
    end if; -- canclnum
    msgdtl_nl := xslprocessor.selectNodes(v_n,'Messagedetails');
    msgnum := xmldom.getLength(msgdtl_nl) ;
    dbms_output.put_line('msgggg::::'||msgnum);
    if (msgnum >0) then
    msgdtl_n := xmldom.item(msgdtl_nl,0);
    rtndbt_nl := xslprocessor.selectNodes(msgdtl_n,'ReturnDebitNote');
    rtndbt_n := xmldom.item(rtndbt_nl,0);
    rtnnum := xmldom.getLength(rtndbt_nl) ;
    if (rtnnum >0) then
    --return debit note
    msgrtdbt_nl := xslprocessor.selectNodes(rtndbt_n,'MessageID');
    kndrtdbt_nl := xslprocessor.selectNodes(rtndbt_n,'KindOf');
    rsnrtdbt_nl := xslprocessor.selectNodes(rtndbt_n,'Reason');
    datrtdbt_nl := xslprocessor.selectNodes(rtndbt_n,'Date');
    grssrtdbt_nl := xslprocessor.selectNodes(rtndbt_n,'GrossAmount');
    currtdbt_nl := xslprocessor.selectNodes(rtndbt_n,'Currency');
    rtnnum2 :=0;
    FOR cur_msgrtndbt IN 0 .. xmldom.getLength(msgrtdbt_nl) - 1 LOOP
    msgrtdbt_n := xmldom.item(msgrtdbt_nl,cur_msgrtndbt);
    kndrtdbt_n := xmldom.item(kndrtdbt_nl,cur_msgrtndbt);
    rsnrtdbt_n := xmldom.item(rsnrtdbt_nl,cur_msgrtndbt);
    datrtdbt_n := xmldom.item(datrtdbt_nl,cur_msgrtndbt);
    grssrtdbt_n := xmldom.item(grssrtdbt_nl,cur_msgrtndbt);
    currtdbt_n := xmldom.item(currtdbt_nl,cur_msgrtndbt);
    t_tab4.extend;
    t_tab4(t_tab4.last).message_id := var1;
    t_tab4(t_tab4.last).ret_debitnote_msg_id := xslprocessor.valueOf(msgrtdbt_n,'.');
    t_tab4(t_tab4.last).kind_of := xslprocessor.valueOf(kndrtdbt_n,'.');
    t_tab4(t_tab4.last).Reason := xslprocessor.valueOf(rsnrtdbt_n,'.');
    t_tab4(t_tab4.last).debit_note_date := to_date(xslprocessor.valueOf(datrtdbt_n,'.'),'YYYY-MM-DD');
    t_tab4(t_tab4.last).gross_amt := xslprocessor.valueOf(grssrtdbt_n,'.');
    t_tab4(t_tab4.last).currency := xslprocessor.valueOf(currtdbt_n,'.');
    rtnnum1 :=rtnnum1 + 1;
    rtnnum2 := rtnnum2 + 1;
    dbms_output.put_line('message_id::::'||var1);
    dbms_output.put_line('rtnnum2::::'||rtnnum2);
    dbms_output.put_line('ret_debitnote_msg_id:::'||t_tab4(t_tab4.last).ret_debitnote_msg_id);
    end loop;
    ----return debit note
    t_tab4(t_tab4.last).message_id := var1 ;
    t_tab4(t_tab4.last).ret_debitnote_msg_id := xslprocessor.valueOf(rtndbt_n,'MessageID');
    t_tab4(t_tab4.last).kind_of := xslprocessor.valueOf(rtndbt_n,'KindOf');
    t_tab4(t_tab4.last).reason := xslprocessor.valueOf(rtndbt_n,'Reason');
    t_tab4(t_tab4.last).debit_note_date := to_date(xslprocessor.valueOf(rtndbt_n,'Date'),'YYYY-MM-DD');
    t_tab4(t_tab4.last).gross_amt := xslprocessor.valueOf(rtndbt_n,'GrossAmount');
    t_tab4(t_tab4.last).currency := xslprocessor.valueOf(rtndbt_n,'Currency');
    rtnnum1 :=1;
    end if;
    dnlt_nl := xslprocessor.selectNodes(msgdtl_n,'DunningLetter');
    dnlt_n := xmldom.item(dnlt_nl, 0);
    dnnum := xmldom.getLength(dnlt_nl) ;
    if (dnnum >0) then
    -- t_tab5.extend;
    --dunning letter
    msgdnlt_nl := xslprocessor.selectNodes(dnlt_n,'MessageID');
    lvdnlt_nl := xslprocessor.selectNodes(dnlt_n,'Level');
    datdnlt_nl := xslprocessor.selectNodes(dnlt_n,'Date');
    grsdnlt_nl := xslprocessor.selectNodes(dnlt_n,'GrossAmount');
    curdnlt_nl := xslprocessor.selectNodes(dnlt_n,'Currency');
    limdnlt_nl := xslprocessor.selectNodes(dnlt_n,'LevelImprovement');
    FOR cur_msgdnlt IN 0 .. xmldom.getLength(msgdnlt_nl) - 1 LOOP
    msgdnlt_n := xmldom.item(msgdnlt_nl,cur_msgdnlt);
    lvdnlt_n := xmldom.item(lvdnlt_nl,cur_msgdnlt);
    datdnlt_n := xmldom.item(datdnlt_nl,cur_msgdnlt);
    grsdnlt_n := xmldom.item(grsdnlt_nl,cur_msgdnlt);
    curdnlt_n := xmldom.item(curdnlt_nl,cur_msgdnlt);
    limdnlt_n := xmldom.item(limdnlt_nl,cur_msgdnlt);
    t_tab5.extend;
    t_tab5(t_tab5.last).message_id := var1;
    t_tab5(t_tab5.last).dunning_msg_id := xslprocessor.valueOf(msgdnlt_n,'.');
    t_tab5(t_tab5.last).d_level := xslprocessor.valueOf(lvdnlt_n,'.');
    t_tab5(t_tab5.last).dunning_date := to_date(xslprocessor.valueOf(datdnlt_n,'.'),'YYYY-MM-DD');
    t_tab5(t_tab5.last).gross_amt := xslprocessor.valueOf(grsdnlt_n,'.');
    t_tab5(t_tab5.last).currency := xslprocessor.valueOf(curdnlt_n,'.');
    lvimp := xmldom.getLength(limdnlt_nl);
    begin
    t_tab5(t_tab5.last).level_improvement := xslprocessor.valueOf(limdnlt_n,'.');
    EXCEPTION
    WHEN OTHERS THEN
    t_tab5(t_tab5.last).level_improvement := null;
    end;
    dnnum1 :=dnnum1 + 1;
    -- dnnum2 := dnnum2 + 1;
    dbms_output.put_line('message_id::::'||var1);
    end loop;
    ----dunning letter
    t_tab5(t_tab5.last).message_id := var1;
    t_tab5(t_tab5.last).dunning_msg_id := xslprocessor.valueOf(dnlt_n,'MessageID');
    t_tab5(t_tab5.last).d_level := xslprocessor.valueOf(dnlt_n,'Level');
    t_tab5(t_tab5.last).dunning_date := to_date(xslprocessor.valueOf(dnlt_n,'Date'),'YYYY-MM-DD');
    t_tab5(t_tab5.last).gross_amt := xslprocessor.valueOf(dnlt_n,'GrossAmount');
    t_tab5(t_tab5.last).currency := xslprocessor.valueOf(dnlt_n,'Currency');
    t_tab5(t_tab5.last).level_improvement := xslprocessor.valueOf(dnlt_n,'LevelImprovement');
    dnnum1 :=1; */
    end if;
    end if;
    END LOOP;
    -- Insert data into the real EMP table from the table collection.
    -- Form better performance multiple collections should be used to allow
    -- bulk binding using the FORALL construct but this would make the code
    -- too long-winded for this example.
    DBMS_OUTPUT.put_line('Step 5');
    FOR cur_emp IN t_tab1.first .. t_tab1.last LOOP
    INSERT INTO MessageTab
    message_id,
    PARTY_REF_ID,
    PARTY_REG_TYPE_AG,
    party_reg_type_rg,
    customer_grp_id,
    name,
    subname,
    datetime,
    payment_msg_id,
    gross_amt_before,
    gross_amt_current,
    currency,
    settlemen_of_balance,
    including_subsidiary_claim,
    seq_no)
    VALUES
    t_tab1(cur_emp).message_id,
    t_tab1(cur_emp).PARTY_REF_ID,
    t_tab1(cur_emp).PARTY_REG_TYPE_AG,
    t_tab1(cur_emp).PARTY_REG_TYPE_RG,
    t_tab1(cur_emp).customer_grp_id,
    t_tab1(cur_emp).name,
    t_tab1(cur_emp).subname,
    t_tab1(cur_emp).datetime,
    t_tab1(cur_emp).payment_msg_id,
    t_tab1(cur_emp).gross_amt_before,
    t_tab1(cur_emp).gross_amt_current,
    t_tab1(cur_emp).currency,
    t_tab1(cur_emp).settlemen_of_balance,
    t_tab1(cur_emp).including_subsidiary_claim,
    t_tab1(cur_emp).seq_no
    END LOOP;
    DBMS_OUTPUT.put_line('Step 6');
    if (condfpmt1 > 0) then
    FOR cur_cnf IN t_tab2.first .. t_tab2.last LOOP
    INSERT INTO ContractsWithDefaultOfPayment
    (message_id,contract_id)
    values
    (t_tab2(cur_cnf).message_id,t_tab2(cur_cnf).contract_id );
    end loop;
    end if; -- condfpmt
    if (canclnum1 > 0) then
    FOR cur_cancl IN t_tab3.first .. t_tab3.last LOOP
    INSERT INTO CancellationTab
    (message_id,cancellation_msg_id)
    VALUES
    (t_tab3(cur_cancl).message_id,t_tab3(cur_cancl).cancellation_msg_id);
    END LOOP;
    end if;
    DBMS_OUTPUT.put_line('Step 7');
    if (rtnnum1 >0) then
    FOR cur_rtndb IN t_tab4.first .. t_tab4.last LOOP
    INSERT INTO ReturnDebitNoteTab
    (message_id,
    ret_debitnote_msg_id,
    kind_of,
    reason,
    debit_note_date,
    gross_amt,
    currency
    VALUES
    (t_tab4(cur_rtndb).message_id,
    t_tab4(cur_rtndb).ret_debitnote_msg_id,
    t_tab4(cur_rtndb).kind_of,
    t_tab4(cur_rtndb).reason,
    t_tab4(cur_rtndb).debit_note_date,
    t_tab4(cur_rtndb).gross_amt,
    t_tab4(cur_rtndb).currency);
    END LOOP;
    end if;
    if (dnnum1 >0) then
    FOR cur_dnl IN t_tab5.first .. t_tab5.last LOOP
    INSERT INTO DunningLettersTab
    (message_id,
    dunning_msg_id,
    d_level,
    dunning_date,
    gross_amt,
    currency,
    level_improvement)
    VALUES
    (t_tab5(cur_dnl).message_id,
    t_tab5(cur_dnl).dunning_msg_id,
    t_tab5(cur_dnl).d_level,
    t_tab5(cur_dnl).dunning_date,
    t_tab5(cur_dnl).gross_amt,
    t_tab5(cur_dnl).currency,
    t_tab5(cur_dnl).level_improvement
    END LOOP;
    DBMS_OUTPUT.put_line('Step 8');
    end if; -- dnn
    end if; -- top msg
    end if; --- fl_seq chk
    COMMIT;
    -- Free any resources associated with the document now it
    -- is no longer needed.
    xmldom.freeDocument(v_doc);
    /* refresh array */
    t_tab_FC.delete;
    t_tab1.delete;
    t_tab2.delete;
    t_tab3.delete;
    t_tab4.delete;
    t_tab5.delete;
    /* refsh */
    end loop;
    close MessageCursor;
    END ;
    //

    Errors thrown by Oracle always show a line number (even if it points to the FOR loop that the error occurred within). When you run it, what is the error stack that is being returned. Copy and paste that, don't summarize it.
    If you are still uncertain, add a final
    EXCEPTION
      WHEN OTHERS THEN
         dbms_output.put_line(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);to have it written out where your normal dbms_output goes. This is your friend in 10g for tracking down errors.
    "But as soon as i add a prefix in the header everything works fine."
    Is that header in the sample XML you provided? Regardless what are you adding? Your data is a clob so you can always tweak it before converting it to a DOMDocument just by doing simple string manipulation.
    Since you are in 10g, you should be using dbms_xmldom instead of xmldom. I think xmldom is just a synonym for dbms_xmldom though. Review the dbms_xmldom documentation. You can go straight from a clob to a DOMDocument via DBMS_XMLDOM.NEWDOMDOCUMENT. You can also parse the document completely using dbms_xmldom calls instead of xslprocessor calls.
    Other random things to evaluate:
    Consider turning
             FOR each_FC IN t_tab_FC.first .. t_tab_FC.last LOOP
                INSERT INTO FileControl
    into a
             FORALL i IN t_tab_FC.first .. t_tab_FC.last LOOP
                INSERT INTO FileControl
                 ...Better performance because one two context switches (PL/SQL -> SQL -> PL/SQL) instead of 2*n switches.
    I like this construct better
       TYPE tab_type IS TABLE OF FileControl%ROWTYPE INDEX BY BINARY_INTEGER;
       t_tab_FC tab_type := tab_type;because then you don't have to       t_tab_FC.extend;you can just do something like     index := 1;
         LOOP
            t_tab_FC(index).creation_date := <whatever>;
            index := index + 1;
         END LOOPYou also have the option of parsing your XML as a XMLType, including purely in SQL, but you can research that avenue at a later date.
    Forgot to mention, wrap any code examples in [ pre ] [ pre ] (without the spaces) to retain your formatting.

  • Error in retrieving and parsing XML File

    Hi Folks
    I am Working on People centric user interface, While i am custimizing a application in Business application Builder i am getting this error
    " Error in retrieving and parsing XML File "
    can any body look on this and give me the solution
    it will be rewarded
    Regards
    M.S.Kumar

    Hello,
    As mentionned by SAP_TECH, avoid to use the BAB.
    Go to CRMC_BLUEPRINT_C and use the different option in the menu to customize the field group, toolbar group, events, ...
    Use the PCUI cookbook to find your way.
    Regards,
    Fred

  • I want to load large raw XML file in firefox and parse by DOM. But, for large XML file the firefox very slow some time crashed . Is there any option to increase DOM handling memory in Firefox

    Actually i am using an off-line form to load very large XML file and using firefox to load that form. But, its taking more time to load and some time the browser crashed. through DOM parsing this XML file to my form. Is there any option to increase DOM handler size in firefox

    Thank you for your suggestion. I have a question,
    though. If I use a relational database and try to
    access it for EACH and EVERY click the user makes,
    wouldn't that take much time to populate the page with
    data?
    Isn't XML store more efficient here? Please reply me.You have the choice of reading a small number of records (10 children per element?) from a database, or parsing multiple megabytes. Reading 10 records from a database should take maybe 100 milliseconds (1/10 of a second). I have written a web application that reads several hundred records and returns them with acceptable response time, and I am no expert. To parse an XML file of many megabytes... you have already tried this, so you know how long it takes, right? If you haven't tried it then you should. It's possible to waste a lot of time considering alternatives -- the term is "analysis paralysis". Speculating on how fast something might be doesn't get you very far.

  • Loading and parsing XML files

    I am currently working on an application in which I have a XML file that is 1.5 mb and has 1100 records that I need to load and parse. Loading takes less than a minute, but when I try to parse it with the DOM parser it's taking too much time. I am trying to put it into an array and then display it as if I'm tied to a database. I need a different approach. Does anyone have any experience and insight with the DOM parser? Would the SAX parser be a better way to go, why and how?

    You can use SAX... but SAX is good only if you want to read the data once.
    If you want to use the same data again and again then you might have to parse the file again... which prooves expensive.
    DOM will take too much of memory and CPU time.
    Have you tried using JDOM ? it is a new kind of a XML parsing utility that is quite lightweight and has good api to recurse the JDOM tree also.
    check it out at
    http://www.jdom.org.
    hope this helps.
    regards,
    Abhishek.

Maybe you are looking for

  • Photoshop Elements 11 file saving proterties

    I am currently using Photoshop Elements 11 trail version to decide if I like it enough to upgrade. Yesterday, while saving my files - .jpg, .png, psd - etc - when I'd go to access the file to upload, it wouldn't recognize the file. Then when I went b

  • Restoring data from iTunes backup (only contacts and messages)

    Hello!  I've seen a lot of threads about restoring via iTunes but haven't found my particular situation yet.  So hopefully someone can give me some insight into my predicament.  I updated my iPhone 4S with io7 and my wifi broke.  So I got a new iPhon

  • Interactive Report Download - filenames always in lower case

    I've written an interactive report in Apex v4.0.2 and have set the CSV download option to use a filename of "One_Two_Three" (note the capitalization). However when the CSV file is generated, the filename is "one_two_three" - all in lower case. I've t

  • Standard Report for Price Trend?

    Hello Friends, Is there any standard transaction for Price trends of major raw materials for last 6 months and Price Trends of  product  for last 1 year Points will be awarded. Thanks.

  • No users available in transaction BP to create business partner

    Hi, when I am in Solution Manager 4.0 (SP10), I don't see any users form the satellite system when going to transaction BP. Even when I change the date to a year back, it still won't display any users from the systems to select as BP's - there is onl