001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 /* 019 * $Id: SerializationHandler.java 471981 2006-11-07 04:28:00Z minchau $ 020 */ 021 package org.apache.xml.serializer; 022 023 import java.io.IOException; 024 025 import javax.xml.transform.Transformer; 026 027 import org.w3c.dom.Node; 028 import org.xml.sax.ContentHandler; 029 import org.xml.sax.ErrorHandler; 030 import org.xml.sax.SAXException; 031 import org.xml.sax.ext.DeclHandler; 032 033 /** 034 * This interface is the one that a serializer implements. It is a group of 035 * other interfaces, such as ExtendedContentHandler, ExtendedLexicalHandler etc. 036 * In addition there are other methods, such as reset(). 037 * 038 * This class is public only because it is used in another package, 039 * it is not a public API. 040 * 041 * @xsl.usage internal 042 */ 043 public interface SerializationHandler 044 extends 045 ExtendedContentHandler, 046 ExtendedLexicalHandler, 047 XSLOutputAttributes, 048 DeclHandler, 049 org.xml.sax.DTDHandler, 050 ErrorHandler, 051 DOMSerializer, 052 Serializer 053 { 054 /** 055 * Set the SAX Content handler that the serializer sends its output to. This 056 * method only applies to a ToSAXHandler, not to a ToStream serializer. 057 * 058 * @see Serializer#asContentHandler() 059 * @see ToSAXHandler 060 */ 061 public void setContentHandler(ContentHandler ch); 062 063 public void close(); 064 065 /** 066 * Notify that the serializer should take this DOM node as input to be 067 * serialized. 068 * 069 * @param node the DOM node to be serialized. 070 * @throws IOException 071 */ 072 public void serialize(Node node) throws IOException; 073 /** 074 * Turns special character escaping on/off. 075 * 076 * Note that characters will 077 * never, even if this option is set to 'true', be escaped within 078 * CDATA sections in output XML documents. 079 * 080 * @param escape true if escaping is to be set on. 081 */ 082 public boolean setEscaping(boolean escape) throws SAXException; 083 084 /** 085 * Set the number of spaces to indent for each indentation level. 086 * @param spaces the number of spaces to indent for each indentation level. 087 */ 088 public void setIndentAmount(int spaces); 089 090 /** 091 * Set the transformer associated with the serializer. 092 * @param transformer the transformer associated with the serializer. 093 */ 094 public void setTransformer(Transformer transformer); 095 096 /** 097 * Get the transformer associated with the serializer. 098 * @return Transformer the transformer associated with the serializer. 099 */ 100 public Transformer getTransformer(); 101 102 /** 103 * Used only by TransformerSnapshotImpl to restore the serialization 104 * to a previous state. 105 * 106 * @param mappings NamespaceMappings 107 */ 108 public void setNamespaceMappings(NamespaceMappings mappings); 109 110 /** 111 * A SerializationHandler accepts SAX-like events, so 112 * it can accumulate attributes or namespace nodes after 113 * a startElement(). 114 * <p> 115 * If the SerializationHandler has a Writer or OutputStream, 116 * a call to this method will flush such accumulated 117 * events as a closed start tag for an element. 118 * <p> 119 * If the SerializationHandler wraps a ContentHandler, 120 * a call to this method will flush such accumulated 121 * events as a SAX (not SAX-like) calls to 122 * startPrefixMapping() and startElement(). 123 * <p> 124 * If one calls endDocument() then one need not call 125 * this method since a call to endDocument() will 126 * do what this method does. However, in some 127 * circumstances, such as with document fragments, 128 * endDocument() is not called and it may be 129 * necessary to call this method to flush 130 * any pending events. 131 * <p> 132 * For performance reasons this method should not be called 133 * very often. 134 */ 135 public void flushPending() throws SAXException; 136 137 /** 138 * Default behavior is to expand DTD entities, 139 * that is the initall default value is true. 140 * @param expand true if DTD entities are to be expanded, 141 * false if they are to be left as DTD entity references. 142 */ 143 public void setDTDEntityExpansion(boolean expand); 144 145 }