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 ::= '<?' 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