You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mo...@apache.org on 2001/09/25 22:38:41 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/compiler Output.java Parser.java Stylesheet.java

morten      01/09/25 13:38:41

  Modified:    java/src/org/apache/xalan/xsltc/compiler Output.java
                        Parser.java Stylesheet.java
  Log:
  Fix to make sure the one, and only one, xsl:output element is compiled
  per translet (import precedence taken into account).
  PR:		bugzilla 3099
  Obtained from:	n/a
  Submitted by:	morten@xml.apache.org
  Reviewed by:	morten@xml.apache.org
  
  Revision  Changes    Path
  1.8       +16 -4     xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Output.java
  
  Index: Output.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Output.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Output.java	2001/08/16 12:17:15	1.7
  +++ Output.java	2001/09/25 20:38:41	1.8
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Output.java,v 1.7 2001/08/16 12:17:15 morten Exp $
  + * @(#)$Id: Output.java,v 1.8 2001/09/25 20:38:41 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -76,6 +76,8 @@
   
   final class Output extends TopLevelElement {
   
  +    // TODO: use three-value variables for boolean values: true/false/default
  +
       // These attributes are extracted from the xsl:output element. They also
       // appear as fields (with the same type, only public) in the translet
       private String  _version;
  @@ -115,11 +117,18 @@
   	_disabled = true;
       }
   
  +    public boolean enabled() {
  +	return !_disabled;
  +    }
  +
       /**
        * Scans the attribute list for the xsl:output instruction
        */
       public void parseContents(Parser parser) {
   
  +	// Ask the parser if it wants this <xsl:output> element
  +	parser.setOutput(this);
  +
   	// Do nothing if other <xsl:output> element has higher precedence
   	if (_disabled) return;
   
  @@ -165,7 +174,12 @@
   
   	// Get the indent setting - only has effect for xml and html output
   	attrib = getAttribute("indent");
  -	if ((attrib != null) && (attrib.equals("yes"))) _indent = true;
  +	if ((attrib != null) && (!attrib.equals(EMPTYSTRING))) {
  +	    if (attrib.equals("yes")) _indent = true;
  +	}
  +	else if (_method.equals("html")) {
  +	    _indent = true;
  +	}
   
   	// Get the MIME type for the output file - we don't do anythign with it,
   	// but our client may use it to specify a data transport type, etc.
  @@ -173,8 +187,6 @@
   	if (_mediaType.equals(Constants.EMPTYSTRING)) _mediaType = null;
   
   	// parseChildren(parser); - the element is always empty
  -
  -	parser.setOutput(this);
       }
   
       /**
  
  
  
  1.26      +16 -4     xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Parser.java
  
  Index: Parser.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Parser.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Parser.java	2001/09/18 08:25:34	1.25
  +++ Parser.java	2001/09/25 20:38:41	1.26
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Parser.java,v 1.25 2001/09/18 08:25:34 morten Exp $
  + * @(#)$Id: Parser.java,v 1.26 2001/09/25 20:38:41 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -166,10 +166,22 @@
       }
   
       public void setOutput(Output output) {
  -	if (_output == null)
  +	if (_output != null) {
  +	    if (_output.getImportPrecedence() <= output.getImportPrecedence()) {
  +		_output.disable();
  +		_output = output;
  +	    }
  +	    else {
  +		output.disable();
  +	    }
  +	}
  +	else {
   	    _output = output;
  -	else
  -	    output.disable();
  +	}
  +    }
  +
  +    public Output getOutput() {
  +	return _output;
       }
   
       public void addVariable(Variable var) {
  
  
  
  1.20      +3 -2      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Stylesheet.java
  
  Index: Stylesheet.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Stylesheet.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Stylesheet.java	2001/09/25 16:38:10	1.19
  +++ Stylesheet.java	2001/09/25 20:38:41	1.20
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Stylesheet.java,v 1.19 2001/09/25 16:38:10 morten Exp $
  + * @(#)$Id: Stylesheet.java,v 1.20 2001/09/25 20:38:41 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -458,7 +458,8 @@
   	    }
   	    else if (element instanceof Output) {
   		// save the element for later to pass to compileConstructor 
  -		lastOutputElement = (Output)element;
  +		Output output = (Output)element;
  +		if (output.enabled()) lastOutputElement = output;
   	    }
   	    else {
   		// Global variables and parameters are handled elsewhere.
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org