morten      01/07/19 06:16:17

  Modified:    java/src/org/apache/xalan/xsltc Translet.java
               java/src/org/apache/xalan/xsltc/dom LoadDocument.java
               java/src/org/apache/xalan/xsltc/runtime
                        AbstractTranslet.java
               java/src/org/apache/xalan/xsltc/trax TransformerImpl.java
  Log:
  Added implementation of get/setOutputProperties() of the Transformer
  implementation.
  PR:           n/a
  Obtained from:        n/a
  Submitted by: [EMAIL PROTECTED]
  Reviewed by:  [EMAIL PROTECTED]
  
  Revision  Changes    Path
  1.2       +1 -3      xml-xalan/java/src/org/apache/xalan/xsltc/Translet.java
  
  Index: Translet.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/Translet.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Translet.java     2001/04/17 18:51:14     1.1
  +++ Translet.java     2001/07/19 13:16:17     1.2
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Translet.java,v 1.1 2001/04/17 18:51:14 sboag Exp $
  + * @(#)$Id: Translet.java,v 1.2 2001/07/19 13:16:17 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -78,6 +78,4 @@
       public void buildKeys(DOM document, NodeIterator iterator,
                          TransletOutputHandler handler, int root)
        throws TransletException;
  -
  -    public String getOutputEncoding();
   }
  
  
  
  1.3       +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/dom/LoadDocument.java
  
  Index: LoadDocument.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/LoadDocument.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LoadDocument.java 2001/05/01 13:16:21     1.2
  +++ LoadDocument.java 2001/07/19 13:16:17     1.3
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: LoadDocument.java,v 1.2 2001/05/01 13:16:21 morten Exp $
  + * @(#)$Id: LoadDocument.java,v 1.3 2001/07/19 13:16:17 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -83,7 +83,7 @@
   
       /**
        * Returns an iterator containing a set of nodes from an XML document
  -     * loaded by the document() function. Loads the 
  +     * loaded by the document() function.
        */
       public static NodeIterator document(String uri,
                                        String base,
  
  
  
  1.13      +1 -8      
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java
  
  Index: AbstractTranslet.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- AbstractTranslet.java     2001/07/18 15:36:01     1.12
  +++ AbstractTranslet.java     2001/07/19 13:16:17     1.13
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: AbstractTranslet.java,v 1.12 2001/07/18 15:36:01 morten Exp $
  + * @(#)$Id: AbstractTranslet.java,v 1.13 2001/07/19 13:16:17 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -574,12 +574,5 @@
                handler.setDoctype(_doctypeSystem, _doctypePublic);
        }
       }
  -
  -    /*
  -    // Holds the translet's name - God only knows what it is used for
  -    private String _transletName;
  -    public void setTransletName(String name) { _transletName = name; }
  -    public String getTransletName() { return _transletName; }
  -    */
   
   }
  
  
  
  1.5       +108 -42   
xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerImpl.java
  
  Index: TransformerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TransformerImpl.java      2001/07/17 15:34:14     1.4
  +++ TransformerImpl.java      2001/07/19 13:16:17     1.5
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: TransformerImpl.java,v 1.4 2001/07/17 15:34:14 morten Exp $
  + * @(#)$Id: TransformerImpl.java,v 1.5 2001/07/19 13:16:17 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -73,6 +73,7 @@
   import java.net.UnknownHostException;
   import java.lang.IllegalArgumentException;
   import java.util.Enumeration;
  +import java.util.StringTokenizer;
   
   import org.xml.sax.XMLReader;
   import org.xml.sax.ContentHandler;
  @@ -150,7 +151,7 @@
       private ContentHandler getOutputHandler(Result result) 
        throws TransformerException {
        // Try to get the encoding from Translet (may not be set)
  -     _encoding = _translet.getOutputEncoding();
  +     _encoding = _translet._encoding;
        if (_encoding == null) _encoding = "UTF-8";
   
        StreamResult target   = (StreamResult)result;
  @@ -329,6 +330,31 @@
       }
   
       /**
  +     * The translet stores all CDATA sections set in the <xsl:output> element
  +     * in a Hashtable. This method will re-construct the whitespace separated
  +     * list of elements given in the <xsl:output> element.
  +     */
  +    private String makeCDATAString(Hashtable cdata) {
  +     // Return a 'null' string if no CDATA section elements were specified
  +     if (cdata == null) return null;
  +
  +     StringBuffer result = new StringBuffer();
  +
  +     // Get an enumeration of all the elements in the hashtable
  +     Enumeration elements = cdata.keys();
  +     if (elements.hasMoreElements()) {
  +         result.append((String)elements.nextElement());
  +         while (elements.hasMoreElements()) {
  +             String element = (String)elements.nextElement();
  +             result.append(' ');
  +             result.append(element);
  +         }
  +     }
  +     
  +     return(result.toString());
  +    }
  +
  +    /**
        * Implements JAXP's Transformer.getOutputProperty().
        * Get an output property that is in effect for the transformation. The
        * property specified may be a property that was set with 
setOutputProperty,
  @@ -340,48 +366,61 @@
       public String getOutputProperty(String name)
        throws IllegalArgumentException {
   
  +     String value = null;
  +
        // First check if the property is overridden in this Transformer
  -     if (_properties != null) {
  -         String value = _properties.getProperty(name);
  -         if (value != null) return value;
  -     }
  +     if (_properties != null) value = _properties.getProperty(name);
   
        // Then check if it is set in the translet
  -     if (_translet != null) {
  +     if ((value == null) && (_translet != null)) {
            // TODO: get propertie value from translet
  -         if (name.equals(OutputKeys.ENCODING)) {
  -             return _encoding;
  -         }
  -         else if (name.equals(OutputKeys.METHOD)) {
  -
  -         }
  -         
  +         if (name.equals(OutputKeys.ENCODING))
  +             value = _translet._encoding;
  +         else if (name.equals(OutputKeys.METHOD))
  +             value = _translet._method;
  +         else if (name.equals(OutputKeys.INDENT))
  +             value = (new Boolean(_translet._indent)).toString();
  +         else if (name.equals(OutputKeys.DOCTYPE_PUBLIC))
  +             value = _translet._doctypePublic;
  +         else if (name.equals(OutputKeys.DOCTYPE_SYSTEM))
  +             value = _translet._doctypeSystem;
  +         else if (name.equals(OutputKeys.CDATA_SECTION_ELEMENTS))
  +             value = makeCDATAString(_translet._cdata);
  +         else if (name.equals(OutputKeys.MEDIA_TYPE))
  +             value = _translet._mediaType;
  +         else if (name.equals(OutputKeys.OMIT_XML_DECLARATION))
  +             value = (new Boolean(_translet._omitHeader)).toString();
  +         else if (name.equals(OutputKeys.STANDALONE))
  +             value = _translet._standalone;
  +         else if (name.equals(OutputKeys.VERSION))
  +             value = _translet._version;
        }
   
        // Then return the default values
  -     if (name.equals(OutputKeys.ENCODING))
  -         return _encoding;
  -     else if (name.equals(OutputKeys.METHOD))
  -         return XML_STRING;
  -     else if (name.equals(OutputKeys.INDENT))
  -         return NO_STRING;
  -     else if (name.equals(OutputKeys.DOCTYPE_PUBLIC))
  -         return EMPTY_STRING;
  -     else if (name.equals(OutputKeys.DOCTYPE_SYSTEM))
  -         return EMPTY_STRING;
  -     else if (name.equals(OutputKeys.CDATA_SECTION_ELEMENTS))
  -         return EMPTY_STRING;
  -     else if (name.equals(OutputKeys.MEDIA_TYPE))
  -         return "text/xml";
  -     else if (name.equals(OutputKeys.OMIT_XML_DECLARATION))
  -         return NO_STRING;
  -     else if (name.equals(OutputKeys.STANDALONE))
  -         return NO_STRING;
  -     else if (name.equals(OutputKeys.VERSION))
  -         return "1.0";
  -
  +     if (value == null) {
  +         if (name.equals(OutputKeys.ENCODING))
  +             value = "utf-8";
  +         else if (name.equals(OutputKeys.METHOD))
  +             value = XML_STRING;
  +         else if (name.equals(OutputKeys.INDENT))
  +             value = NO_STRING;
  +         else if (name.equals(OutputKeys.DOCTYPE_PUBLIC))
  +             value = EMPTY_STRING;
  +         else if (name.equals(OutputKeys.DOCTYPE_SYSTEM))
  +             value = EMPTY_STRING;
  +         else if (name.equals(OutputKeys.CDATA_SECTION_ELEMENTS))
  +             value = EMPTY_STRING;
  +         else if (name.equals(OutputKeys.MEDIA_TYPE))
  +             value = "text/xml";
  +         else if (name.equals(OutputKeys.OMIT_XML_DECLARATION))
  +             value = NO_STRING;
  +         else if (name.equals(OutputKeys.STANDALONE))
  +             value = NO_STRING;
  +         else if (name.equals(OutputKeys.VERSION))
  +             value = "1.0";
  +     }
   
  -     return null;
  +     return value;
       }
   
       /**
  @@ -420,19 +459,46 @@
        */
       private void setOutputProperties(AbstractTranslet translet,
                                     Properties properties) {
  -     // TODO - pass properties to the translet
  +     // Get a list of all the defined properties
        Enumeration names = properties.propertyNames();
        while (names.hasMoreElements()) {
  +         // Get the next property name and value
            String name = (String)names.nextElement();
  -         if (name.equals(OutputKeys.ENCODING)) {
  -             _encoding = (String)properties.getProperty(name);
  +         String value = properties.getProperty(name);
  +
  +         // Pass property value to translet - override previous setting
  +         if (name.equals(OutputKeys.ENCODING))
  +             translet._encoding = value;
  +         else if (name.equals(OutputKeys.METHOD))
  +             translet._method = value;
  +         else if (name.equals(OutputKeys.DOCTYPE_PUBLIC))
  +             translet._doctypePublic = value;
  +         else if (name.equals(OutputKeys.DOCTYPE_SYSTEM))
  +             translet._doctypeSystem = value;
  +         else if (name.equals(OutputKeys.MEDIA_TYPE))
  +             translet._mediaType = value;
  +         else if (name.equals(OutputKeys.STANDALONE))
  +             translet._standalone = value;
  +         else if (name.equals(OutputKeys.VERSION))
  +             translet._version = value;
  +         else if (name.equals(OutputKeys.OMIT_XML_DECLARATION)) {
  +             if ((value != null) == (value.toLowerCase().equals("true"))) {
  +                 translet._omitHeader = true;
  +             }
  +         }
  +         else if (name.equals(OutputKeys.INDENT)) {
  +             if ((value != null) == (value.toLowerCase().equals("true"))) {
  +                 translet._indent = true;
  +             }
            }
            else if (name.equals(OutputKeys.CDATA_SECTION_ELEMENTS)) {
  -             // ignored - too late now, translet is already compiled
  +             translet._cdata = null; // Important - clear previous setting
  +             StringTokenizer e = new StringTokenizer(value);
  +             while (e.hasMoreTokens()) {
  +                 translet.addCdataElement(e.nextToken());
  +             }
            }
  -         else if (name.equals(OutputKeys.METHOD)) {
   
  -         }
        }
       }
   
  
  
  

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

Reply via email to