cziegeler 01/09/26 06:03:47
Modified: src/org/apache/cocoon/transformation Tag: cocoon_20_branch
WriteDOMSessionTransformer.java
Log:
This patch fixes a bug in the WriteDOMSessionTransformer, which does not currently
build xml documents with namespaces correctly.
Submitted by: Greg Weinger [[EMAIL PROTECTED]]
Revision Changes Path
No revision
No revision
1.2.2.3 +25 -3
xml-cocoon2/src/org/apache/cocoon/transformation/WriteDOMSessionTransformer.java
Index: WriteDOMSessionTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/WriteDOMSessionTransformer.java,v
retrieving revision 1.2.2.2
retrieving revision 1.2.2.3
diff -u -r1.2.2.2 -r1.2.2.3
--- WriteDOMSessionTransformer.java 2001/08/20 14:07:34 1.2.2.2
+++ WriteDOMSessionTransformer.java 2001/09/26 13:03:47 1.2.2.3
@@ -26,6 +26,8 @@
import java.io.IOException;
import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
/**
@@ -42,7 +44,7 @@
* dom-root-element is the trigger that will be the root element of the DOM
*
* @author <a href="mailto:[EMAIL PROTECTED]">Sven Beauprez</a>
- * @version CVS $Revision: 1.2.2.2 $ $Date: 2001/08/20 14:07:34 $ $Author: dims $
+ * @version CVS $Revision: 1.2.2.3 $ $Date: 2001/09/26 13:03:47 $ $Author:
cziegeler $
*/
public class WriteDOMSessionTransformer extends AbstractTransformer implements
@@ -63,6 +65,7 @@
private String DOMName;
private String rootElement;
+ private Map storedPrefixMap;
/** BEGIN SitemapComponent methods **/
@@ -81,6 +84,7 @@
DOMName + "; " +
WriteDOMSessionTransformer.DOM_ROOT_ELEMENT + "=" +
rootElement);
sessionAvailable = true;
+ storedPrefixMap = new HashMap();
} else {
getLogger().error("WriteSessionTransformer: need " +
WriteDOMSessionTransformer.DOM_NAME +
" and " + WriteDOMSessionTransformer.DOM_ROOT_ELEMENT +
" parameters");
@@ -116,7 +120,9 @@
super.startPrefixMapping(prefix,uri);
if (buildDom) {
builder.startPrefixMapping(prefix,uri);
- }
+ } else {
+ storePrefixMapping(prefix,uri);
+ }
}
public void startElement(String uri, String name, String raw, Attributes
attributes)
@@ -127,6 +133,7 @@
buildDom = true;
builder = new DOMBuilder(parser);
builder.startDocument();
+ launchStoredMappings();
builder.startElement(uri,name,raw,attributes);
} else if (buildDom) {
builder.startElement(uri,name,raw,attributes);
@@ -176,6 +183,21 @@
/** END SAX ContentHandler handlers **/
+ protected void storePrefixMapping(String prefix, String uri) {
+ storedPrefixMap.put(prefix,uri);
+ }
+
+ protected void launchStoredMappings()
+ throws SAXException {
+ Iterator it = storedPrefixMap.keySet().iterator();
+ while(it.hasNext()) {
+ String pre = (String)it.next();
+ String uri = (String)storedPrefixMap.get(pre);
+ getLogger().debug("WriteSessionTransformer:
launching prefix mapping[ pre: "+pre+" uri: "+uri+" ]");
+ builder.startPrefixMapping(pre,uri);
+ }
+ }
+
-}
\ No newline at end of file
+}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]