sylvain     2002/12/01 12:57:52

  Modified:    src/scratchpad/src/org/apache/cocoon/transformation Tag:
                        cocoon_2_0_3_branch SourceWritingTransformer.java
  Log:
  Fix namespace : namespaces declared outside source:write are redeclared for proper 
serialization
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.3.2.1   +22 -1     
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/Attic/SourceWritingTransformer.java
  
  Index: SourceWritingTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/Attic/SourceWritingTransformer.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- SourceWritingTransformer.java     22 Mar 2002 13:14:55 -0000      1.3
  +++ SourceWritingTransformer.java     1 Dec 2002 20:57:52 -0000       1.3.2.1
  @@ -72,9 +72,10 @@
   import org.xml.sax.Attributes;
   import org.xml.sax.SAXException;
   import org.xml.sax.helpers.AttributesImpl;
  -import java.lang.SecurityException;
  +import org.xml.sax.helpers.NamespaceSupport;
   import java.io.IOException;
   import java.io.OutputStream;
  +import java.util.Enumeration;
   import java.util.Map;
   import java.util.Properties;
   
  @@ -178,6 +179,8 @@
                /** the WritableSource. */
       private WriteableSource wsource = null;
       
  +    private NamespaceSupport nsSupport = new NamespaceSupport();
  +    
       
       public void WriteableSourceTransformer() {
       }
  @@ -223,7 +226,10 @@
        */
       public void startPrefixMapping(String prefix, String uri) throws SAXException {
                        if (!this.processing) {
  +                             // Pass through
                                super.startPrefixMapping(prefix,uri);
  +                             // and register it.
  +                             this.nsSupport.declarePrefix(prefix, uri);
                        } else if (this.ch != null){
                                this.ch.startPrefixMapping(prefix, uri);
                        }
  @@ -258,6 +264,7 @@
       public void startElement(String uri, String loc, String raw, Attributes a)
       throws SAXException {
                        if (!this.processing) {
  +                             this.nsSupport.pushContext();
                                if (SWT_URI.equals(uri) && SWT_ELEMENT.equals(loc)) {
                                        getLogger().debug("start processing 
xmlns:source");
                                        this.failed = false;
  @@ -305,6 +312,12 @@
                                        // start the document
                                        if (!this.failed) {
                                                this.ch.startDocument();
  +                                             // and give it all declared namespaces.
  +                                             Enumeration prefixes = 
this.nsSupport.getPrefixes();
  +                                             while (prefixes.hasMoreElements()) {
  +                                                     String prefix = 
(String)prefixes.nextElement();
  +                                                     ch.startPrefixMapping(prefix, 
this.nsSupport.getURI(prefix));
  +                                             }
                                        }                                              
 
                                        this.processing = true;
                                        getLogger().debug("Processing Started");
  @@ -331,10 +344,18 @@
       public void endElement(String uri, String loc, String raw)
       throws SAXException {
                        if (!this.processing) {
  +                this.nsSupport.popContext();
                                super.endElement(uri,loc,raw);
                        } else {
                                if (SWT_URI.equals(uri) && SWT_ELEMENT.equals(loc)){
                                        if (!this.failed) {
  +                                             // and close all declared namespaces.
  +                                             Enumeration prefixes = 
this.nsSupport.getPrefixes();
  +                                             while (prefixes.hasMoreElements()) {
  +                                                     String prefix = 
(String)prefixes.nextElement();
  +                                                     ch.endPrefixMapping(prefix);
  +                                             }
  +
                                                this.ch.endDocument();
                                        }
                                        this.processing = false;
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to