You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by an...@locus.apache.org on 2000/10/06 20:22:49 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl XMLDocumentScanner.java XMLEntityManager.java
andyc 00/10/06 11:22:49
Modified: java/src/org/apache/xerces/impl Tag: xerces_j_2
XMLDocumentScanner.java XMLEntityManager.java
Log:
Handle built-in entities: "amp", "lt", "gt", "quot", and "apos".
Revision Changes Path
No revision
No revision
1.1.2.13 +86 -10 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.12
retrieving revision 1.1.2.13
diff -u -r1.1.2.12 -r1.1.2.13
--- XMLDocumentScanner.java 2000/10/06 17:50:00 1.1.2.12
+++ XMLDocumentScanner.java 2000/10/06 18:22:48 1.1.2.13
@@ -100,7 +100,7 @@
* @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.12 2000/10/06 17:50:00 andyc Exp $
+ * @version $Id: XMLDocumentScanner.java,v 1.1.2.13 2000/10/06 18:22:48 andyc Exp $
*/
public class XMLDocumentScanner
extends XMLScanner
@@ -283,6 +283,38 @@
/** Single character array. */
private final char[] fSingleChar = new char[1];
+ // symbols
+
+ /** Symbol: "amp". */
+ private String fAmpSymbol;
+
+ /** Symbol: "lt". */
+ private String fLtSymbol;
+
+ /** Symbol: "gt". */
+ private String fGtSymbol;
+
+ /** Symbol: "quot". */
+ private String fQuotSymbol;
+
+ /** Symbol: "apos". */
+ private String fAposSymbol;
+
+ /** Symbol: "version". */
+ private String fVersionSymbol;
+
+ /** Symbol: "encoding". */
+ private String fEncodingSymbol;
+
+ /** Symbol: "standalone". */
+ private String fStandaloneSymbol;
+
+ /** Symbol: "xml". */
+ private String fXmlSymbol;
+
+ /** Symbol: "xmlns". */
+ private String fXmlnsSymbol;
+
//
// Constructors
//
@@ -364,6 +396,18 @@
fStandalone = false;
fScanningDTD = false;
+ // save built-in entity names
+ fAmpSymbol = fSymbolTable.addSymbol("amp");
+ fLtSymbol = fSymbolTable.addSymbol("lt");
+ fGtSymbol = fSymbolTable.addSymbol("gt");
+ fQuotSymbol = fSymbolTable.addSymbol("quot");
+ fAposSymbol = fSymbolTable.addSymbol("apos");
+ fVersionSymbol = fSymbolTable.addSymbol("version");
+ fEncodingSymbol = fSymbolTable.addSymbol("encoding");
+ fStandaloneSymbol = fSymbolTable.addSymbol("standalone");
+ fXmlSymbol = fSymbolTable.addSymbol("xml");
+ fXmlnsSymbol = fSymbolTable.addSymbol("xmlns");
+
// setup dispatcher
setScannerState(SCANNER_STATE_XML_DECL);
setDispatcher(fXMLDeclDispatcher);
@@ -559,7 +603,7 @@
String name = scanPseudoAttribute(fString);
switch (state) {
case STATE_VERSION: {
- if (name.equals("version")) {
+ if (name == fVersionSymbol) {
version = fString.toString();
state = STATE_ENCODING;
if (!version.equals("1.0")) {
@@ -569,7 +613,7 @@
XMLErrorReporter.SEVERITY_FATAL_ERROR);
}
}
- else if (name.equals("encoding")) {
+ else if (name == fEncodingSymbol) {
if (!scanningTextDecl) {
fErrorReporter.reportError(XMLMessageFormatter.XML_DOMAIN,
"VersionInfoRequired",
@@ -593,13 +637,13 @@
break;
}
case STATE_ENCODING: {
- if (name.equals("encoding")) {
+ if (name == fEncodingSymbol) {
encoding = fString.toString();
state = scanningTextDecl ? STATE_DONE : STATE_STANDALONE;
// TODO: check encoding name; set encoding on
// entity scanner
}
- else if (!scanningTextDecl && name.equals("standalone")) {
+ else if (!scanningTextDecl && name == fStandaloneSymbol) {
standalone = fString.toString();
state = STATE_DONE;
if (!standalone.equals("yes") && !standalone.equals("no")) {
@@ -616,7 +660,7 @@
break;
}
case STATE_STANDALONE: {
- if (name.equals("standalone")) {
+ if (name == fStandaloneSymbol) {
standalone = fString.toString();
state = STATE_DONE;
if (!standalone.equals("yes") && !standalone.equals("no")) {
@@ -1122,13 +1166,45 @@
throw new SAXException("entity reference must end with semi-colon");
}
+ // handle built-in entities
+ if (name == fAmpSymbol) {
+ handleCharacter('&');
+ }
+ else if (name == fLtSymbol) {
+ handleCharacter('<');
+ }
+ else if (name == fGtSymbol) {
+ handleCharacter('>');
+ }
+ else if (name == fQuotSymbol) {
+ handleCharacter('"');
+ }
+ else if (name == fAposSymbol) {
+ handleCharacter('\'');
+ }
+
// start entity
- fEntityManager.startEntity(name);
+ else {
+ fEntityManager.startEntity(name);
+ }
} // scanEntityReference()
// utility methods
+ /**
+ * Calls document handler with a single character.
+ *
+ * @param c
+ */
+ protected void handleCharacter(char c) throws SAXException {
+ if (fDocumentHandler != null) {
+ fSingleChar[0] = c;
+ fString.setValues(fSingleChar, 0, 1);
+ fDocumentHandler.characters(fString);
+ }
+ } // handleCharacter(char)
+
/**
* Binds the namespaces. This method will handle calling the
* document handler to start the prefix mappings.
@@ -1186,11 +1262,11 @@
String arawname = fAttributeQName.rawname;
String aprefix = fAttributeQName.prefix != null
? fAttributeQName.prefix : "";
- if (aprefix.equals("xml")) {
+ if (aprefix == fXmlSymbol) {
fAttributeQName.uri = NamespaceSupport.XMLNS;
attributes.setName(i, fAttributeQName);
}
- else if (!arawname.equals("xmlns") && !arawname.startsWith("xmlns:")) {
+ else if (arawname != fXmlnsSymbol && !arawname.startsWith("xmlns:")) {
if (fAttributeQName.prefix != null) {
fAttributeQName.uri = fNamespaceSupport.getURI(fAttributeQName.prefix);
if (fAttributeQName.uri == null) {
@@ -1225,7 +1301,7 @@
// make sure the elements match
QName startElement = (QName)fElementStack.pop();
- if (!element.rawname.equals(startElement.rawname)) {
+ if (element.rawname != startElement.rawname) {
// REVISIT: report error
throw new SAXException("end tag doesn't match start tag");
}
1.1.2.8 +4 -9 xml-xerces/java/src/org/apache/xerces/impl/Attic/XMLEntityManager.java
Index: XMLEntityManager.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/Attic/XMLEntityManager.java,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -r1.1.2.7 -r1.1.2.8
--- XMLEntityManager.java 2000/10/06 03:49:34 1.1.2.7
+++ XMLEntityManager.java 2000/10/06 18:22:48 1.1.2.8
@@ -105,7 +105,7 @@
* @author Stubs generated by DesignDoc on Mon Sep 18 18:23:16 PDT 2000
* @author Andy Clark, IBM
*
- * @version $Id: XMLEntityManager.java,v 1.1.2.7 2000/10/06 03:49:34 andyc Exp $
+ * @version $Id: XMLEntityManager.java,v 1.1.2.8 2000/10/06 18:22:48 andyc Exp $
*/
public class XMLEntityManager
implements XMLComponent {
@@ -362,13 +362,6 @@
fEntities.clear();
fEntityStack.removeAllElements();
- // add default entities
- addInternalEntity("lt", "<");
- addInternalEntity("gt", ">");
- addInternalEntity("amp", "&");
- addInternalEntity("apos", "'");
- addInternalEntity("quot", "\"");
-
} // reset(XMLComponentManager)
/**
@@ -473,7 +466,9 @@
// call handler
if (fEntityHandler != null) {
- String ianaEncoding = EncodingMap.getJava2IANAMapping(encoding);
+ String ianaEncoding = encoding != null
+ ? EncodingMap.getJava2IANAMapping(encoding)
+ : null;
fEntityHandler.startEntity(name, publicId, systemId, ianaEncoding);
}