elena 2003/02/10 11:10:05
Modified: java/src/org/apache/xerces/dom DOMNormalizer.java
Log:
Checking for DOM L1 nodes is done using localName instead of relying on colon.
Local namespace binder now carries all the local declaration that has been
modified/added
by the namespace algorithm.
Revision Changes Path
1.28 +12 -21 xml-xerces/java/src/org/apache/xerces/dom/DOMNormalizer.java
Index: DOMNormalizer.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/dom/DOMNormalizer.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- DOMNormalizer.java 23 Jan 2003 17:27:11 -0000 1.27
+++ DOMNormalizer.java 10 Feb 2003 19:10:04 -0000 1.28
@@ -153,9 +153,6 @@
/** error handler */
protected DOMErrorHandler fErrorHandler;
- // counter for new prefix names
- protected int fNamespaceCounter = 1;
-
// Validation against namespace aware grammar
protected boolean fNamespaceValidation = false;
@@ -207,7 +204,6 @@
// reset namespace context
fNamespaceContext.reset();
fNamespaceContext.declarePrefix(XMLSymbols.EMPTY_STRING,
XMLSymbols.EMPTY_STRING);
- fNamespaceCounter = 1;
if ((fConfiguration.features & DOMConfigurationImpl.VALIDATE) != 0) {
// REVISIT: currently we only support revalidation against XML
Schemas
@@ -309,6 +305,7 @@
}
// push namespace context
fNamespaceContext.pushContext();
+ fLocalNSBinder.reset();
ElementImpl elem = (ElementImpl)node;
if (elem.needsSyncChildren()) {
@@ -606,8 +603,6 @@
value = fSymbolTable.addSymbol(value);
if (value.length() != 0) {
fNamespaceContext.declarePrefix(localpart, value);
- fLocalNSBinder.declarePrefix(localpart, value);
-
} else {
// REVISIT: issue error on invalid declarations
// xmlns:foo = ""
@@ -618,9 +613,7 @@
} else { // (localpart == fXmlnsSymbol && prefix ==
fEmptySymbol) -- xmlns
// empty prefix is always bound ("" or some string)
value = fSymbolTable.addSymbol(value);
- fLocalNSBinder.declarePrefix(XMLSymbols.EMPTY_STRING,
value);
fNamespaceContext.declarePrefix(XMLSymbols.EMPTY_STRING, value);
-
//removeDefault (attr, attributes);
continue;
}
@@ -665,23 +658,21 @@
fNamespaceContext.declarePrefix(prefix, uri);
}
} else { // Element has no namespace
- String tagName = element.getNodeName();
- int colon = tagName.indexOf(':');
- if (colon > -1) {
- // Error situation: DOM Level 1 node!
+ if (element.getLocalName() == null) {
+ // Error: DOM Level 1 node!
boolean continueProcess = true;
if (fErrorHandler != null) {
if (fNamespaceValidation) {
- modifyDOMError("DOM Level 1 node: "+tagName,
DOMError.SEVERITY_FATAL_ERROR, element);
+ modifyDOMError("DOM Level 1 node: "+element.getNodeName(),
DOMError.SEVERITY_FATAL_ERROR, element);
fErrorHandler.handleError(fDOMError);
} else {
- modifyDOMError("DOM Level 1 node: "+tagName,
DOMError.SEVERITY_ERROR, element);
+ modifyDOMError("DOM Level 1 node: "+element.getNodeName(),
DOMError.SEVERITY_ERROR, element);
continueProcess = fErrorHandler.handleError(fDOMError);
}
}
if (fNamespaceValidation || !continueProcess) {
// stop the namespace fixup and validation
- throw new RuntimeException("DOM Level 1 node: "+tagName);
+ throw new RuntimeException("DOM Level 1 node:
"+element.getNodeName());
}
} else { // uri=null and no colon (DOM L2 node)
uri = fNamespaceContext.getURI(XMLSymbols.EMPTY_STRING);
@@ -780,9 +771,10 @@
// find a prefix following the pattern "NS" +index
(starting at 1)
// make sure this prefix is not declared in the
current scope.
- prefix = fSymbolTable.addSymbol(PREFIX
+fNamespaceCounter++);
+ int counter = 1;
+ prefix = fSymbolTable.addSymbol(PREFIX +counter++);
while (fLocalNSBinder.getURI(prefix)!=null) {
- prefix = fSymbolTable.addSymbol(PREFIX
+fNamespaceCounter++);
+ prefix = fSymbolTable.addSymbol(PREFIX
+counter++);
}
}
@@ -798,14 +790,13 @@
}
} else { // attribute uri == null
- // data
- int colon = name.indexOf(':');
// XML 1.0 Attribute value normalization
//value = normalizeAttributeValue(value, attr);
+
// reset id-attributes
((AttrImpl)attr).setIdAttribute(false);
- if (colon > -1) {
+ if (attr.getLocalName() == null) {
// It is an error if document has DOM L1 nodes.
boolean continueProcess = true;
if (fErrorHandler != null) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]