C parser and deeply nested DTDs

Your C parser is VERY fast :-),
but I am having trouble with deeply nested DTDs.
I can do DTD validation for an internal DTD and a single external DTD file.
My problem is with a DTD which includes other DTDs to a depth of 5 levels.
I am using the C XML parser v2.0.7 on Solaris 2.6.
My XML docs & their DTD are for an OAG Purchase Order (056_add_po_003.dtd or 056_add_po_006.dtd).
As these are OAG 'standards based' XML I cannot change the XML or DTD nesting.
The screen dump & error message I get was:
The error code after calling xmlinit() was >0<
startDocument
In line 20 of 056_add_po_006.xml:
In line 31 of 056_add_po_006.dtd:
In line 19 of oagis_resources.dtd [parameter entity RESOURCES]:
In line 57 of oagis_segments.dtd [parameter entity SEGMENTS]:
In line 4 of oagis_fields.dtd [parameter entity FIELDS]:
LPX-00252: invalid entity replacement-text nesting
The error code after calling xmlparse() was >252<
=================
Line 4 was:
<!ELEMENT ACCTPERIOD %STRDOM;>
The error is always at the same line of the oagis_fields.dtd dtd independent of whether I delete or move the 'ACCTPERIOD ELEMENT' that was at line 4.
The sample OAG PO XML and its DTDs were:
056_add_po_006.xml
056_add_po_006.dtd
oagis_domains.dtd
oagis_extensions.dtd
oagis_fields.dtd
oagis_resources.dtd
oagis_segments.dtd
are available from OAG: http://www.openapplications.org/xml/loadform.htm
You need to register to get the OAG docs but it is free.
Thanks for your Help
Doug.

The error message file lpxus.msg has a detailed explanation:
00252, 00000, "invalid entity replacement-text nesting"
// *Cause: Markup included from an entity must nest/group properly, that
// is, open/close markup must occur within the same entity.
// For example,
// <!DOCTYPE doc [ <!ENTITY e "</foo><foo>"> ]>
// <doc><foo>&e;</foo></doc>
// Is invalid since foo's start-tag occurs in the top-level
// document, but the close-tag is provided by the "e" entity.
// Both start and end must be provided by the same source.
// *Action: Stay away from tricky nonsense such as the above, it's
// not permitted.
null

