content: /* -*-             c-basic-offset: 4; indent-tabs-mode: nil; -*-  //------100-columns-wide------>|*/
  // for license please see accompanying LICENSE.txt file (available also at http://www.xmlpull.org/)
  
  package org.xmlpull.v1.wrapper;
  
  import java.io.IOException;
  import org.xmlpull.v1.XmlPullParser;
  import org.xmlpull.v1.XmlPullParserException;
  import org.xmlpull.v1.XmlSerializer;
  
  /**
   * Extensions to XmlSerialzier interface
   *
   * @author <a href="http://www.extreme.indiana.edu/~aslom/">Aleksander Slominski</a>
   * @author Naresh Bhatia
   */
  public interface XmlSerializerWrapper extends XmlSerializer {
      public static final String NO_NAMESPACE = XmlPullParserWrapper.NO_NAMESPACE;
      public static final String XSI_NS = XmlPullParserWrapper.XSI_NS;
      public static final String XSD_NS = XmlPullParserWrapper.XSD_NS;
  
      /**
       * Get namespace that is used as default when no namespace parameter is used for
       * startTag(), endTag() and element()
       */
      public String getCurrentNamespaceForElements();
  
      /**
       * Set namespace to use in startTag(), endTag() and element()
       * when methods called are those without namespace parameter.
       */
      public String setCurrentNamespaceForElements(String value);
  
  
      /**
       * Write an attribute without namespace.
       * Calls to attribute() MUST follow a call to
       * startTag() immediately. If there is no prefix defined for the
       * given namespace, a prefix will be defined automatically.
       * NOTE: current element namespace is not used attribute and attributre has no namespace.
       */
      public XmlSerializerWrapper attribute (String name, String value)
          throws IOException, IllegalArgumentException, IllegalStateException;
  
      /** Write start tag in current namespace with name given as argument. */
      public XmlSerializerWrapper startTag(String name)
          throws IOException, IllegalArgumentException, IllegalStateException;
  
      /** Write end tag in current namespace with name given as argument. */
      public XmlSerializerWrapper endTag(String name)
          throws IOException, IllegalArgumentException, IllegalStateException;
  
      /**
       * Writes a simple element such as &lt;username>johndoe&lt;/username>. The namespace
       * and elementText are allowed to be null. If elementText is null, an xsi:nil="true"
       * will be added as an attribute.
       */
      public XmlSerializerWrapper element(String namespace, String elementName, String elementText)
          throws IOException, XmlPullParserException;
  
      /** Write simple text element in current namespace */
      public XmlSerializerWrapper element(String elementName, String elementText)
          throws IOException, XmlPullParserException;
  
      /** Write XML fragment using currently set namespace prefixes */
      public void fragment(String xmlFragment)
          throws IOException, IllegalArgumentException, IllegalStateException, XmlPullParserException;
  
      /** Serializer current event form pull parser */
      public void event(XmlPullParser pp)
          throws IOException, IllegalArgumentException, IllegalStateException, XmlPullParserException;
  
      public String escapeText(String text) throws IllegalArgumentException;
      public String escapeAttributeValue(String text) throws IllegalArgumentException;
  
      // set of methods to make easy to write XSD types
  
  //    /**
  //     * Write as text value of argument (just calls text!).
  //     */
  //    public void writeDouble(double d)
  //        throws XmlPullParserException, IOException, IllegalArgumentException;
  //    public void writeFloat(float f)
  //        throws XmlPullParserException, IOException, IllegalArgumentException;
  //    public void writeInt(int i)
  //        throws XmlPullParserException, IOException, IllegalArgumentException;
  //    public void writeString(String s)
  //        throws XmlPullParserException, IOException, IllegalArgumentException;
  //
  //    /**
  //     * Write as element with namesoace and name and value inside
  //     * (looks like &lt;ns:name>value&lt;/ns:name> where ns is prefix
  //     * for namespace autoatically declared if needed).
  //     */
  //    public void writeDoubleElement(String namespace, String name, double d)
  //        throws XmlPullParserException, IOException, IllegalArgumentException;
  //    public void writeFloatElement(String namespace, String name, float f)
  //        throws XmlPullParserException, IOException, IllegalArgumentException;
  //    public void writeIntElement(String namespace, String name, int i)
  //        throws XmlPullParserException, IOException, IllegalArgumentException;
  //    public void writeStringElement(String namespace, String name, String s)
  //        throws XmlPullParserException, IOException, IllegalArgumentException;
  }
  
  