You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2004/05/07 23:35:35 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/parsers AbstractDOMParser.java DOMParserImpl.java
mrglavas 2004/05/07 14:35:35
Modified: java/src/org/apache/xerces/dom DOMNormalizer.java
DOMConfigurationImpl.java
java/src/org/apache/xml/serialize XMLSerializer.java
DOMSerializerImpl.java
java/src/org/apache/xerces/parsers AbstractDOMParser.java
DOMParserImpl.java
Log:
Contributed by Neil Delima:
Implementation of the namespace-declarations parameter for
DOM Level 3 Core, LSParser and LSSerializer. This discards
namespace declaration attributes when it is set to false.
Updating each DOMConfiguration and including the
namespace-declarations parameter in the computaiton of infoset.
See: http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#DOMConfiguration
Revision Changes Path
1.55 +13 -1 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.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- DOMNormalizer.java 22 Apr 2004 20:39:03 -0000 1.54
+++ DOMNormalizer.java 7 May 2004 21:35:35 -0000 1.55
@@ -297,6 +297,18 @@
// normalize attribute values
// remove default attributes
namespaceFixUp(elem, attributes);
+
+ if ((fConfiguration.features & DOMConfigurationImpl.NSDECL) == 0 && attributes != null ) {
+ for (int i = 0; i < attributes.getLength(); ++i) {
+ Attr att = (Attr)attributes.getItem(i);
+ if (XMLSymbols.PREFIX_XMLNS.equals(att.getPrefix()) ||
+ XMLSymbols.PREFIX_XMLNS.equals(att.getName())) {
+ elem.removeAttributeNode(att);
+ --i;
+ }
+ }
+ }
+
} else {
if ( attributes!=null ) {
for ( int i=0; i<attributes.getLength(); ++i ) {
1.29 +17 -13 xml-xerces/java/src/org/apache/xerces/dom/DOMConfigurationImpl.java
Index: DOMConfigurationImpl.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/dom/DOMConfigurationImpl.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- DOMConfigurationImpl.java 14 Apr 2004 15:54:06 -0000 1.28
+++ DOMConfigurationImpl.java 7 May 2004 21:35:35 -0000 1.29
@@ -148,8 +148,9 @@
protected final static short VALIDATE = 0x1<<6;
protected final static short PSVI = 0x1<<7;
protected final static short WELLFORMED = 0x1<<8;
+ protected final static short NSDECL = 0x1<<9;
- protected final static short INFOSET_TRUE_PARAMS = NAMESPACES | COMMENTS | WELLFORMED;
+ protected final static short INFOSET_TRUE_PARAMS = NAMESPACES | COMMENTS | WELLFORMED | NSDECL;
protected final static short INFOSET_FALSE_PARAMS = ENTITIES | DTNORMALIZATION | CDATA;
protected final static short INFOSET_MASK = INFOSET_TRUE_PARAMS | INFOSET_FALSE_PARAMS;
@@ -254,7 +255,8 @@
features |= COMMENTS;
features |= CDATA;
features |= SPLITCDATA;
- features |= WELLFORMED;
+ features |= WELLFORMED;
+ features |= NSDECL;
if (symbolTable == null) {
symbolTable = new SymbolTable();
@@ -544,6 +546,9 @@
else if (name.equalsIgnoreCase(Constants.DOM_WELLFORMED)) {
features = (short) (state ? features | WELLFORMED : features & ~WELLFORMED );
}
+ else if (name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)) {
+ features = (short) (state ? features | NSDECL : features & ~NSDECL);
+ }
else if (name.equalsIgnoreCase(Constants.DOM_INFOSET)) {
// Setting to false has no effect.
if (state) {
@@ -566,8 +571,7 @@
throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
}
}
- else if (name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)
- || name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)) {
+ else if ( name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)) {
if (!state) { // false is not supported
String msg =
DOMMessageFormatter.formatMessage(
@@ -576,7 +580,6 @@
new Object[] { name });
throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
}
-
}
else if (name.equalsIgnoreCase(SEND_PSVI) ){
// REVISIT: turning augmentation of PSVI is not support,
@@ -788,6 +791,9 @@
else if (name.equalsIgnoreCase(Constants.DOM_WELLFORMED)) {
return (features & WELLFORMED) != 0 ? Boolean.TRUE : Boolean.FALSE;
}
+ else if (name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)) {
+ return (features & NSDECL) != 0 ? Boolean.TRUE : Boolean.FALSE;
+ }
else if (name.equalsIgnoreCase(Constants.DOM_INFOSET)) {
return (features & INFOSET_MASK) == INFOSET_TRUE_PARAMS ? Boolean.TRUE : Boolean.FALSE;
}
@@ -803,10 +809,8 @@
}
else if (name.equalsIgnoreCase(Constants.DOM_PSVI)) {
return (features & PSVI) != 0 ? Boolean.TRUE : Boolean.FALSE;
- }
- else if (
- name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)
- || name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)) {
+ }
+ else if (name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)) {
return Boolean.TRUE;
}
else if (name.equalsIgnoreCase(Constants.DOM_ERROR_HANDLER)) {
@@ -879,8 +883,9 @@
|| name.equalsIgnoreCase(Constants.DOM_VALIDATE)
|| name.equalsIgnoreCase(Constants.DOM_WELLFORMED)
|| name.equalsIgnoreCase(Constants.DOM_INFOSET)
+ || name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)
) {
- return true ;
+ return true;
}//features whose parameter value can not be set to 'true'
else if (
name.equalsIgnoreCase(Constants.DOM_NORMALIZE_CHARACTERS)
@@ -890,8 +895,7 @@
) {
return (value.equals(Boolean.TRUE)) ? false : true;
}//features whose parameter value can not be set to 'false'
- else if( name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)
- || name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)
+ else if( name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)
|| name.equalsIgnoreCase(SEND_PSVI)
) {
return (value.equals(Boolean.TRUE)) ? true : false;
1.61 +26 -7 xml-xerces/java/src/org/apache/xml/serialize/XMLSerializer.java
Index: XMLSerializer.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xml/serialize/XMLSerializer.java,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- XMLSerializer.java 13 Apr 2004 17:30:01 -0000 1.60
+++ XMLSerializer.java 7 May 2004 21:35:35 -0000 1.61
@@ -124,6 +124,11 @@
*/
protected boolean fNamespaces = false;
+ /**
+ * Controls whether namespace prefixes will be printed out during serialization
+ */
+ protected boolean fNamespacePrefixes = true;
+
private boolean fPreserveSpace;
@@ -841,7 +846,9 @@
// the prefix is either undeclared
// or
// conflict: the prefix is bound to another URI
- printNamespaceAttr(prefix, uri);
+ if (fNamespacePrefixes) {
+ printNamespaceAttr(prefix, uri);
+ }
fLocalNSBinder.declarePrefix(prefix, uri);
fNSBinder.declarePrefix(prefix, uri);
}
@@ -868,7 +875,9 @@
if (uri !=null && uri.length() > 0) {
// there is a default namespace decl that is bound to
// non-zero length uri, output xmlns=""
- printNamespaceAttr(XMLSymbols.EMPTY_STRING, XMLSymbols.EMPTY_STRING);
+ if (fNamespacePrefixes) {
+ printNamespaceAttr(XMLSymbols.EMPTY_STRING, XMLSymbols.EMPTY_STRING);
+ }
fLocalNSBinder.declarePrefix(XMLSymbols.EMPTY_STRING, XMLSymbols.EMPTY_STRING);
fNSBinder.declarePrefix(XMLSymbols.EMPTY_STRING, XMLSymbols.EMPTY_STRING);
}
@@ -918,7 +927,7 @@
// check if we need to output this declaration
prefix = attr.getPrefix();
prefix = (prefix == null ||
- prefix.length() == 0) ? XMLSymbols.EMPTY_STRING :fSymbolTable.addSymbol(prefix);
+ prefix.length() == 0) ? XMLSymbols.EMPTY_STRING : fSymbolTable.addSymbol(prefix);
localpart = fSymbolTable.addSymbol( attr.getLocalName());
if (prefix == XMLSymbols.PREFIX_XMLNS) { //xmlns:prefix
localUri = fLocalNSBinder.getURI(localpart); // local prefix mapping
@@ -926,7 +935,13 @@
if (value.length() != 0 ) {
if (localUri == null) {
// declaration was not printed while fixing element namespace binding
- printNamespaceAttr(localpart, value);
+
+ // If the DOM Level 3 namespace-prefixes feature is set to false
+ // do not print xmlns attributes
+ if (fNamespacePrefixes) {
+ printNamespaceAttr(localpart, value);
+ }
+
// case 4: <elem xmlns:xx="foo" xx:attr=""/>
// where attribute is bound to "bar".
// If the xmlns:xx is output here first, later we should not
@@ -948,7 +963,9 @@
value = fSymbolTable.addSymbol(value);
if (localUri == null ){
// declaration was not printed while fixing element namespace binding
- printNamespaceAttr(XMLSymbols.EMPTY_STRING, value);
+ if (fNamespacePrefixes) {
+ printNamespaceAttr(XMLSymbols.EMPTY_STRING, value);
+ }
// case 4 does not apply here since attributes can't use
// default namespace
}
@@ -997,7 +1014,9 @@
name=prefix+":"+localpart;
}
// add declaration for the new prefix
- printNamespaceAttr(prefix, uri);
+ if (fNamespacePrefixes) {
+ printNamespaceAttr(prefix, uri);
+ }
value = fSymbolTable.addSymbol(value);
fLocalNSBinder.declarePrefix(prefix, value);
fNSBinder.declarePrefix(prefix, uri);
1.22 +29 -19 xml-xerces/java/src/org/apache/xml/serialize/DOMSerializerImpl.java
Index: DOMSerializerImpl.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xml/serialize/DOMSerializerImpl.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- DOMSerializerImpl.java 22 Apr 2004 20:39:04 -0000 1.21
+++ DOMSerializerImpl.java 7 May 2004 21:35:35 -0000 1.22
@@ -156,11 +156,12 @@
boolean state = ((Boolean) value).booleanValue();
if (name.equalsIgnoreCase(Constants.DOM_INFOSET)){
if (state){
- features &=~ENTITIES;
- features &=~CDATA;
- features |=NAMESPACES;
- features |=WELLFORMED;
- features |=COMMENTS;
+ features &= ~ENTITIES;
+ features &= ~CDATA;
+ features |= NAMESPACES;
+ features |= NSDECL;
+ features |= WELLFORMED;
+ features |= COMMENTS;
}
// false does not have any effect
} else if (name.equalsIgnoreCase(Constants.DOM_XMLDECL)) {
@@ -221,9 +222,15 @@
new Object[] { name });
throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
}
- } else if (
- name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)
- || name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)
+ }else if (
+ name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)) {
+ //namespace-declaration has effect only if namespaces is true
+ features =
+ (short) (state
+ ? features | NSDECL
+ : features & ~NSDECL);
+ serializer.fNamespacePrefixes = state;
+ } else if (name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)
|| name.equalsIgnoreCase(Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)) {
// false is not supported
if (!state) {
@@ -289,7 +296,8 @@
|| name.equalsIgnoreCase(Constants.DOM_INFOSET)
|| name.equalsIgnoreCase(Constants.DOM_ENTITIES)
|| name.equalsIgnoreCase(Constants.DOM_CDATA_SECTIONS)
- || name.equalsIgnoreCase(Constants.DOM_COMMENTS)){
+ || name.equalsIgnoreCase(Constants.DOM_COMMENTS)
+ || name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)){
// both values supported
return true;
}
@@ -303,8 +311,7 @@
// true is not supported
return !value;
}
- else if (name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)
- || name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)
+ else if (name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)
|| name.equalsIgnoreCase(Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)) {
// false is not supported
return value;
@@ -383,18 +390,20 @@
return (features & SPLITCDATA) != 0 ? Boolean.TRUE : Boolean.FALSE;
} else if (name.equalsIgnoreCase(Constants.DOM_WELLFORMED)) {
return (features & WELLFORMED) != 0 ? Boolean.TRUE : Boolean.FALSE;
+ } else if (name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)) {
+ return (features & NSDECL) != 0 ? Boolean.TRUE : Boolean.FALSE;
} else if (name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE) ||
- name.equalsIgnoreCase(Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)
- || name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS)) {
+ name.equalsIgnoreCase(Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)) {
return Boolean.TRUE;
}else if (name.equalsIgnoreCase(Constants.DOM_DISCARD_DEFAULT_CONTENT)){
return ((features & DISCARDDEFAULT)!=0)?Boolean.TRUE:Boolean.FALSE;
}else if (name.equalsIgnoreCase(Constants.DOM_INFOSET)){
if ((features & ENTITIES) == 0 &&
- (features & CDATA) ==0 &&
- (features & NAMESPACES) !=0 &&
- (features & WELLFORMED) !=0 &&
- (features & COMMENTS) !=0){
+ (features & CDATA) == 0 &&
+ (features & NAMESPACES) != 0 &&
+ (features & NSDECL) != 0 &&
+ (features & WELLFORMED) != 0 &&
+ (features & COMMENTS) != 0) {
return Boolean.TRUE;
}
return Boolean.FALSE;
@@ -954,7 +963,8 @@
ser.reset();
ser.features = features;
ser.fDOMErrorHandler = fErrorHandler;
- ser.fNamespaces = (features & NAMESPACES) !=0;
+ ser.fNamespaces = (features & NAMESPACES) != 0;
+ ser.fNamespacePrefixes = (features & NSDECL) != 0;
ser._format.setOmitComments((features & COMMENTS)==0);
ser._format.setOmitXMLDeclaration((features & XMLDECL) == 0);
1.111 +3 -3 xml-xerces/java/src/org/apache/xerces/parsers/AbstractDOMParser.java
Index: AbstractDOMParser.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/AbstractDOMParser.java,v
retrieving revision 1.110
retrieving revision 1.111
diff -u -r1.110 -r1.111
--- AbstractDOMParser.java 6 May 2004 16:02:05 -0000 1.110
+++ AbstractDOMParser.java 7 May 2004 21:35:35 -0000 1.111
@@ -161,8 +161,8 @@
// debugging
- private static final boolean DEBUG_EVENTS = false;
- private static final boolean DEBUG_BASEURI = false;
+ private static final boolean DEBUG_EVENTS = true;
+ private static final boolean DEBUG_BASEURI = true;
//
// Data
1.26 +62 -13 xml-xerces/java/src/org/apache/xerces/parsers/DOMParserImpl.java
Index: DOMParserImpl.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/DOMParserImpl.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- DOMParserImpl.java 23 Apr 2004 16:06:10 -0000 1.25
+++ DOMParserImpl.java 7 May 2004 21:35:35 -0000 1.26
@@ -33,7 +33,11 @@
import org.apache.xerces.util.DOMEntityResolverWrapper;
import org.apache.xerces.util.DOMErrorHandlerWrapper;
import org.apache.xerces.util.SymbolTable;
+import org.apache.xerces.util.XMLSymbols;
import org.apache.xerces.xni.grammars.XMLGrammarPool;
+import org.apache.xerces.xni.Augmentations;
+import org.apache.xerces.xni.QName;
+import org.apache.xerces.xni.XMLAttributes;
import org.apache.xerces.xni.parser.XMLConfigurationException;
import org.apache.xerces.xni.parser.XMLEntityResolver;
import org.apache.xerces.xni.parser.XMLInputSource;
@@ -103,7 +107,9 @@
// Data
//
-
+ /** Include namespace declaration attributes in the document. **/
+ protected boolean fNamespaceDeclarations = true;
+
// REVISIT: this value should be null by default and should be set during creation of
// LSParser
protected String fSchemaType = null;
@@ -130,9 +136,11 @@
configuration));
if (schemaType != null) {
if (schemaType.equals (Constants.NS_DTD)) {
- fConfiguration.setFeature (
- Constants.XERCES_FEATURE_PREFIX + Constants.SCHEMA_VALIDATION_FEATURE,
- false);
+ //Schema validation is false by default and hence there is no
+ //need to set it to false here. Also, schema validation is
+ //not a recognized feature for DTDConfiguration's and so
+ //setting this feature here would result in a Configuration
+ //Exception.
fConfiguration.setProperty (
Constants.JAXP_PROPERTY_PREFIX + Constants.SCHEMA_LANGUAGE,
Constants.NS_DTD);
@@ -187,10 +195,9 @@
fConfiguration.setFeature(INCLUDE_COMMENTS_FEATURE, true);
fConfiguration.setFeature(INCLUDE_IGNORABLE_WHITESPACE, true);
fConfiguration.setFeature(NAMESPACES, true);
-
+
fConfiguration.setFeature(DYNAMIC_VALIDATION, false);
fConfiguration.setFeature(CREATE_ENTITY_REF_NODES, false);
- fConfiguration.setFeature(NORMALIZE_DATA, false);
fConfiguration.setFeature(CREATE_CDATA_NODES_FEATURE, false);
// set other default values
@@ -205,7 +212,13 @@
fConfiguration.setFeature (Constants.DOM_CERTIFIED, true);
// Xerces datatype-normalization feature is on by default
- fConfiguration.setFeature ( NORMALIZE_DATA, false );
+ // This is a recognized feature only for XML Schemas. If the
+ // configuration doesn't support this feature, ignore it.
+ try {
+ fConfiguration.setFeature ( NORMALIZE_DATA, false );
+ }
+ catch (XMLConfigurationException exc) {}
+
} // <init>(XMLParserConfiguration)
/**
@@ -247,6 +260,11 @@
*/
public void reset () {
super.reset ();
+
+ // get state of namespace-declarations parameter.
+ fNamespaceDeclarations =
+ fConfiguration.getFeature(Constants.DOM_NAMESPACE_DECLARATIONS);
+
// DOM Filter
if (fSkippedElemStack!=null) {
fSkippedElemStack.removeAllElements ();
@@ -336,8 +354,10 @@
else if (name.equalsIgnoreCase (Constants.DOM_INFOSET)) {
// Setting false has no effect.
if (state) {
- // true: namespaces, comments, element-content-whitespace
+ // true: namespaces, namespace-declarations,
+ // comments, element-content-whitespace
fConfiguration.setFeature(NAMESPACES, true);
+ fConfiguration.setFeature(Constants.DOM_NAMESPACE_DECLARATIONS, true);
fConfiguration.setFeature(INCLUDE_COMMENTS_FEATURE, true);
fConfiguration.setFeature(INCLUDE_IGNORABLE_WHITESPACE, true);
@@ -352,8 +372,10 @@
else if (name.equalsIgnoreCase(Constants.DOM_CDATA_SECTIONS)) {
fConfiguration.setFeature(CREATE_CDATA_NODES_FEATURE, state);
}
- else if (name.equalsIgnoreCase (Constants.DOM_NAMESPACE_DECLARATIONS)
- || name.equalsIgnoreCase (Constants.DOM_WELLFORMED)
+ else if (name.equalsIgnoreCase (Constants.DOM_NAMESPACE_DECLARATIONS)) {
+ fConfiguration.setFeature(Constants.DOM_NAMESPACE_DECLARATIONS, state);
+ }
+ else if (name.equalsIgnoreCase (Constants.DOM_WELLFORMED)
|| name.equalsIgnoreCase (Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)) {
if (!state) { // false is not supported
String msg =
@@ -616,6 +638,7 @@
// to the configuration and is changing the values
// of these features directly on it.
boolean infoset = fConfiguration.getFeature(NAMESPACES) &&
+ fConfiguration.getFeature(Constants.DOM_NAMESPACE_DECLARATIONS) &&
fConfiguration.getFeature(INCLUDE_COMMENTS_FEATURE) &&
fConfiguration.getFeature(INCLUDE_IGNORABLE_WHITESPACE) &&
!fConfiguration.getFeature(DYNAMIC_VALIDATION) &&
@@ -695,8 +718,7 @@
// true is not supported
return (state) ? false : true;
}
- else if (name.equalsIgnoreCase (Constants.DOM_NAMESPACE_DECLARATIONS)
- || name.equalsIgnoreCase (Constants.DOM_WELLFORMED)
+ else if (name.equalsIgnoreCase (Constants.DOM_WELLFORMED)
|| name.equalsIgnoreCase (Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)) {
// false is not supported
return (state) ? true : false;
@@ -709,6 +731,7 @@
|| name.equalsIgnoreCase (Constants.DOM_ENTITIES)
|| name.equalsIgnoreCase (Constants.DOM_INFOSET)
|| name.equalsIgnoreCase (Constants.DOM_NAMESPACES)
+ || name.equalsIgnoreCase (Constants.DOM_NAMESPACE_DECLARATIONS)
|| name.equalsIgnoreCase (Constants.DOM_VALIDATE)
|| name.equalsIgnoreCase (Constants.DOM_VALIDATE_IF_SCHEMA)
|| name.equalsIgnoreCase (Constants.DOM_ELEMENT_CONTENT_WHITESPACE)
@@ -991,4 +1014,30 @@
return; // If not busy then this is noop
}
+ /**
+ * The start of an element. If the document specifies the start element
+ * by using an empty tag, then the startElement method will immediately
+ * be followed by the endElement method, with no intervening methods.
+ * Overriding the parent to handle DOM_NAMESPACE_DECLARATIONS=false.
+ *
+ * @param element The name of the element.
+ * @param attributes The element attributes.
+ * @param augs Additional information that may include infoset augmentations
+ *
+ * @throws XNIException Thrown by handler to signal an error.
+ */
+ public void startElement (QName element, XMLAttributes attributes, Augmentations augs) {
+ // namespace declarations parameter has no effect if namespaces is false.
+ if (!fNamespaceDeclarations && fNamespaceAware) {
+ int len = attributes.getLength();
+ for (int i = len - 1; i >= 0; --i) {
+ if (XMLSymbols.PREFIX_XMLNS == attributes.getPrefix(i) ||
+ XMLSymbols.PREFIX_XMLNS == attributes.getQName(i)) {
+ attributes.removeAttributeAt(i);
+ }
+ }
+ }
+ super.startElement(element, attributes, augs);
+ }
+
} // class DOMParserImpl
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org