mkwan       2002/09/16 12:32:16

  Modified:    java/src/org/apache/xalan/xsltc/compiler TransletOutput.java
  Log:
  Support the append attribute in the output extension element, so that
  it behavior is more like redirect:write.
  
  Revision  Changes    Path
  1.8       +16 -2     
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/TransletOutput.java
  
  Index: TransletOutput.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/TransletOutput.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TransletOutput.java       1 Feb 2002 20:07:09 -0000       1.7
  +++ TransletOutput.java       16 Sep 2002 19:32:16 -0000      1.8
  @@ -69,6 +69,7 @@
   final class TransletOutput extends Instruction {
   
       private Expression _filename;
  +    private boolean _append;
   
       private final static String MISSING_FILE_ATTR =
        "The <xsltc:output> element requires a 'file' attribute.";
  @@ -88,6 +89,10 @@
       public void parseContents(Parser parser) {
        // Get the output filename from the 'file' attribute
        String filename = getAttribute("file");
  +        
  +        // If the 'append' attribute is set to "yes" or "true",
  +        // the output is appended to the file.
  +        String append   = getAttribute("append");
   
        // Verify that the filename is in fact set
        if ((filename == null) || (filename.equals(EMPTYSTRING))) {
  @@ -96,6 +101,14 @@
   
        // Save filename as an attribute value template
        _filename = AttributeValue.create(this, filename, parser);
  +        
  +        if (append != null && (append.toLowerCase().equals("yes") ||
  +            append.toLowerCase().equals("true"))) {
  +          _append = true;     
  +        }
  +        else
  +          _append = false;
  +          
        parseChildren(parser);
       }
       
  @@ -124,7 +137,7 @@
        
        final int open =  cpg.addMethodref(TRANSLET_CLASS,
                                           "openOutputHandler",
  -                                        "("+STRING_SIG+")"+
  +                                           "(" + STRING_SIG + "Z)" +
                                           TRANSLET_OUTPUT_SIG);
   
        final int close =  cpg.addMethodref(TRANSLET_CLASS,
  @@ -134,6 +147,7 @@
        // Create the new output handler (leave it on stack)
        il.append(classGen.loadTranslet());
        _filename.translate(classGen, methodGen);
  +        il.append(new PUSH(cpg, _append));
        il.append(new INVOKEVIRTUAL(open));
   
        // Overwrite current handler
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to