19f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/* 29f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one 39f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * or more contributor license agreements. See the NOTICE file 49f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed with this work for additional information 59f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * regarding copyright ownership. The ASF licenses this file 69f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to you under the Apache License, Version 2.0 (the "License"); 79f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * you may not use this file except in compliance with the License. 89f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * You may obtain a copy of the License at 99f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Unless required by applicable law or agreed to in writing, software 139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * See the License for the specific language governing permissions and 169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * limitations under the License. 179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/* 199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * $Id: ToUnknownStream.java 471981 2006-11-07 04:28:00Z minchau $ 209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xml.serializer; 229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.io.IOException; 249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.io.OutputStream; 259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.io.Writer; 269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.util.Properties; 279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.util.Vector; 289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport javax.xml.transform.SourceLocator; 309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport javax.xml.transform.Transformer; 319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.Node; 339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.Attributes; 349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.ContentHandler; 359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.Locator; 369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.SAXException; 379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/** 409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *This class wraps another SerializationHandler. The wrapped object will either 419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * handler XML or HTML, which is not known until a little later when the first XML 429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * tag is seen. If the first tag is <html> then the wrapped object is an HTML 439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * handler, otherwise it is an XML handler. 449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This class effectively caches the first few calls to it then passes them 469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * on to the wrapped handler (once it exists). After that subsequent calls a 479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * simply passed directly to the wrapped handler. 489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * The user of this class doesn't know if the output is ultimatley XML or HTML. 509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This class is not a public API, it is public because it is used within Xalan. 529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @xsl.usage internal 539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic final class ToUnknownStream extends SerializerBase 559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{ 569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * The wrapped handler, initially XML but possibly switched to HTML 599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private SerializationHandler m_handler; 619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * A String with no characters 649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private static final String EMPTYSTRING = ""; 669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * true if the underlying handler (XML or HTML) is fully initialized 699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private boolean m_wrapped_handler_not_initialized = false; 719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the prefix of the very first tag in the document 759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private String m_firstElementPrefix; 779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the element name (including any prefix) of the very first tag in the document 799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private String m_firstElementName; 819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the namespace URI associated with the first element 849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private String m_firstElementURI; 869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the local name (no prefix) associated with the first element 899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private String m_firstElementLocalName = null; 919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * true if the first tag has been emitted to the wrapped handler 949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private boolean m_firstTagNotEmitted = true; 969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * A collection of namespace URI's (only for first element). 999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * _namespacePrefix has the matching prefix for these URI's 1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private Vector m_namespaceURI = null; 1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * A collection of namespace Prefix (only for first element) 1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * _namespaceURI has the matching URIs for these prefix' 1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private Vector m_namespacePrefix = null; 1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * true if startDocument() was called before the underlying handler 1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * was initialized 1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private boolean m_needToCallStartDocument = false; 1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * true if setVersion() was called before the underlying handler 1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * was initialized 1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private boolean m_setVersion_called = false; 1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * true if setDoctypeSystem() was called before the underlying handler 1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * was initialized 1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private boolean m_setDoctypeSystem_called = false; 1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * true if setDoctypePublic() was called before the underlying handler 1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * was initialized 1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private boolean m_setDoctypePublic_called = false; 1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * true if setMediaType() was called before the underlying handler 1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * was initialized 1319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private boolean m_setMediaType_called = false; 1339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Default constructor. 1369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Initially this object wraps an XML Stream object, so _handler is never null. 1379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * That may change later to an HTML Stream object. 1389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public ToUnknownStream() 1409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler = new ToXMLStream(); 1429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see Serializer#asContentHandler() 1469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return the wrapped XML or HTML handler 1479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public ContentHandler asContentHandler() throws IOException 1499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* don't return the real handler ( m_handler ) because 1519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * that would expose the real handler to the outside. 1529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Keep m_handler private so it can be internally swapped 1539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to an HTML handler. 1549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return this; 1569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see SerializationHandler#close() 1609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void close() 1629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.close(); 1649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see Serializer#getOutputFormat() 1689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return the properties of the underlying handler 1699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public Properties getOutputFormat() 1719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getOutputFormat(); 1739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see Serializer#getOutputStream() 1779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return the OutputStream of the underlying XML or HTML handler 1789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public OutputStream getOutputStream() 1809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getOutputStream(); 1829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see Serializer#getWriter() 1869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return the Writer of the underlying XML or HTML handler 1879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public Writer getWriter() 1899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getWriter(); 1919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * passes the call on to the underlying HTML or XML handler 1959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see Serializer#reset() 1969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return ??? 1979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public boolean reset() 1999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.reset(); 2019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Converts the DOM node to output 2059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param node the DOM node to transform to output 2069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see DOMSerializer#serialize(Node) 2079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void serialize(Node node) throws IOException 2109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 2129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 2149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.serialize(node); 2169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see SerializationHandler#setEscaping(boolean) 2209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public boolean setEscaping(boolean escape) throws SAXException 2229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.setEscaping(escape); 2249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Set the properties of the handler 2289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param format the output properties to set 2299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see Serializer#setOutputFormat(Properties) 2309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setOutputFormat(Properties format) 2329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setOutputFormat(format); 2349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Sets the output stream to write to 2389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param output the OutputStream to write to 2399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see Serializer#setOutputStream(OutputStream) 2409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setOutputStream(OutputStream output) 2429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setOutputStream(output); 2449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Sets the writer to write to 2489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param writer the writer to write to 2499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see Serializer#setWriter(Writer) 2509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setWriter(Writer writer) 2529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setWriter(writer); 2549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Adds an attribute to the currenly open tag 2589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param uri the URI of a namespace 2599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param localName the attribute name, without prefix 2609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param rawName the attribute name, with prefix (if any) 2619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param type the type of the attribute, typically "CDATA" 2629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param value the value of the parameter 2639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param XSLAttribute true if this attribute is coming from an xsl:attribute element 2649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#addAttribute(String, String, String, String, String) 2659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void addAttribute( 2679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String uri, 2689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String localName, 2699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String rawName, 2709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String type, 2719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String value, 2729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson boolean XSLAttribute) 2739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 2749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 2769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 2789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.addAttribute(uri, localName, rawName, type, value, XSLAttribute); 2809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Adds an attribute to the currenly open tag 2839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param rawName the attribute name, with prefix (if any) 2849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param value the value of the parameter 2859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#addAttribute(String, String) 2869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void addAttribute(String rawName, String value) 2889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 2909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 2929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.addAttribute(rawName, value); 2949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Adds a unique attribute to the currenly open tag 2999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void addUniqueAttribute(String rawName, String value, int flags) 3019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 3029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 3049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 3069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.addUniqueAttribute(rawName, value, flags); 3089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Converts the String to a character array and calls the SAX method 3139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * characters(char[],int,int); 3149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#characters(String) 3169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void characters(String chars) throws SAXException 3189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson final int length = chars.length(); 3209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (length > m_charsBuff.length) 3219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_charsBuff = new char[length*2 + 1]; 3239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson chars.getChars(0, length, m_charsBuff, 0); 3259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.characters(m_charsBuff, 0, length); 3269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 3309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#endElement(String) 3319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endElement(String elementName) throws SAXException 3339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 3359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 3379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.endElement(elementName); 3399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#startPrefixMapping(String, String) 3449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param prefix The prefix that maps to the URI 3459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param uri The URI for the namespace 3469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startPrefixMapping(String prefix, String uri) throws SAXException 3489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.startPrefixMapping(prefix,uri, true); 3509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This method is used when a prefix/uri namespace mapping 3549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * is indicated after the element was started with a 3559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * startElement() and before and endElement(). 3569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * startPrefixMapping(prefix,uri) would be used before the 3579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * startElement() call. 3589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param uri the URI of the namespace 3599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param prefix the prefix associated with the given URI. 3609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#namespaceAfterStartElement(String, String) 3629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void namespaceAfterStartElement(String prefix, String uri) 3649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 3659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // hack for XSLTC with finding URI for default namespace 3679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted && m_firstElementURI == null && m_firstElementName != null) 3689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String prefix1 = getPrefixPart(m_firstElementName); 3709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (prefix1 == null && EMPTYSTRING.equals(prefix)) 3719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // the elements URI is not known yet, and it 3739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // doesn't have a prefix, and we are currently 3749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // setting the uri for prefix "", so we have 3759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // the uri for the element... lets remember it 3769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_firstElementURI = uri; 3779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson startPrefixMapping(prefix,uri, false); 3809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public boolean startPrefixMapping(String prefix, String uri, boolean shouldFlush) 3839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 3849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson boolean pushed = false; 3869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 3879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstElementName != null && shouldFlush) 3899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* we've already seen a startElement, and this is a prefix mapping 3919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * for the up coming element, so flush the old element 3929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * then send this event on its way. 3939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 3959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson pushed = m_handler.startPrefixMapping(prefix, uri, shouldFlush); 3969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 3989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_namespacePrefix == null) 4009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_namespacePrefix = new Vector(); 4029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_namespaceURI = new Vector(); 4039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_namespacePrefix.addElement(prefix); 4059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_namespaceURI.addElement(uri); 4069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstElementURI == null) 4089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (prefix.equals(m_firstElementPrefix)) 4109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_firstElementURI = uri; 4119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 4169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson pushed = m_handler.startPrefixMapping(prefix, uri, shouldFlush); 4189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return pushed; 4209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This method cannot be cached because default is different in 4249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * HTML and XML (we need more than a boolean). 4259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setVersion(String version) 4289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setVersion(version); 4309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Cache call to setVersion() 4329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // super.setVersion(version); 4339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_setVersion_called = true; 4349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#startDocument() 4389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startDocument() throws SAXException 4409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_needToCallStartDocument = true; 4429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startElement(String qName) throws SAXException 4479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.startElement(null, null, qName, null); 4499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startElement(String namespaceURI, String localName, String qName) throws SAXException 4529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.startElement(namespaceURI, localName, qName, null); 4549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startElement( 4579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String namespaceURI, 4589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String localName, 4599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String elementName, 4609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson Attributes atts) throws SAXException 4619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* we are notified of the start of an element */ 4639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 4649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* we have not yet sent the first element on its way */ 4669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstElementName != null) 4679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* this is not the first element, but a later one. 4699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * But we have the old element pending, so flush it out, 4709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * then send this one on its way. 4719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 4739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.startElement(namespaceURI, localName, elementName, atts); 4749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 4769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* this is the very first element that we have seen, 4789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * so save it for flushing later. We may yet get to know its 4799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * URI due to added attributes. 4809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_wrapped_handler_not_initialized = true; 4839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_firstElementName = elementName; 4849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // null if not known 4869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_firstElementPrefix = getPrefixPartUnknown(elementName); 4879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // null if not known 4899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_firstElementURI = namespaceURI; 4909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // null if not known 4929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_firstElementLocalName = localName; 4939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_tracer != null) 4959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson firePseudoElement(elementName); 4969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* we don't want to call our own addAttributes, which 4989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * merely delegates to the wrapped handler, but we want to 4999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * add these attributes to m_attributes. So me must call super. 5009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * addAttributes() In this case m_attributes is only used for the 5019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * first element, after that this class totally delegates to the 5029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * wrapped handler which is either XML or HTML. 5039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (atts != null) 5059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson super.addAttributes(atts); 5069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // if there are attributes, then lets make the flush() 5089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // call the startElement on the handler and send the 5099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // attributes on their way. 5109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (atts != null) 5119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 5129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 5169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // this is not the first element, but a later one, so just 5189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // send it on its way. 5199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.startElement(namespaceURI, localName, elementName, atts); 5209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 5259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedLexicalHandler#comment(String) 5269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void comment(String comment) throws SAXException 5289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted && m_firstElementName != null) 5309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson emitFirstTag(); 5329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else if (m_needToCallStartDocument) 5349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.startDocument(); 5369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_needToCallStartDocument = false; 5379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.comment(comment); 5409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 5449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#getDoctypePublic() 5459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public String getDoctypePublic() 5479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getDoctypePublic(); 5509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 5549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#getDoctypeSystem() 5559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public String getDoctypeSystem() 5579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getDoctypeSystem(); 5599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 5639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#getEncoding() 5649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public String getEncoding() 5669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getEncoding(); 5689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 5729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#getIndent() 5739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public boolean getIndent() 5759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getIndent(); 5779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 5819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#getIndentAmount() 5829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public int getIndentAmount() 5849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getIndentAmount(); 5869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 5909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#getMediaType() 5919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public String getMediaType() 5939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getMediaType(); 5959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 5999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#getOmitXMLDeclaration() 6009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public boolean getOmitXMLDeclaration() 6029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getOmitXMLDeclaration(); 6049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 6089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#getStandalone() 6099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public String getStandalone() 6119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getStandalone(); 6139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 6179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#getVersion() 6189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public String getVersion() 6209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getVersion(); 6229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#setDoctype(String, String) 6269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setDoctype(String system, String pub) 6289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setDoctypePublic(pub); 6309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setDoctypeSystem(system); 6319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Set the doctype in the underlying XML handler. Remember that this method 6359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * was called, just in case we need to transfer this doctype to an HTML handler 6369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param doctype the public doctype to set 6379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#setDoctypePublic(String) 6389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setDoctypePublic(String doctype) 6409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setDoctypePublic(doctype); 6429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_setDoctypePublic_called = true; 6439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Set the doctype in the underlying XML handler. Remember that this method 6479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * was called, just in case we need to transfer this doctype to an HTML handler 6489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param doctype the system doctype to set 6499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#setDoctypeSystem(String) 6509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setDoctypeSystem(String doctype) 6529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setDoctypeSystem(doctype); 6549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_setDoctypeSystem_called = true; 6559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 6599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#setEncoding(String) 6609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setEncoding(String encoding) 6629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setEncoding(encoding); 6649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 6689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#setIndent(boolean) 6699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setIndent(boolean indent) 6719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setIndent(indent); 6739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 6779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setIndentAmount(int value) 6799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setIndentAmount(value); 6819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#setMediaType(String) 6859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setMediaType(String mediaType) 6879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setMediaType(mediaType); 6899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_setMediaType_called = true; 6909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 6949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#setOmitXMLDeclaration(boolean) 6959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setOmitXMLDeclaration(boolean b) 6979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setOmitXMLDeclaration(b); 6999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 7029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 7039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#setStandalone(String) 7049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setStandalone(String standalone) 7069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setStandalone(standalone); 7089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 7119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see XSLOutputAttributes#setVersion(String) 7129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 7159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 7169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.DeclHandler#attributeDecl(String, String, String, String, String) 7179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void attributeDecl( 7199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String arg0, 7209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String arg1, 7219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String arg2, 7229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String arg3, 7239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String arg4) 7249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 7259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.attributeDecl(arg0, arg1, arg2, arg3, arg4); 7279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 7309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 7319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.DeclHandler#elementDecl(String, String) 7329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void elementDecl(String arg0, String arg1) throws SAXException 7349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 7369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson emitFirstTag(); 7389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.elementDecl(arg0, arg1); 7409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 7439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 7449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.DeclHandler#externalEntityDecl(String, String, String) 7459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void externalEntityDecl( 7479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String name, 7489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String publicId, 7499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String systemId) 7509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 7519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 7539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 7559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.externalEntityDecl(name, publicId, systemId); 7579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 7609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 7619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.DeclHandler#internalEntityDecl(String, String) 7629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void internalEntityDecl(String arg0, String arg1) 7649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 7659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 7679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 7699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.internalEntityDecl(arg0, arg1); 7719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 7749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 7759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#characters(char[], int, int) 7769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void characters(char[] characters, int offset, int length) 7789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 7799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 7819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 7839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.characters(characters, offset, length); 7869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 7909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 7919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#endDocument() 7929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endDocument() throws SAXException 7949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 7969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 7989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.endDocument(); 8019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 8079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#endElement(String, String, String) 8089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endElement(String namespaceURI, String localName, String qName) 8109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 8119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 8139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 8159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (namespaceURI == null && m_firstElementURI != null) 8169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson namespaceURI = m_firstElementURI; 8179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (localName == null && m_firstElementLocalName != null) 8209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson localName = m_firstElementLocalName; 8219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.endElement(namespaceURI, localName, qName); 8249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 8289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#endPrefixMapping(String) 8299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endPrefixMapping(String prefix) throws SAXException 8319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.endPrefixMapping(prefix); 8339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 8379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#ignorableWhitespace(char[], int, int) 8389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void ignorableWhitespace(char[] ch, int start, int length) 8409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 8419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 8439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 8459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.ignorableWhitespace(ch, start, length); 8479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 8519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#processingInstruction(String, String) 8529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void processingInstruction(String target, String data) 8549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 8559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 8579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 8599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.processingInstruction(target, data); 8629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 8669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#setDocumentLocator(Locator) 8679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setDocumentLocator(Locator locator) 8699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setDocumentLocator(locator); 8719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 8759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#skippedEntity(String) 8769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void skippedEntity(String name) throws SAXException 8789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.skippedEntity(name); 8809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 8869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.LexicalHandler#comment(char[], int, int) 8879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void comment(char[] ch, int start, int length) throws SAXException 8899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 8919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 8939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.comment(ch, start, length); 8969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 9009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.LexicalHandler#endCDATA() 9019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endCDATA() throws SAXException 9039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.endCDATA(); 9069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 9099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 9109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.LexicalHandler#endDTD() 9119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endDTD() throws SAXException 9139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.endDTD(); 9169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 9199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 9209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.LexicalHandler#endEntity(String) 9219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endEntity(String name) throws SAXException 9239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 9259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson emitFirstTag(); 9279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.endEntity(name); 9299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 9329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 9339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.LexicalHandler#startCDATA() 9349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startCDATA() throws SAXException 9369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.startCDATA(); 9389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 9419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 9429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.LexicalHandler#startDTD(String, String, String) 9439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startDTD(String name, String publicId, String systemId) 9459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 9469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.startDTD(name, publicId, systemId); 9489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 9519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass the call on to the underlying handler 9529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.LexicalHandler#startEntity(String) 9539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startEntity(String name) throws SAXException 9559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.startEntity(name); 9579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 9609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Initialize the wrapped output stream (XML or HTML). 9619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * If the stream handler should be HTML, then replace the XML handler with 9629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an HTML handler. After than send the starting method calls that were cached 9639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to the wrapped handler. 9649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 9659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private void initStreamOutput() throws SAXException 9679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Try to rule out if this is an not to be an HTML document based on prefix 9709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson boolean firstElementIsHTML = isFirstElemHTML(); 9719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (firstElementIsHTML) 9739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // create an HTML output handler, and initialize it 9759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // keep a reference to the old handler, ... it will soon be gone 9779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson SerializationHandler oldHandler = m_handler; 9789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* We have to make sure we get an output properties with the proper 9809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * defaults for the HTML method. The easiest way to do this is to 9819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * have the OutputProperties class do it. 9829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson Properties htmlProperties = 9859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson OutputPropertiesFactory.getDefaultMethodProperties(Method.HTML); 9869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson Serializer serializer = 9879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson SerializerFactory.getSerializer(htmlProperties); 9889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // The factory should be returning a ToStream 9909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Don't know what to do if it doesn't 9919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // i.e. the user has over-ridden the content-handler property 9929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // for html 9939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler = (SerializationHandler) serializer; 9949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //m_handler = new ToHTMLStream(); 9959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson Writer writer = oldHandler.getWriter(); 9979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != writer) 9999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setWriter(writer); 10009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 10019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson OutputStream os = oldHandler.getOutputStream(); 10039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != os) 10059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setOutputStream(os); 10069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // need to copy things from the old handler to the new one here 10099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // if (_setVersion_called) 10119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // { 10129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setVersion(oldHandler.getVersion()); 10139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // } 10149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // if (_setDoctypeSystem_called) 10159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // { 10169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setDoctypeSystem(oldHandler.getDoctypeSystem()); 10179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // } 10189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // if (_setDoctypePublic_called) 10199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // { 10209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setDoctypePublic(oldHandler.getDoctypePublic()); 10219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // } 10229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // if (_setMediaType_called) 10239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // { 10249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setMediaType(oldHandler.getMediaType()); 10259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // } 10269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setTransformer(oldHandler.getTransformer()); 10289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* Now that we have a real wrapped handler (XML or HTML) lets 10319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * pass any cached calls to it 10329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 10339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Call startDocument() if necessary 10349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_needToCallStartDocument) 10359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.startDocument(); 10379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_needToCallStartDocument = false; 10389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // the wrapped handler is now fully initialized 10419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_wrapped_handler_not_initialized = false; 10429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private void emitFirstTag() throws SAXException 10459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstElementName != null) 10479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_wrapped_handler_not_initialized) 10499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson initStreamOutput(); 10519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_wrapped_handler_not_initialized = false; 10529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Output first tag 10549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.startElement(m_firstElementURI, null, m_firstElementName, m_attributes); 10559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // don't need the collected attributes of the first element anymore. 10569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_attributes = null; 10579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Output namespaces of first tag 10599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_namespacePrefix != null) 10609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson final int n = m_namespacePrefix.size(); 10629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson for (int i = 0; i < n; i++) 10639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson final String prefix = 10659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson (String) m_namespacePrefix.elementAt(i); 10669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson final String uri = (String) m_namespaceURI.elementAt(i); 10679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.startPrefixMapping(prefix, uri, false); 10689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_namespacePrefix = null; 10709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_namespaceURI = null; 10719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_firstTagNotEmitted = false; 10739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 10779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Utility function for calls to local-name(). 10789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 10799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Don't want to override static function on SerializerBase 10809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * So added Unknown suffix to method name. 10819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 10829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private String getLocalNameUnknown(String value) 10839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int idx = value.lastIndexOf(':'); 10859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (idx >= 0) 10869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson value = value.substring(idx + 1); 10879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson idx = value.lastIndexOf('@'); 10889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (idx >= 0) 10899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson value = value.substring(idx + 1); 10909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return (value); 10919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 10949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Utility function to return prefix 10959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 10969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Don't want to override static function on SerializerBase 10979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * So added Unknown suffix to method name. 10989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 10999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private String getPrefixPartUnknown(String qname) 11009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson final int index = qname.indexOf(':'); 11029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return (index > 0) ? qname.substring(0, index) : EMPTYSTRING; 11039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 11059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 11069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Determine if the firts element in the document is <html> or <HTML> 11079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This uses the cached first element name, first element prefix and the 11089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * cached namespaces from previous method calls 11099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 11109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return true if the first element is an opening <html> tag 11119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 11129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private boolean isFirstElemHTML() 11139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson boolean isHTML; 11159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 11169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // is the first tag html, not considering the prefix ? 11179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson isHTML = 11189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson getLocalNameUnknown(m_firstElementName).equalsIgnoreCase("html"); 11199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 11209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Try to rule out if this is not to be an HTML document based on URI 11219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (isHTML 11229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson && m_firstElementURI != null 11239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson && !EMPTYSTRING.equals(m_firstElementURI)) 11249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // the <html> element has a non-trivial namespace 11269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson isHTML = false; 11279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Try to rule out if this is an not to be an HTML document based on prefix 11299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (isHTML && m_namespacePrefix != null) 11309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* the first element has a name of "html", but lets check the prefix. 11329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * If the prefix points to a namespace with a URL that is not "" 11339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * then the doecument doesn't start with an <html> tag, and isn't html 11349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 11359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson final int max = m_namespacePrefix.size(); 11369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson for (int i = 0; i < max; i++) 11379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson final String prefix = (String) m_namespacePrefix.elementAt(i); 11399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson final String uri = (String) m_namespaceURI.elementAt(i); 11409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 11419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstElementPrefix != null 11429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson && m_firstElementPrefix.equals(prefix) 11439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson && !EMPTYSTRING.equals(uri)) 11449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // The first element has a prefix, so it can't be <html> 11469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson isHTML = false; 11479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson break; 11489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 11519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return isHTML; 11539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 11559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see Serializer#asDOMSerializer() 11569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 11579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public DOMSerializer asDOMSerializer() throws IOException 11589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.asDOMSerializer(); 11609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 11629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 11639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param URI_and_localNames Vector a list of pairs of URI/localName 11649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * specified in the cdata-section-elements attribute. 11659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see SerializationHandler#setCdataSectionElements(java.util.Vector) 11669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 11679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setCdataSectionElements(Vector URI_and_localNames) 11689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setCdataSectionElements(URI_and_localNames); 11709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 11729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#addAttributes(org.xml.sax.Attributes) 11739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 11749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void addAttributes(Attributes atts) throws SAXException 11759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.addAttributes(atts); 11779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 11799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 11809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Get the current namespace mappings. 11819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Simply returns the mappings of the wrapped handler. 11829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#getNamespaceMappings() 11839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 11849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public NamespaceMappings getNamespaceMappings() 11859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson NamespaceMappings mappings = null; 11879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_handler != null) 11889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson mappings = m_handler.getNamespaceMappings(); 11909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return mappings; 11929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 11939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 11949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see SerializationHandler#flushPending() 11959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 11969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void flushPending() throws SAXException 11979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 11989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 11999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flush(); 12009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.flushPending(); 12029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private void flush() 12059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 12079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_firstTagNotEmitted) 12099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson emitFirstTag(); 12119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_needToCallStartDocument) 12139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.startDocument(); 12159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_needToCallStartDocument = false; 12169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch(SAXException e) 12199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throw new RuntimeException(e.toString()); 12219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 12279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#getPrefix 12289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 12299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public String getPrefix(String namespaceURI) 12309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getPrefix(namespaceURI); 12329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 12349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#entityReference(java.lang.String) 12359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 12369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void entityReference(String entityName) throws SAXException 12379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.entityReference(entityName); 12399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 12429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#getNamespaceURI(java.lang.String, boolean) 12439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 12449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public String getNamespaceURI(String qname, boolean isElement) 12459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getNamespaceURI(qname, isElement); 12479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public String getNamespaceURIFromPrefix(String prefix) 12509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getNamespaceURIFromPrefix(prefix); 12529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setTransformer(Transformer t) 12559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setTransformer(t); 12579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if ((t instanceof SerializerTrace) && 12589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson (((SerializerTrace) t).hasTraceListeners())) { 12599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_tracer = (SerializerTrace) t; 12609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } else { 12619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_tracer = null; 12629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public Transformer getTransformer() 12659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.getTransformer(); 12679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 12709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see SerializationHandler#setContentHandler(org.xml.sax.ContentHandler) 12719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 12729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setContentHandler(ContentHandler ch) 12739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setContentHandler(ch); 12759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 12779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This method is used to set the source locator, which might be used to 12789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * generated an error message. 12799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param locator the source locator 12809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 12819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#setSourceLocator(javax.xml.transform.SourceLocator) 12829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 12839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setSourceLocator(SourceLocator locator) 12849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_handler.setSourceLocator(locator); 12869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 12879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected void firePseudoElement(String elementName) 12899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 12909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_tracer != null) { 12929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson StringBuffer sb = new StringBuffer(); 12939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson sb.append('<'); 12959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson sb.append(elementName); 12969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 12979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // convert the StringBuffer to a char array and 12989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // emit the trace event that these characters "might" 12999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // be written 13009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson char ch[] = sb.toString().toCharArray(); 13019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_tracer.fireGenerateEvent( 13029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson SerializerTrace.EVENTTYPE_OUTPUT_PSEUDO_CHARACTERS, 13039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ch, 13049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 0, 13059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ch.length); 13069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 13079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 13089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 13099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 13109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.apache.xml.serializer.Serializer#asDOM3Serializer() 13119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 13129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public Object asDOM3Serializer() throws IOException 13139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 13149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_handler.asDOM3Serializer(); 13159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 13169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson} 1317