Committing the patch in XALANJ-2343 which
cleans up (and fixes some bugs) in the setting and
use of DOM 3 serialization parameters.
diff --git a/src/org/apache/xml/serializer/dom3/DOM3TreeWalker.java b/src/org/apache/xml/serializer/dom3/DOM3TreeWalker.java
index c172122..0b62423 100644
--- a/src/org/apache/xml/serializer/dom3/DOM3TreeWalker.java
+++ b/src/org/apache/xml/serializer/dom3/DOM3TreeWalker.java
@@ -2037,7 +2037,7 @@
DOMConstants.S_XERCES_PROPERTIES_NS + DOMConstants.S_XML_VERSION,
"");
s_propKeys.put(DOMConstants.S_XSL_OUTPUT_ENCODING, "");
- s_propKeys.put(OutputPropertiesFactory.S_KEY_ENTITIES, "");
+ s_propKeys.put(DOMConstants.S_XERCES_PROPERTIES_NS + DOMConstants.DOM_ENTITIES, "");
}
/**
@@ -2125,12 +2125,15 @@
if (encoding != null) {
fSerializer.setEncoding(encoding);
}
- } else if ((OutputPropertiesFactory.S_KEY_ENTITIES).equals(key)) {
- // Retreive the value of the XML Encoding attribute
- String entities = properties.getProperty(key);
- if (DOMConstants.S_XSL_VALUE_ENTITIES.equals(entities)) {
+ } else if ((DOMConstants.S_XERCES_PROPERTIES_NS
+ + DOMConstants.DOM_ENTITIES).equals(key)) {
+ // Preserve entity references in the document
+ if ((properties.getProperty(key).endsWith("yes"))) {
fSerializer.setDTDEntityExpansion(false);
}
+ else {
+ fSerializer.setDTDEntityExpansion(true);
+ }
} else {
// We shouldn't get here, ever, now what?
}
diff --git a/src/org/apache/xml/serializer/dom3/LSSerializerImpl.java b/src/org/apache/xml/serializer/dom3/LSSerializerImpl.java
index 6e0fd09..acac6fc 100644
--- a/src/org/apache/xml/serializer/dom3/LSSerializerImpl.java
+++ b/src/org/apache/xml/serializer/dom3/LSSerializerImpl.java
@@ -282,8 +282,8 @@
fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_DEFAULT_TRUE);
// preserve entities
- fDOMConfigProperties.setProperty(
- OutputPropertiesFactory.S_KEY_ENTITIES, DOMConstants.S_XSL_VALUE_ENTITIES);
+ fDOMConfigProperties.setProperty(DOMConstants.S_XERCES_PROPERTIES_NS
+ + DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_DEFAULT_TRUE);
// error-handler
// Should we set our default ErrorHandler
@@ -310,8 +310,8 @@
fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_DEFAULT_FALSE);
// preserve entities
- fDOMConfigProperties.setProperty(
- OutputPropertiesFactory.S_KEY_ENTITIES, "");
+ fDOMConfigProperties.setProperty(DOMConstants.S_XERCES_PROPERTIES_NS
+ + DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_DEFAULT_FALSE);
fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ DOMConstants.DOM_CDATA_SECTIONS,
DOMConstants.DOM3_DEFAULT_FALSE);
@@ -550,10 +550,14 @@
fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_EXPLICIT_TRUE);
fDOMConfigProperties.setProperty(
- OutputPropertiesFactory.S_KEY_ENTITIES, DOMConstants.S_XSL_VALUE_ENTITIES);
+ DOMConstants.S_XERCES_PROPERTIES_NS
+ + DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_EXPLICIT_TRUE);
} else {
fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_EXPLICIT_FALSE);
+ fDOMConfigProperties.setProperty(
+ DOMConstants.S_XERCES_PROPERTIES_NS
+ + DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_EXPLICIT_FALSE);
}
} else if (name.equalsIgnoreCase(DOMConstants.DOM_NAMESPACES)) {
fFeatures = state ? fFeatures | NAMESPACES : fFeatures
@@ -690,6 +694,7 @@
} */
}
} else if (name.equalsIgnoreCase(DOMConstants.DOM_INFOSET)) {
+ // infoset
if (state) {
fFeatures &= ~ENTITIES;
fFeatures &= ~CDATA;
@@ -700,31 +705,30 @@
fFeatures |= WELLFORMED;
fFeatures |= ELEM_CONTENT_WHITESPACE;
fFeatures |= COMMENTS;
+
+ fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ + DOMConstants.DOM_NAMESPACES, DOMConstants.DOM3_EXPLICIT_TRUE);
+ fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ + DOMConstants.DOM_NAMESPACE_DECLARATIONS, DOMConstants.DOM3_EXPLICIT_TRUE);
+ fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ + DOMConstants.DOM_COMMENTS, DOMConstants.DOM3_EXPLICIT_TRUE);
+ fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ + DOMConstants.DOM_ELEMENT_CONTENT_WHITESPACE, DOMConstants.DOM3_EXPLICIT_TRUE);
+ fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ + DOMConstants.DOM_WELLFORMED, DOMConstants.DOM3_EXPLICIT_TRUE);
+
+ fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ + DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_EXPLICIT_FALSE);
+ fDOMConfigProperties.setProperty(DOMConstants.S_XERCES_PROPERTIES_NS
+ + DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_EXPLICIT_FALSE);
+
+ fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ + DOMConstants.DOM_CDATA_SECTIONS, DOMConstants.DOM3_EXPLICIT_FALSE);
+ fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ + DOMConstants.DOM_VALIDATE_IF_SCHEMA, DOMConstants.DOM3_EXPLICIT_FALSE);
+ fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
+ + DOMConstants.DOM_DATATYPE_NORMALIZATION, DOMConstants.DOM3_EXPLICIT_FALSE);
}
-
- // infoset
- fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
- + DOMConstants.DOM_NAMESPACES, DOMConstants.DOM3_EXPLICIT_TRUE);
- fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
- + DOMConstants.DOM_NAMESPACE_DECLARATIONS, DOMConstants.DOM3_EXPLICIT_TRUE);
- fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
- + DOMConstants.DOM_COMMENTS, DOMConstants.DOM3_EXPLICIT_TRUE);
- fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
- + DOMConstants.DOM_ELEMENT_CONTENT_WHITESPACE, DOMConstants.DOM3_EXPLICIT_TRUE);
- fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
- + DOMConstants.DOM_WELLFORMED, DOMConstants.DOM3_EXPLICIT_TRUE);
-
- fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
- + DOMConstants.DOM_ENTITIES, DOMConstants.DOM3_EXPLICIT_FALSE);
- fDOMConfigProperties.setProperty(
- OutputPropertiesFactory.S_KEY_ENTITIES, "");
-
- fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
- + DOMConstants.DOM_CDATA_SECTIONS, DOMConstants.DOM3_EXPLICIT_FALSE);
- fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
- + DOMConstants.DOM_VALIDATE_IF_SCHEMA, DOMConstants.DOM3_EXPLICIT_FALSE);
- fDOMConfigProperties.setProperty(DOMConstants.S_DOM3_PROPERTIES_NS
- + DOMConstants.DOM_DATATYPE_NORMALIZATION, DOMConstants.DOM3_EXPLICIT_FALSE);
} else {
// If this is a non-boolean parameter a type mismatch should be thrown.
if (name.equalsIgnoreCase(DOMConstants.DOM_ERROR_HANDLER) ||