cziegeler 01/09/26 06:03:23 Modified: src/org/apache/cocoon/transformation 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 1.4 +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.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- WriteDOMSessionTransformer.java 2001/08/20 13:55:17 1.3 +++ WriteDOMSessionTransformer.java 2001/09/26 13:03:23 1.4 @@ -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.3 $ $Date: 2001/08/20 13:55:17 $ $Author: dims $ + * @version CVS $Revision: 1.4 $ $Date: 2001/09/26 13:03:23 $ $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]