Similar Messages

  • How to parse XML against XSD,DTD, etc.. locally (no internet connection) ?

    i've searched on how to parse xml against xsd,dtd,etc.. without the needs of internet connection..
    but unfortunately, only the xsd file can be set locally and still there needs the internet connection for the other features, properties.
    XML: GML file input from gui
    XSD: input from gui
    javax.xml
    package demo;
    import java.io.File;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import javax.xml.XMLConstants;
    import javax.xml.transform.Source;
    import javax.xml.transform.stream.StreamSource;
    import javax.xml.validation.Schema;
    import javax.xml.validation.SchemaFactory;
    import javax.xml.validation.Validator;
    import org.xml.sax.SAXException;
    public class Sample1WithJavaxXML {
         public static void main(String[] args) {
              URL schemaFile = null;
              try {
                   //schemaFile = new URL("http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd");
                   File file0 = new File("AppSchema-C01-v1_0.xsd");
                   schemaFile = new URL(file0.toURI().toString());
              } catch (MalformedURLException e1) {
                   // TODO Auto-generated catch block
                   e1.printStackTrace();
              //Source xmlFile = new StreamSource(new File("web.xml"));
              Source xmlFile = new StreamSource(new File("C01.xml"));
              SchemaFactory schemaFactory = SchemaFactory
                  .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
              //File file1 = new File("XMLSchema.dtd");
              //SchemaFactory schemaFactory = SchemaFactory
                   //.newInstance("javax.xml.validation.SchemaFactory:XMLSchema.dtd");
              Schema schema = null;
              try {
                   schema = schemaFactory.newSchema(schemaFile);
              } catch (SAXException e1) {
                   // TODO Auto-generated catch block
                   e1.printStackTrace();
              Validator validator = schema.newValidator();
              try {
                validator.validate(xmlFile);
                System.out.println(xmlFile.getSystemId() + " is valid");
              } catch (SAXException e) {
                System.out.println(xmlFile.getSystemId() + " is NOT valid");
                System.out.println("Reason: " + e.getLocalizedMessage());
              } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
    }Xerces
    package demo;
    import java.io.File;
    import java.util.Date;
    import org.apache.xerces.parsers.DOMParser;
    public class SchemaTest {
         private String xmlFile = "";
         private String xsdFile = "";
         public SchemaTest(String xmlFile, String xsdFile) {
              this.xmlFile = xmlFile;
              this.xsdFile = xsdFile;
         public static void main (String args[]) {
              File file0 = new File("AppSchema-C01-v1_0.xsd");
              String xsd = file0.toURI().toString();
              SchemaTest testXml = new SchemaTest("C01.xml",xsd);
              testXml.process();
         public void process() {
              File docFile = new File(xmlFile);
              DOMParser parser = new DOMParser();
              try {
                   parser.setFeature("http://xml.org/sax/features/validation", true);
                   parser.setFeature("http://apache.org/xml/features/validation/schema", true);
                   parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
                             xsdFile);
                   ErrorChecker errors = new ErrorChecker();
                   parser.setErrorHandler(errors);
                   System.out.println(new Date().toString() + " START");
                   parser.parse(docFile.toString());
              } catch (Exception e) {
                   System.out.print("Problem parsing the file.");
                   System.out.println("Error: " + e);
                   System.out.println(new Date().toString() + " ERROR");
                   return;
              System.out.println(new Date().toString() + " END");
    }

    Thanks a lot Sir DrClap..
    I tried to use and implement the org.w3c.dom.ls.LSResourceResolver Interface which is based on the SAX2 EntityResolver.
    please give comments the way I implement it. Here's the code:
    LSResourceResolver Implementation
    import org.w3c.dom.ls.LSInput;
    import org.w3c.dom.ls.LSResourceResolver;
    import abc.xml.XsdConstant.Path.DTD;
    import abc.xml.XsdConstant.Path.XSD;
    public class LSResourceResolverImpl implements LSResourceResolver {
         public LSResourceResolverImpl() {
          * {@inheritDoc}
         @Override
         public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI) {
              ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
              LSInput input = new LSInputImpl(publicId, systemId, baseURI);
              if ("http://www.w3.org/2001/xml.xsd".equals(systemId)) {
                   input.setByteStream(classLoader.getResourceAsStream(XSD.XML));
              } else if (XsdConstant.PUBLIC_ID_XMLSCHEMA.equals(publicId)) {
                   input.setByteStream(classLoader.getResourceAsStream(DTD.XML_SCHEMA));
              } else if (XsdConstant.PUBLIC_ID_DATATYPES.equals(publicId)) {
                   input.setByteStream(classLoader.getResourceAsStream(DTD.DATATYPES));
              return input;
    }I also implement org.w3c.dom.ls.LSInput
    import java.io.InputStream;
    import java.io.Reader;
    import org.w3c.dom.ls.LSInput;
    public class LSInputImpl implements LSInput {
         private String publicId;
         private String systemId;
         private String baseURI;
         private InputStream byteStream;
         private String stringData;
         public LSInputImpl(String publicId, String systemId, String baseURI) {
              super();
              this.publicId = publicId;
              this.systemId = systemId;
              this.baseURI = baseURI;
         //getters & setters
    }Then, here's the usage/application:
    I create XMLChecker class (SchemaFactory implementation is Xerces)
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import javax.xml.XMLConstants;
    import javax.xml.stream.FactoryConfigurationError;
    import javax.xml.transform.Source;
    import javax.xml.transform.stream.StreamSource;
    import javax.xml.validation.Schema;
    import javax.xml.validation.SchemaFactory;
    import javax.xml.validation.Validator;
    import org.xml.sax.ErrorHandler;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import abc.xml.XsdConstant.Path.XSD;
    public class XMLChecker {
         private ErrorMessage errorMessage = new ErrorMessage();
         public boolean validate(String filePath){
              final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
              List<Source> schemas = new ArrayList<Source>();
              schemas.add(new StreamSource(classLoader.getResourceAsStream(XSD.XML_SCHEMA)));
              schemas.add(new StreamSource(classLoader.getResourceAsStream(XSD.XLINKS)));
              schemas.add(new StreamSource(classLoader.getResourceAsStream("abc/xml/AppSchema.xsd")));
              SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
              schemaFactory.setResourceResolver(new LSResourceResolverImpl());
              try {
                   Schema schema = schemaFactory.newSchema(schemas.toArray(new Source[schemas.size()]));
                   Validator validator = schema.newValidator();
                   validator.setErrorHandler(new ErrorHandler() {
                        @Override
                        public void error(SAXParseException e) throws SAXException {
                             errorMessage.setErrorMessage(e.getMessage());
                             errorMessage.setLineNumber(e.getLineNumber());
                             errorMessage.setColumnNumber(e.getLineNumber());
                             throw e;
                        @Override
                        public void fatalError(SAXParseException e) throws SAXException {
                             errorMessage.setErrorMessage(e.getMessage());
                             errorMessage.setLineNumber(e.getLineNumber());
                             errorMessage.setColumnNumber(e.getLineNumber());
                             throw e;
                        @Override
                        public void warning(SAXParseException e) throws SAXException {
                             errorMessage.setErrorMessage(e.getMessage());
                             errorMessage.setLineNumber(e.getLineNumber());
                             errorMessage.setColumnNumber(e.getLineNumber());
                             throw e;
                   StreamSource source = new StreamSource(new File(filePath));
                   validator.validate(source);
              } catch (SAXParseException e) {
                   return false;
              } catch (SAXException e) {
                   errorMessage.setErrorMessage(e.getMessage());
                   return false;
              } catch (FactoryConfigurationError e) {
                   errorMessage.setErrorMessage(e.getMessage());
                   return false;
              } catch (IOException e) {
                   errorMessage.setErrorMessage(e.getMessage());
                   return false;
              return true;
         public ErrorMessage getErrorMessage() {
              return errorMessage;
    }Edited by: erossy on Aug 31, 2010 1:56 AM

  • ABAP help with deeply nested items.

    Gurus,
    We have a requirement whence we need to sum up the key figures from one transformation layer going to the next.  The challenge is, its a deeply nested structure. something like :
    SalesOrderItem     Higher Level Item         KeyFig  
    1000                     0000                          30
    1010                     1000                          20
    1011                     1010                          10
    1015                     1010                          20
    1020                     1010                          20
    1021                     1020                          10
    1022                     1020                          50
    1023                     1020                          10
    1025                     1020                          20
    So now, in the next layer we will be rolling it upto the 1000 , 2000...levels- in this example 1000 level only.
    The round figure items(1010, 1020.....) are the individual kmats and the summation happens like this:
    1. Items 1021, 1022, 1023 and 1025 roll up to 1020; sum = 90.
    2. Now when 1020 rolls up to its higher level item which is 1010, the sum that rolls up from 1020 should be 90 + 20.
    3. Ultimately when all items roll up to item 1000, the total sum will be 190.
    Can someone please help me write this logic in ABAP?
    Thanks!
    Chris

    You can try this, but please put it through more examples. Assumption is that your highest level item will have higher item number as 0000 and that they are always sorted in the way it is given in your example.
    DATA: BEGIN OF itab OCCURS 0,
            posnr(6) TYPE n,
            uposn(6) TYPE n,
            qty TYPE p DECIMALS 2.
    DATA: END OF itab.
    DATA: itab2 LIKE itab OCCURS 0 WITH HEADER LINE.
    DATA: itab3 LIKE itab OCCURS 0 WITH HEADER LINE.
    DATA: v_total TYPE p DECIMALS 2,
          v_posnr(6) TYPE n.
    itab-posnr = '1000'.
    itab-uposn = '0000'.
    itab-qty   = 30.
    APPEND itab.
    itab-posnr = '1010'.
    itab-uposn = '1000'.
    itab-qty   = 20.
    APPEND itab.
    itab-posnr = '1011'.
    itab-uposn = '1010'.
    itab-qty   = 10.
    APPEND itab.
    itab-posnr = '1015'.
    itab-uposn = '1010'.
    itab-qty   = 20.
    APPEND itab.
    itab-posnr = '1020'.
    itab-uposn = '1010'.
    itab-qty   = 20.
    APPEND itab.
    itab-posnr = '1021'.
    itab-uposn = '1020'.
    itab-qty   = 10.
    APPEND itab.
    itab-posnr = '1022'.
    itab-uposn = '1020'.
    itab-qty   = 50.
    APPEND itab.
    itab-posnr = '1023'.
    itab-uposn = '1020'.
    itab-qty   = 10.
    APPEND itab.
    itab-posnr = '1025'.
    itab-uposn = '1020'.
    itab-qty   = 20.
    APPEND itab.
    itab2[] = itab[].
    *-- assumption is that if UPOSN = 000000, then there is no higher level
    *   item
    LOOP AT itab WHERE uposn = '000000'.
      itab3-posnr = v_posnr = itab-posnr.
      DO.
        LOOP AT itab2 WHERE uposn = v_posnr.
          v_total = v_total + itab2-qty.
        ENDLOOP.
        IF sy-subrc <> 0.
          EXIT.
        ELSE.
          v_posnr = itab2-posnr.
        ENDIF.
    *-- This item does not appear as a higher level item
      ENDDO.
      v_total = v_total + itab-qty.
      itab3-qty = v_total.
      APPEND itab3.
      CLEAR itab3.
    ENDLOOP.
    LOOP AT itab3.
      WRITE:/ itab3-posnr,
              itab3-qty.
    ENDLOOP.

  • Flex Remoting - Deeply Nested ArrayCollections not Stongly Typed

    I have a Flex 3 app which uses remoting. All works relatively well except for the following...
    I have a deeply nested object graph as follows:
    ( btw: each VO uses [RemoteClass(alias="com.mypackage.xxx")] meta tags )
    The main class is called "BrandVO" which contains an ArrayCollection on ProductLineVOs.
    each "ProductLineVO" has an ArrayCollection of "ProductVO"s
    each "ProductVO" has an ArrayCollection of "CaseVO"s, "UseVO"s, and  "IngredientVO"s.
    Pseudo Graphically:
    +-BrandVO
    +----ProductLineVO
    +-------ProductVO
    --------------CaseVO
    --------------UseVO
    --------------IngredientVO
    +-------ProductVO
    --------------CaseVO
    --------------UseVO
    --------------IngredientVO
    +----ProductLineVO
    +-------ProductVO
    --------------CaseVO
    --------------UseVO
    --------------IngredientVO
    +-------ProductVO
    --------------CaseVO
    --------------UseVO
    --------------IngredientVO
    ...etc...
    When I make the remoting call (AMF3) , I properly recieve back an ArrayCollection of BrandVOs...
    (Debugging shows each item in the ArrayCollection [0]...[n] has a Value com.mypackage.BrandVO(@1234etc)
    Expanding each BrandVO shows properly typed nested ProductLineVO elements...
    (Debugging shows each item in the ArrayCollection [0]...[n] has a Value com.mypackage.ProductLineVO(@1234etc)
    Expanding each ProductLineVO shows properly typed nested ProductVO elements...
    (Debugging shows each item in the ArrayCollection [0]...[n] has a Value com.mypackage.ProductVO (@1234etc)
    The problem then is when expanding each ProductVO, the nested CaseVOs, UseVOs, and IngredientVOs ( although they contain the proper data) are typed generically.
    (Debugging CaseVOs shows each item in each ArrayCollection [0]...[n] has a Value Object (@1234etc )
    (Debugging UseVOsshows each item in each ArrayCollection [0]...[n] has a Value Object (@1234etc )
    (Debugging IngredientVOs shows each item in each ArrayCollection [0]...[n] has a Value Object (@1234etc )
    I don't know why all the other VO's get typed correctly but CaseVOs, UseVOs, and IngredientVOs fail to be stongly typed and default to generic Objects.
    I have checked the returning remoting call data ( with ServiceCapture ) and the objects coming back do have the correct types. The problem seems to be at the Flex level.
    Anyone know why this would happen?
    Is there a limit to object grpah depth beyind which objects get typed generically?
    I thought perhaps is was because the ProductVO has 3 ArrayCollections ( CaseVOs, UseVOs, and IngredientVOs ), so I tried removing all but CaseVO and had the same problem... CaseVO was typed as Object.
    Any help/thoughts would be gratly appreciated.
    ~e

    Hey Michael,
    Thank you for the quick response and helpful suggestion.
    Sure enough, if I just call for a CaseVO, it still is generically typed as an Object; so your theory that Flex cannot match up the RO and VO seems to be the correct. I have reviewed the code however and can't see any discrepancies. If you have a moment, can you take a look at the following and see if any errors seem evident:
    The Flex VO
    ==========
    package com.mypackage.vo
       [RemoteClass(alias="com.mypackage.admin.vo.CaseVO")]
       public class CaseVO
            public var caseId:int;
            public var orderNumber:String;
            public var productId:int;
            public var qty:int;
            public var caseWeight:Number;
            public var measurementUnitId:int;
            public function CaseVO()
    The Romote Java RO
    Notes:
    1. The RO package is different then the VO package ( there is an extra "admin" dir component )
        but that shouldn't matter should it?
        ( since the proper mapping is declared in the "alias=" of the VO )
    2. I tried it w/o the serialVersionUID proerty and method
    3. I tried it w/o the equals and hashCode methods
    =================================================
    package com.mypackage.admin.vo;
    public class CaseVO implements Serializable
       public static final long serialVersionUID = 1L;
       private int caseId;
       private String orderNumber;
       private int productId;
       private int qty;
       private float caseWeight;
       private int measurementUnitId;
       public static long getSerialVersionUID() { return serialVersionUID;}
       public int getCaseId() { return caseId; }
       public void setCaseId(int caseId) {this.caseId = caseId;}
       public String getOrderNumber() {return orderNumber;}
       public void setOrderNumber(String orderNumber) {this.orderNumber = orderNumber; }
       public int getProductId() {return productId;}
       public void setProductId(int productId) {this.productId = productId;}
       public int getQty() { return qty;}
       public void setQty(int qty) {this.qty = qty;}
       public float getCaseWeight() {return caseWeight; }
       public void setCaseWeight(float caseWeight) {this.caseWeight = caseWeight; }
       public int getMeasurementUnitId() {return measurementUnitId;}
       public void setMeasurementUnitId(int measurementUnitId) { this.measurementUnitId = measurementUnitId; }
       public boolean equals(Object other)
            if (this == other) return true; 
            if ( !(other instanceof CaseVO) ) return false;
            final CaseVO case = (CaseVO) other;
            if ( case.getCaseId() != getCaseId() ) return false;
            if ( !case.getOrderNumber().equals(getOrderNumber()) ) return false;
            return true;
       public int hashCode()
            int result;
            result = getOrderNumber().hashCode();
            result = 29 * result + getCaseId();
            return result;
    Thanks,
    ~e

  • ORA-20100: Error occurred while parsing:Error opening external DTD ( Asap)

    Hi I'm using domsample example. And I have written the program. The xml file at the starting has this string"<!DOCTYPE MobileInventoryResponse SYSTEM "MobileInventoryResponse.dtd">", from which I'm getting error -"ORA-20100: Error occurred while parsing: Error opening external DTD".
    I'm new to xml could you please help me to solve this problem. I assume this is related to DTD for which I need to set base path. But I'm not sure how to do it? I'm getting this xml file through CLOB which I'm able to parse until an extent. where in between got this error.
    Here is my partial code:
    l_doc_id := rec_xml_data.id;
    l_xml_parser := xmlparser.newParser;
    xmlparser.setValidationMode(l_xml_parser, FALSE);
    xmlparser.parseCLOB(l_xml_parser,rec_xml_data.l_xml_data);--PARSING THE CLOB WHICH CONTAINS XML FILE
    l_xml_doc := xmlparser.getDocument(l_xml_parser);
    xmlparser.freeParser(l_xml_parser);
    l_nodelist := xmldom.getElementsByTagName(l_xml_doc, '*');
    l_length := xmldom.getLength(l_nodelist);
    -- loop through elements
    FOR l_rec_xml in 0..l_length-1
    LOOP
    l_node := xmldom.item(l_nodelist, l_rec_xml);
    -- dbms_output.put(xmldom.getNodeName(n) || ' ');
    -- get the text node associated with the element node
    l_nodename:=xmldom.getNodeName(l_node);
    l_node := xmldom.getFirstChild(l_node);
    IF (xmldom.isNull(l_node) = false) THEN
    IF xmldom.getNodeType(l_node) = xmldom.TEXT_NODE THEN
    IF l_nodename = 'purchase-order-number' THEN
    l_po_num:=NULL;
    l_po_num:= xmldom.getNodeValue(l_node);
    -- dbms_output.put_line('Purchaser Order Num : '||l_po_num);
    END IF;
    from here onwards I get the string values
    Now I don't know where to set the DTD basepath or baseurl. I need it asap.
    Regards,
    Naveen.

    The version which I'm working on is 10.2.0.4.
    XML File---
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE MobileInventoryResponse SYSTEM "MobileInventoryResponse.dtd">
    <MobileInventoryResponse>
    <message>
    <message-header>
    <message-id>16244182</message-id>
    <transaction-name>ship-advice</transaction-name>
    <partner-name>cbeyond</partner-name>
    <source-url>http://www.brightpoint.com</source-url>
    <create-timestamp>20080826150709</create-timestamp>
    <response-request>1</response-request>
    </message-header>
    <ship-advice>
    <header>
    <customer-id>297859</customer-id>
    <shipment-information>
    <ship-first-name>RA_13Aug_1</ship-first-name>
    <ship-last-name>MIND</ship-last-name>
    <ship-address1>test</ship-address1>
    <ship-city>test</ship-city>
    <ship-state>VA</ship-state>
    <ship-post-code>22102-4931</ship-post-code>
    <ship-country-code>US</ship-country-code>
    <ship-phone1>0040726335068</ship-phone1>
    <ship-email>[email protected]</ship-email>
    <ship-via>FX01</ship-via>
    <ship-request-date>20080826</ship-request-date>
    <ship-request-warehouse>CBY1</ship-request-warehouse>
    </shipment-information>
    <purchase-order-information>
    <purchase-order-number>380928</purchase-order-number>
    <account-description />
    <purchase-order-amount>0.0</purchase-order-amount>
    <currency-code>USD</currency-code>
    </purchase-order-information>
    <order-header>
    <customer-order-number>0002759</customer-order-number>
    <customer-order-date>20080826</customer-order-date>
    <order-sub-total>19.0</order-sub-total>
    <order-discount>0.0</order-discount>
    <order-tax1>0.0</order-tax1>
    <order-tax2>0.0</order-tax2>
    <order-tax3>0.0</order-tax3>
    <order-shipment-charge>18.0</order-shipment-charge>
    <order-total-net>0.0</order-total-net>
    <order-status>Completed</order-status>
    <order-type />
    <brightpoint-order-number>35028788</brightpoint-order-number>
    <warehouse-id>CBY1</warehouse-id>
    <ship-date>20080826</ship-date>
    </order-header>
    </header>
    <detail>
    <line-item>
    <line-no>1</line-no>
    <item-code>SKU1</item-code>
    <universal-product-code>0</universal-product-code>
    <ship-quantity>1.0</ship-quantity>
    <unit-of-measure>EA</unit-of-measure>
    <serial-list>
    <serial-numbers>
    <esn>TIMI000013</esn>
    </serial-numbers>
    </serial-list>
    <line-status />
    <base-price>0.0</base-price>
    <line-discount>0.0</line-discount>
    <line-tax1>0.0</line-tax1>
    <line-tax2>0.0</line-tax2>
    <line-tax3>0.0</line-tax3>
    <bill-of-lading>929406733828</bill-of-lading>
    <scac>FX01</scac>
    </line-item>
    </detail>
    </ship-advice>
    <transactionInfo>
    <eventID>16244182</eventID>
    </transactionInfo>
    </message>
    </MobileInventoryResponse>
    XML FILE END--------------------
    MY PROGRAM IS AS BELOW---
    get_eai_data_prc( x_ret_code OUT NUMBER
    ,p_debug_flag IN VARCHAR2
    IS
    --Local Variables
    l_xml_parser xmlparser.Parser;
    l_xml_doc xmldom.DOMDocument;
    l_xml_data CLOB;
    l_nodelist xmldom.DOMNodeList;
    l_length NUMBER := 0;
    l_num_cnt NUMBER := 0;
    l_node xmldom.DOMNode;
    l_docelem DBMS_XMLDOM.DOMElement; -- XML DOM element.
    l_nodeValue VARCHAR2(30); -- Text value of the node.
    l_nodename VARCHAR2(100);
    l_po_num VARCHAR2(150);
    l_account_desc VARCHAR2(150);
    l_cust_ord VARCHAR2(150);
    l_ship_date VARCHAR2(150);
    l_item_code VARCHAR2(150);
    l_ship_qty VARCHAR2(150);
    l_esn VARCHAR2(150);
    l_cust_channel_type VARCHAR2(150);
    l_cust_grp_acct VARCHAR2(150);
    l_max_doc_id NUMBER;
    l_doc_id NUMBER;
    l_market_id VARCHAR2(150);
    l_record_id VARCHAR2(30);
    TYPE l_esn_table IS TABLE OF VARCHAR2(30)
    INDEX BY BINARY_INTEGER;
    l_data l_esn_table;
    --CURSOR TO GET XML DATA FROM EAI
    CURSOR cur_xml_data(p_doc_id VARCHAR2)
    IS
    SELECT id
         ,document l_xml_data
    FROM tds_xml_store_temp
    WHERE id >= id ;
    BEGIN
    FOR rec_xml_data IN cur_xml_data(l_max_doc_id)
    LOOP
    l_doc_id := rec_xml_data.id;
    l_xml_parser := xmlparser.newParser;
    xmlparser.setValidationMode(l_xml_parser, FALSE);
    xmlparser.parseCLOB(l_xml_parser,rec_xml_data.l_xml_data);
    l_xml_doc := xmlparser.getDocument(l_xml_parser);
    xmlparser.freeParser(l_xml_parser);
    l_nodelist := xmldom.getElementsByTagName(l_xml_doc, '*');
    l_length := xmldom.getLength(l_nodelist);
    -- loop through elements
    FOR l_rec_xml in 0..l_length-1
    LOOP
    l_node := xmldom.item(l_nodelist, l_rec_xml);
    -- dbms_output.put(xmldom.getNodeName(n));
    -- get the text node associated with the element node
    l_nodename:=xmldom.getNodeName(l_node);
    l_node := xmldom.getFirstChild(l_node);
    IF (xmldom.isNull(l_node) = false) THEN
    IF xmldom.getNodeType(l_node) = xmldom.TEXT_NODE THEN
    IF l_nodename = 'purchase-order-number' THEN
    l_po_num:=NULL;
    l_po_num:= xmldom.getNodeValue(l_node);
    -- dbms_output.put_line('Purchaser Order Num : '||l_po_num);
    END IF;--purchase-order-number
    IF l_nodename = 'account-description' THEN
    l_account_desc :=NULL;
    l_account_desc := xmldom.getNodeValue(l_node);
    END IF;
    IF l_nodename = 'customer-channel-type' THEN
    l_cust_channel_type:=NULL;
    l_cust_channel_type:= xmldom.getNodeValue(l_node);
    END IF;
    IF l_nodename = 'customer-group-account' THEN
    l_cust_grp_acct := NULL;
    l_cust_grp_acct := xmldom.getNodeValue(l_node);
    END IF;
    IF l_nodename = 'customer-order-number' THEN
    l_cust_ord:=NULL;
    l_cust_ord:= xmldom.getNodeValue(l_node);
    -- dbms_output.put_line('Customer Order NUm : '||l_cust_ord);
    END IF;--customer-order-number
    IF l_nodename = 'ship-date' THEN
    l_ship_date:=NULL;
    l_ship_date:= xmldom.getNodeValue(l_node);
    -- dbms_output.put_line('Ship Date : '||to_date(l_ship_date,'YYYY-mm-dd'));
    END IF;--ship-date
    IF l_nodename = 'item-code' THEN
    l_item_code:=NULL;
    l_item_code:= xmldom.getNodeValue(l_node);
    -- dbms_output.put_line('Item Code : '||l_item_code);
    END IF;--item-code
    IF l_nodename = 'esn' THEN
    l_esn:=NULL;
    l_num_cnt := l_num_cnt + 1;
    l_esn:=xmldom.getNodeValue(l_node);
    l_data(l_num_cnt) := l_esn;
    -- dbms_output.put_line('Serial Num : '||l_esn);
    END IF;--esn
    IF l_nodename = 'market-id' THEN
    l_market_id := NULL;
    l_market_id := xmldom.getNodeValue(l_node);
    END IF;
    IF l_nodename = 'ship-quantity' THEN
    l_ship_qty:=NULL;
    l_ship_qty:= xmldom.getNodeValue(l_node);
    -- dbms_output.put_line('Ship Quantity : '||l_ship_qty);
    END IF;--ship-quantity
    END IF;--xmldom.TEXT_NODE
    END IF;
    END LOOP;--l_rec_xml
    FOR j in l_data.first..l_data.last
    LOOP
    INSERT INTO cbey_shipment_int_stg( purchase_order_number
    ,account_description
    ,customer_order_number
    ,ship_date
    ,item_code
    ,ship_quantity
    ,esn
    ,customer_channel_type
    ,customer_group_account
    ,market_id
    ,eai_xml_doc_id
    ,record_status
    ,record_id
    VALUES
    ( l_po_num
    ,l_account_desc
    ,l_cust_ord
    ,to_date(l_ship_date,'YYYY-mm-dd')
    ,l_item_code
    ,l_ship_qty
    ,l_data(j)
    ,l_cust_channel_type
    ,l_cust_grp_acct
    ,l_market_id
    ,l_max_doc_id
    ,'NEW'
    ,CBEY_RECORD_ID_SEQ_S.nextval
    END LOOP;--j
    UPDATE cbey_interface_run_log
    SET request_id = l_conc_req_id
    ,lastrun_date = SYSDATE
    ,doc_id = rec_xml_data.id
    WHERE program_id = 'SHIPMENT_INT'
    AND doc_id =l_max_doc_id;
    l_data.delete;
    l_num_cnt :=0;
    END LOOP; --rec_xml_data
    COMMIT;
    END of the Procedure--------------------------
    Now if I load the xml file without the this :- <!DOCTYPE MobileInventoryResponse SYSTEM "MobileInventoryResponse.dtd">
    it works well. But it gives error when this particular thing is there.
    Regards,
    Naveen
    Edited by: MAN on Oct 17, 2008 7:28 AM

  • Accessing Deeply Nested Value

    Thread followed on from [here|Access to SRM Variable;
    Hi Folks,
    Following on from a thread I started in the SRM forum, I now have access to a very deeply nested variable see [this|http://img59.imageshack.us/i/variable.png/] image for path.
    How can I change the value in this variable using OO code?
    All help is much appreciate,
    Colm

    Uwe,
    I did not have access to that particular instance but I was able to use your help to find the values that I needed to change. I needed to create a post-exit enhancement on my WDDOINIT method and implement the following code. Thank you very much.
      DATA: lo_wd_child_node      TYPE REF TO if_wd_context_node,
            lo_root_node          TYPE REF TO if_wd_context_node,
            lo_context            TYPE REF TO if_wd_context.
      lo_context      = wd_context->get_context( ).
      lo_root_node    = lo_context->root_node.
      lo_wd_child_node = lo_root_node->get_child_node( name = 'ACTIVE' ).
      lo_wd_child_node->set_attribute( EXPORTING name  = 'ACTIVE_LOC'
                                                 value = '02' ).
    Edited by: Colm Gavin on Mar 9, 2011 12:46 PM

  • Parse and output XML document while preserving attribute order

    QUESTION: How can I take in an element with attributes from an XML and output the same element and attributes while preserving the order of those attributes?
    The following code will parse and XML document and generate (practically) unchanged output. However, all attributes are ordered a-z
    Example: The following element
    <work_item_type work_item_db_site="0000000000000000" work_item_db_id="0" work_item_type_code="3" user_tag_ident="Step" name="Work Step" gmt_last_updated="2008-12-31T18:00:00.000000000" last_upd_db_site="0000000000000000" last_upd_db_id="0" rstat_type_code="1">
    </work_item_type>is output as:
    <work_item_type gmt_last_updated="2008-12-31T18:00:00.000000000" last_upd_db_id="0" last_upd_db_site="0000000000000000" name="Work Step" rstat_type_code="1" user_tag_ident="Step" work_item_db_id="0" work_item_db_site="0000000000000000" work_item_type_code="3">
    </work_item_type>As you may notice, there is no difference in these besides order of the attributes!
    I am convened that the problem is not in the stylesheet.xslt but if you are not then it is posted bellow.
    Please, someone help me out with this! I have a feeling the solution is simple
    The following take the XML from source.xml and outputs it to DEST_filename with attributes in a-z order
    Code:
    private void OutputFile(String DEST_filename, String style_filename){
         //StreamSource stylesheet = new StreamSource(style_filename);
         try{
              File dest_file = new File(DEST_filename);
              if(!dest_file.exists())
                  dest_file.createNewFile();
              TransformerFactory tranFactory = TransformerFactory.newInstance();
              Transformer aTransformer = tranFactory.newTransformer();
              aTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
              Source src = new DOMSource("source.xml");
              Result dest = new StreamResult(dest_file);
              aTransformer.transform(src, dest);
              System.out.println("Finished");
         catch(Exception e){
              System.err.print(e);
              System.exit(-1);
        }

    You can't. The reason is, the XML Recommendation explicitly says the order of attributes is not significant. Therefore conforming XML serializers won't treat it as if it were significant.
    If you have an environment where you think that the order of attributes is significant, your first step should be to reconsider. Possibly it isn't really significant and you are over-reaching in some way. Or possibly someone writing requirements is ignorant of this fact and the requirement can be discarded.
    Or possibly your output is being given to somebody else who has a defective parser which expects the attributes to be in a particular order. You could quote the XML Recommendation to those people but often XML bozos are resistant to change. If you're stuck writing for that parser then you'll have to apply some non-XML processing to your output to fix it up on their behalf.

  • Generating Deeply nested XML from a flat file

    Hi All,
    I am working on a MQ to IDOC scenario.
    I am getting a flat file as input. I need to convert it into XML( so that XI can understand it).
    But conversion is into a "Deeply Nested XML from a Flat File" at sender side (JMS Adapter).
    Any inputs on this.
    Regards,
    Vikas

    You can only convert flat file into xml structure with 3 levels.
    If you need to convert flat file into deep nested xml structure, you have to do java mapping or xslt or abap mapping. There is a tool, I think it's called conversion agent by itemfield (bought by SAP), which can do pretty everything with conversion. Never used it though.
    Jayson

  • XML Parser and Content-type/encoding problem

    I've write a little and simple XML parser and a simple "trasformer" that recive an XML file and an XSL one and return HTML, here is the code:
    public static String toHTML(Document doc, String xslSource){
            ByteArrayOutputStream testo = new ByteArrayOutputStream();
            try{
                DOMSource source = new DOMSource(doc);
                TransformerFactory tFactory = TransformerFactory.newInstance();
                System.out.println("----> " + xslSource);
                Transformer transformer = tFactory.newTransformer(new StreamSource(xslSource));
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
                transformer.setOutputProperty(OutputKeys.METHOD, "html");
             transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
             transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
                transformer.transform(source, new StreamResult(testo));
            }catch(Exception ioe){
                System.out.println("2 XMLTool.toHTML " + new java.util.Date());
                System.out.println(ioe);        
            return testo.toString();
        }the problem is that I would like to put the HTML code its return into a JEditorPane; now I'm trying with this code:
    JEditorPane jep1 = new JEditorPane();
    jep1.setContentType("text/html");
    jep1.setText(v);
    // 'v' is the string returned by the code posted up (the XML/XSL transformer)but I can't see anything in my JEditorPane.
    I think that the problem is this line of code that the transformer add automaticaly ad HTML code:
    <META http-equiv="Content-Type" content="text/html; charset=UTF-8">Infact if I try to delete this line from the code I can see what I want but is'n good delete a line of code without understend where is the problem.
    So, can anyone help me?

    good.
    when u set ur output properties to html , transformer
    searches for all entity references and converts accordingly.
    if u r using xalan these files will be used for conversion of
    Character entity references for markup-significant
    output_html.properties
    (this should be in templates package)
    and HTMLEntities.res(should be in serialize package)
    vasanth-ct

  • Nested table and inner nested tables (CREATE TABLE)

    Hello everyone,
    I have a problem creating a table with some multilevel user-defined types (and therefore nested tables).
    First of all the objects:
    type top_object is object (
        text_top varchar2(100),
        table_a a_object_tbl,
        table_b b_object_tbl
    type a_object_tbl is table of a_object;
    type a_object is object (
      text_a varchar2(100)
    type b_object_tbl is table of b_object;
    type b_object is object (
      text_b varchar2(100),
      table_c c_object_tbl,
      table_d d_object_tbl
    type c_object_tbl is table of c_object;
    type c_object is object (
      text_c varchar2(100)
    type d_object_tbl is table of d_object;
    type d_object is object (
      text_d varchar2(100)
    );Shortly: The TOP object contains tables of A and B. B contains tables of C and D.
    Okay, now I want to create a table which is containing the TOP object.
    My attempt:
    create table multilevel_table (
      some_value varchar2(100),
      data top_object
    NESTED TABLE top_object.table_a STORE AS data1,
    NESTED TABLE top_object.table_b STORE AS data2
    (NESTED TABLE table_c STORE AS data3,
    NESTED TABLE table_c STORE AS data4);Obviously this does not work (otherwise I would not have been asking you ;) ). If I skip the "second level", so just by removing table_b from top_object and therefore the "inner nested table" it works.
    But on this more complex scenario I don't know the right way or the syntax.
    I would appreciate if I get any help or suggestions from you!

    +1 for Hoek's recommendation of just not using NESTED TABLEs for persistent structures.
    But:
    create table multilevel_table (
      some_value varchar2(100),
      data top_object
    NESTED TABLE data.table_a STORE AS data1,
    NESTED TABLE data.table_b STORE AS data2
    (NESTED TABLE table_c STORE AS data3,
    NESTED TABLE table_d STORE AS data4) ;

  • 01.01.0000 date parse and format

    Could somebody explain is wrong here?
    SimpleDateFormat frm = new SimpleDateFormat("yyyyMMddHHmmss");  // formatter
    frm.setTimeZone(TimeZone.getTimeZone("UTC"));   // UTC time zone
    // --- No problem for the next code ---
    String inDate = "19700101000000";  // 01.01.1970 input date
    long stamp;
    try {
        stamp = frm.parse(inDate).getTime();   // input date in long
    } catch (ParseException ex) {
        System.out.println("Interruption");
        stamp = 0;
    String outDate = frm.format(stamp);  // output date
    System.out.println("inDate=>" + inDate + "_longDate=>" + stamp + "_outDate=>" + outDate);
    // --- No idea why next code is working wrongly ---
    inDate = "00000101000000";  // 01.01.0000 input date
    try {
        stamp = frm.parse(inDate).getTime();   // input date in long
    } catch (ParseException ex) {
        System.out.println("Interruption");
        stamp = 0;
    outDate = frm.format(stamp);  // output date
    System.out.println("inDate=>" + inDate + "_longDate=>" + stamp + "_outDate=>" + outDate);I try to parse and format the time stamp 01.01.0000 00:00:00. On the finish I have 01.01.0001 instead of the correct 01.01.0000
    inDate=>19700101000000_longDate=>0_outDate=>19700101000000
    inDate=>00000101000000_longDate=>-62167392000000_outDate=>00010101000000

    You are calling format with a long parameter. The only format that matches that signature that I can see would be Format.format(Object) assuming autoboxing is changing the long to a Long.
    Format.format(Object) eventually calls DateFormat.format(Object, StringBuffer, FieldPosition). I have never used this method so I am not sure what it does.
    Was your intention to actually call this method?
    See the following example:
    System.out.println("Test 1: " + frm.format(new Long(0l), new StringBuffer(), new FieldPosition(0)));  
    System.out.println("Test 2: " + frm.format(new Long(-62167392000000l), new StringBuffer(), new FieldPosition(0)));  
    Test 1: 19700101000000
    Test 2: 00010101000000Edited by: jbish on Apr 26, 2013 12:43 PM
    Edited by: jbish on Apr 26, 2013 1:09 PM

  • Low Execute to Parse % and high soft parse %

    Hello Folks
    I am working on oracle 10g release2 on HP-UX
    After going through awr reports observed it have low Execute to Parse % but high soft parse % (Instance Efficiency Percentages)
    so cannot say issue with less use of bind variables,then what is cause of Execute to Parse %
    searched sites like ask.tom,burselon counsulting etc as usual they had given generic/diplomatic(escaping) replies on this
    like due to problem in application code,ineffecient sharing ,due to problem in database parameters etc
    without any clear indication for cause and solution like if some database parameters not set properly then should say which database parameters can be checked,cause due to more parsing and less execution
    please share if you had faced such issue and any suggestions to solve this
    examples why this could happen ,like possibilities in application code
    Thanks

      Load Profile
                                              Per Second       Per Transaction
                   Redo size:             11,685.79              3,660.98
                   Logical reads:             71,445.74             22,382.86
                   Block changes:                 70.89                 22.21
                   Physical reads:                 58.63                 18.37
                   Physical writes:                  2.80                  0.88
                   User calls:                652.93                204.55
                   Parses:                 48.39                 15.16
                   Hard parses:                  0.33                  0.10
                   Sorts:                  6.90                  2.16
                   Logons:                  0.23                  0.07
                   Executes:                 52.71                 16.51
                   Transactions:                  3.19
                % Blocks changed per Read:    0.10    Recursive Call %:    30.48
                Rollback per transaction %:    2.57       Rows per Sort:    29.66
        Instance Efficiency Percentages (Target 100%)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 Buffer Nowait %:  100.00       Redo NoWait %:  100.00
                 Buffer  Hit   %:   99.92    In-memory Sort %:  100.00
                 Library Hit   %:   98.47        Soft Parse %:   99.32
                 Execute to Parse %:    8.19         Latch Hit %:   99.63
                 Parse CPU to Parse Elapsd %:   89.90     % Non-Parse CPU:   99.62There rdbms performs approximately 48 soft parse per second ,Soft Parse % and Library Hit very close to 99 it means there main part of sql are shared.Also here user calls similar high per second but executions less,however you should be try minimizing soft parsing.I do not know exactly for which interval you get this report but Execute to Parse % indicate that when executing query oracle can not find early cursor handles(open or closed) but it can find sql text and plan information from shared pool according hash values,in this case oracle perform soft parse again.In your case you also investigate shared pool size/fragmentation.To avoid little Execute to Parse % you can increase SESSION_CACHED_CURSORS or implement CURSOR_SPACE_FOR_TIME.So refer documentation and find how to use these parameters.

  • Sql parse and shared pool

    hi friends i have a procedure
    and its have *(AD IS NULL OR NVAD LIKE AD||'%') AND (SOYAD IS NULL OR NVSOYAD LIKE SOYAD||'%')*
    if i use this query and pass different things for AD ; is it become a brand new query for oracle because of ||'%' or its parse and put in shared pool and for a sometime this query don't parse and take from shared pool
       PROCEDURE P_YENI_TALEP_LISTELE(RC_CURSOR OUT SYS_REFCURSOR,TOPLAM_TALEP OUT NUMBER,SAYFA_INDEX IN NUMBER,SAYFA_BUYUKLUK  IN NUMBER,TC_NO IN NVARCHAR2,AD IN NVARCHAR2,SOYAD IN NVARCHAR2,ONAY IN NUMBER,H_TIP_ID IN NUMBER)
        AS 
        BEGIN
          OPEN RC_CURSOR FOR  SELECT TA.NT_ID,TA.NTC_NO,HI.NVHIZMET_TUR AS NVARM_KONU,TA.NVOPRTR_CVP,TA.NVGRSM_SURE,TA.NVGRSM_DRM,
                       TA.NHIZMET,TA.BONAY,TA.DTLP_TRH,TH.NVAD,TH.NVSOYAD,TH.NVILCE ,TA.DALINAN_TRH,
                       TA.DBRKLAN_TRH,TA.NG_ID,GU.NVAD1||' - '||GU.NVAD2 AS GUZERGAH,HI.NH_TIP_ID,HT.NVHIZMET_TIP,
                FROM H_TALEP TA,TNM_HASTA_BILGI TH,TNM_HIZMET HI,SBT_HIZMET_TIP HT,TNM_GUZERGAH GU
          WHERE TA.NTC_NO=TH.NTC_NO AND TA.NH_ID=HI.NH_ID AND HI.NH_TIP_ID=HT.NH_TIP_ID AND(TC_NO IS NULL OR TA.NTC_NO=TO_NUMBER(TC_NO)) AND TA.NG_ID=GU.NG_ID AND
                          *(AD IS NULL OR NVAD LIKE AD||'%') AND (SOYAD IS NULL OR NVSOYAD LIKE SOYAD||'%')*...............

    The code you have posted has no DYNAMIC SQL in it.... Static SQL inside PL/SQL will bind all the variables for you.
    So what you are saying does not compute.
    What is making you think a 'brand new query' is being parsed for each execution?
    Edited by: Tubby on Nov 8, 2008 4:19 PM

  • Question About Xerces Parser and Java  JAXP

    Hi,
    I have confusion about both of these API Xerces Parser and Java JAXP ,
    Please tell me both are used for same purpose like parsing xml document and one is by Apache and one is by sun ?
    And both can parse in SAX, or DOM model ?
    Is there any difference in performane if i use xerces in my program rather then JAXP, or is ther any other glance at all.
    Please suggest some thing i have and xml document and i want to parse it.
    Thanks

    Hi
    Xerces is Apaches implementation of W3C Dom specifiacation.
    JAXP is a API for XML parsing its not implementation.
    Sun ships a default implementation for JAXP.
    you have factory methods for selecting a parser at run time or you can set in some config file about what is the implementaion class for the SAXParser is to be chosen (typically you give give the class file of xerces sax parser or dom parser etc..)
    go to IBM Developerworks site and serch for Xerces parser config. which have a good explination of how to do it.
    and browse through j2ee api .may find how to do it.

  • Parsing and Indexing

    I am writing a PL/SQL routine to parse, identify individual words from a string (NVARCHAR2/NCLOB) and store them as individual words in an "index" table so they can be searched upon later. My lack of experience in NLS shows here. My question is...When parsing the NVARCHAR2/NCLOB strings how do I identify which characters should be part of a word and which are expendable (punctuation, etc). Do I have to store and manage characters from each locale and then identify the local prior to parsing and indexing? This seems like an incredible amount of work not to mention needing somebody that understands each locale. Any help is appreciated.
    Thanks,
    Greg
    null

    This seems like an incredible amount of work not to mention needing somebody that understands each localeYes it is. Thats why Oracle has a product called Oracle Text. Oracle Text uses standard SQL to index, search, and analyze text and documents stored in Oracle8i, in files and on the Web. It also indexes metadata extracted from image, audio, and video media by Oracle interMedia. It supports 39 langauges.
    Check out http://technet.oracle.com/products/intermedia/ and click Oracle Text for more information
    null

Maybe you are looking for

  • Can I 'explain' data in a pivot table?

    Hi All. I have a request that has baffled me. I need a way to use 'text' to describe the results of a report. If I were doing a simple report, this would be a non-issue. Here are my hurdles: I have a report that uses a Union via Set Operations (so I'

  • Re: Satellite U400-11Q with Vista has new HDD but no recovery disk

    Hi, Before I start a very important message: I usually don't work with pc...:-) At my work we have an IT-department for our PC's :-)) However, now I have to work privately with a PC/ notebook and I need help: I am sitting in front of a Toshiba Satell

  • Synch problems after upgrade from Office 2010 Beta

    I updated from the beta version of Office 2010 to the pro version. Now I can not synch my calendar. I get the message "no supported calendar application can be found" on the info page of my device in Itunes (seems it can not find Outlook 2010), even

  • More than one inventory on cluster nodes?

    Hello, I have installed OracleDB EE 10gR2 in CFC, two nodes with RH and Serviceguard. DB 'binaries' are installed on local storage (both nodes) and datafiles on shared storage. oraInventory is at local storage... Now I have to deploy OracleAS Infrast

  • Rolling text/image transition?

    okay so i'm completely stumped on this one...i'm trying to create an effect where when you click on a button like 'about us' or 'services' the text/images/information on teh page rolls up from the bottom (which i know how to do) but then i need it to