mrglavas 2004/01/29 13:13:09
Modified: java/src/org/apache/xerces/dom DOMConfigurationImpl.java
Log:
Support 'infoset' parameter in DOM core. Also fixing a bug.
We don't currently support setting element-content-whitespace
to false so we should be reporting that it isn't supported.
Revision Changes Path
1.19 +24 -10
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.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- DOMConfigurationImpl.java 29 Jan 2004 20:59:52 -0000 1.18
+++ DOMConfigurationImpl.java 29 Jan 2004 21:13:09 -0000 1.19
@@ -189,6 +189,11 @@
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 INFOSET_TRUE_PARAMS = NAMESPACES | COMMENTS |
WELLFORMED;
+ protected final static short INFOSET_FALSE_PARAMS = ENTITIES | DTNORMALIZATION
| CDATA;
+ protected final static short INFOSET_MASK = INFOSET_TRUE_PARAMS |
INFOSET_FALSE_PARAMS;
+
// components
/** Symbol table. */
@@ -578,9 +583,16 @@
}
else if (name.equals(Constants.DOM_WELLFORMED)) {
features = (short) (state ? features | WELLFORMED : features &
~WELLFORMED );
- }
- else if (name.equals(Constants.DOM_INFOSET)
- || name.equals(Constants.DOM_NORMALIZE_CHARACTERS)
+ }
+ else if (name.equals(Constants.DOM_INFOSET)) {
+ // Setting to false has no effect.
+ if (state) {
+ features = (short) (features | INFOSET_TRUE_PARAMS);
+ features = (short) (features & ~INFOSET_FALSE_PARAMS);
+ setFeature(NORMALIZE_DATA, false);
+ }
+ }
+ else if (name.equals(Constants.DOM_NORMALIZE_CHARACTERS)
|| name.equals(Constants.DOM_CANONICAL_FORM)
|| name.equals(Constants.DOM_VALIDATE_IF_SCHEMA)
|| name.equals(Constants.DOM_CHECK_CHAR_NORMALIZATION)
@@ -594,7 +606,8 @@
throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
}
}
- else if (name.equals(Constants.DOM_NAMESPACE_DECLARATIONS)) {
+ else if (name.equals(Constants.DOM_NAMESPACE_DECLARATIONS)
+ || name.equals(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)) {
if (!state) { // false is not supported
String msg =
DOMMessageFormatter.formatMessage(
@@ -810,9 +823,11 @@
}
else if (name.equals(Constants.DOM_WELLFORMED)) {
return (features & WELLFORMED) != 0 ? Boolean.TRUE :
Boolean.FALSE;
- }
- else if ( name.equals(Constants.DOM_INFOSET)
- || name.equals(Constants.DOM_NORMALIZE_CHARACTERS)
+ }
+ else if (name.equals(Constants.DOM_INFOSET)) {
+ return (features & INFOSET_MASK) == INFOSET_TRUE_PARAMS ?
Boolean.TRUE : Boolean.FALSE;
+ }
+ else if (name.equals(Constants.DOM_NORMALIZE_CHARACTERS)
|| name.equals(Constants.DOM_CANONICAL_FORM)
|| name.equals(Constants.DOM_VALIDATE_IF_SCHEMA)
|| name.equals(Constants.DOM_CHECK_CHAR_NORMALIZATION)
@@ -904,8 +919,7 @@
return true ;
}//features whose parameter value can not be set to 'true'
else if (
- name.equals(Constants.DOM_INFOSET)
- || name.equals(Constants.DOM_NORMALIZE_CHARACTERS)
+ name.equals(Constants.DOM_NORMALIZE_CHARACTERS)
|| name.equals(Constants.DOM_CANONICAL_FORM)
|| name.equals(Constants.DOM_VALIDATE_IF_SCHEMA)
|| name.equals(Constants.DOM_CHECK_CHAR_NORMALIZATION)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]