You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by sy...@apache.org on 2002/12/01 21:57:52 UTC

cvs commit: xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation SourceWritingTransformer.java

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:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org