You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by le...@locus.apache.org on 2000/10/06 01:37:09 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/impl XMLScanner.java XMLDocumentScanner.java

lehors      00/10/05 16:37:09

  Modified:    java/src/org/apache/xerces/impl Tag: xerces_j_2
                        XMLDocumentScanner.java
  Added:       java/src/org/apache/xerces/impl Tag: xerces_j_2
                        XMLScanner.java
  Log:
  moved scanPI and scanComment to XMLScanner which carries
  scanning methods relevant to both XMLDcoumentScanner and XMLDTDScanner
  so they are shared and no code is duplicated. More may follow.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.10  +10 -119   xml-xerces/java/src/org/apache/xerces/impl/Attic/XMLDocumentScanner.java
  
  Index: XMLDocumentScanner.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/Attic/XMLDocumentScanner.java,v
  retrieving revision 1.1.2.9
  retrieving revision 1.1.2.10
  diff -u -r1.1.2.9 -r1.1.2.10
  --- XMLDocumentScanner.java	2000/10/05 23:25:53	1.1.2.9
  +++ XMLDocumentScanner.java	2000/10/05 23:37:08	1.1.2.10
  @@ -100,9 +100,10 @@
    * @author Stubs generated by DesignDoc on Mon Sep 11 11:10:57 PDT 2000
    * @author Andy Clark, IBM
    *
  - * @version $Id: XMLDocumentScanner.java,v 1.1.2.9 2000/10/05 23:25:53 ericye Exp $
  + * @version $Id: XMLDocumentScanner.java,v 1.1.2.10 2000/10/05 23:37:08 lehors Exp $
    */
   public class XMLDocumentScanner
  +    extends XMLScanner
       implements XMLComponent, XMLDocumentSource, XMLEntityHandler {
   
       //
  @@ -217,9 +218,6 @@
       /** Document handler. */
       protected XMLDocumentHandler fDocumentHandler;
   
  -    /** Entity scanner. */
  -    protected XMLEntityScanner fEntityScanner;
  -
       /** Entity stack. */
       protected Stack fEntityStack = new Stack();
   
  @@ -288,12 +286,6 @@
       /** Element attributes. */
       private XMLAttributes fAttributes = new XMLAttributes();
   
  -    /** String. */
  -    private XMLString fString = new XMLString();
  -
  -    /** String buffer. */
  -    private XMLStringBuffer fStringBuffer = new XMLStringBuffer();
  -
       /** Single character array. */
       private final char[] fSingleChar = new char[1];
   
  @@ -707,57 +699,17 @@
       } // scanPseudoAttribute(XMLString):String
       
       /**
  -     * Scans a processing instruction.
  -     * <p>
  -     * <pre>
  -     * [16] PI ::= '&lt;?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
  -     * [17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
  -     * </pre>
  -     */
  -    protected void scanPI() throws IOException, SAXException {
  -
  -        // target
  -        String target = fEntityScanner.scanName();
  -        if (target == null) {
  -            fErrorReporter.reportError( XMLMessageFormatter.XML_DOMAIN, "PITargetRequired", 
  -                                        null, XMLErrorReporter.SEVERITY_FATAL_ERROR);
  -        }
  -
  -        // scan data
  -        scanPIData(target);
  -
  -    } // scanPI()
  -
  -    /**
        * Scans a processing data. This is needed to handle the situation
        * where a document starts with a processing instruction whose 
        * target name <em>starts with</em> "xml". (e.g. xmlfoo)
  +     *
  +     * @param target The PI target
  +     * @param data The string to fill in with the data
        */
  -    protected void scanPIData(String target) 
  +    protected void scanPIData(String target, XMLString data) 
           throws IOException, SAXException {
  -
  -        // check target
  -        if (target.length() == 3) {
  -            char c0 = Character.toLowerCase(target.charAt(0));
  -            char c1 = Character.toLowerCase(target.charAt(1));
  -            char c2 = Character.toLowerCase(target.charAt(2));
  -            if (c0 == 'x' && c1 == 'm' && c2 == 'l') {
  -                fErrorReporter.reportError( XMLMessageFormatter.XML_DOMAIN, "ReservedPITarget", 
  -                                            null, XMLErrorReporter.SEVERITY_FATAL_ERROR);
  -            }
  -        }
   
  -        // data
  -        // REVISIT: handle invalid character, eof
  -        XMLString data = fString;
  -        if (fEntityScanner.scanData("?>", fString)) {
  -            fStringBuffer.clear();
  -            do {
  -                fStringBuffer.append(fString);
  -            } while (fEntityScanner.scanData("?>", fString));
  -            fStringBuffer.append(fString);
  -            data = fStringBuffer;
  -        }
  +        super.scanPIData(target, data);
   
           // call handler
           if (fDocumentHandler != null) {
  @@ -777,17 +729,7 @@
        */
       protected void scanComment() throws IOException, SAXException {
   
  -        // text
  -        // REVISIT: handle invalid character, eof
  -        fStringBuffer.clear();
  -        while (fEntityScanner.scanData("--", fString)) {
  -            fStringBuffer.append(fString);
  -        }
  -        fStringBuffer.append(fString);
  -        if (!fEntityScanner.skipChar('>')) {
  -            fErrorReporter.reportError( XMLMessageFormatter.XML_DOMAIN, "DashDashInComment", 
  -                                        null, XMLErrorReporter.SEVERITY_FATAL_ERROR);
  -        }
  +        scanComment(fStringBuffer);
   
           // call handler
           if (fDocumentHandler != null) {
  @@ -1150,60 +1092,9 @@
        */
       protected void scanCharReference() 
           throws IOException, SAXException {
  -
  -        // scan hexadecimal value
  -        boolean hex = false;
  -        if (fEntityScanner.skipChar('x')) {
  -            fStringBuffer.clear();
  -            boolean digit = true;
  -            do {
  -                int c = fEntityScanner.peekChar();
  -                digit = (c >= '0' && c <= '9') ||
  -                        (c >= 'a' && c <= 'f') ||
  -                        (c >= 'A' && c <= 'F');
  -                if (digit) {
  -                    fEntityScanner.scanChar();
  -                    fStringBuffer.append((char)c);
  -                }
  -            } while (digit);
  -        }
   
  -        // scan decimal value
  -        else {
  -            fStringBuffer.clear();
  -            boolean digit = true;
  -            do {
  -                int c = fEntityScanner.peekChar();
  -                digit = c >= '0' && c <= '9';
  -                if (digit) {
  -                    fEntityScanner.scanChar();
  -                    fStringBuffer.append((char)c);
  -                }
  -            } while (digit);
  -        }
  +        int value = scanCharReferenceValue();
   
  -        // end
  -        if (!fEntityScanner.skipChar(';')) {
  -            // REVISIT: report error
  -            throw new SAXException("character reference must end with semi-colon");
  -        }
  -        
  -        // convert string to number
  -        int value = -1;
  -        try {
  -            value = Integer.parseInt(fStringBuffer.toString(),
  -                                     hex ? 16 : 10);
  -        }
  -        catch (NumberFormatException e) {
  -            // let -1 value drop through
  -        }
  -
  -        // character reference must be a valid XML character
  -        if (!XMLChar.isValid((char)value)) {
  -            // REVISIT: report error
  -            throw new SAXException("MSG_INVALID_CHARREF");
  -        }
  -        
           // call handler
           if (fDocumentHandler != null) {
               fSingleChar[0] = (char)value;
  @@ -1654,7 +1545,7 @@
                           fStringBuffer.append((char)fEntityScanner.scanChar());
                       }
                       String target = fSymbolTable.addSymbol(fStringBuffer.ch, fStringBuffer.offset, fStringBuffer.length);
  -                    scanPIData(target);
  +                    scanPIData(target, fString);
                   }
   
                   // standard XML declaration
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +251 -0    xml-xerces/java/src/org/apache/xerces/impl/Attic/XMLScanner.java