1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// DefaultHandler2.java - extended DefaultHandler 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// http://www.saxproject.org 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// Public Domain: no warranty. 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// $Id: DefaultHandler2.java,v 1.3 2002/01/12 19:04:19 dbrownell Exp $ 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.xml.sax.ext; 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.InputSource; 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXException; 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.DefaultHandler; 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This class extends the SAX2 base handler class to support the 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * SAX2 {@link LexicalHandler}, {@link DeclHandler}, and 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link EntityResolver2} extensions. Except for overriding the 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * original SAX1 {@link DefaultHandler#resolveEntity resolveEntity()} 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method the added handler methods just return. Subclassers may 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * override everything on a method-by-method basis. 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <blockquote> 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <em>This module, both source code and documentation, is in the 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em> 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </blockquote> 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> <em>Note:</em> this class might yet learn that the 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <em>ContentHandler.setDocumentLocator()</em> call might be passed a 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Locator2} object, and that the 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <em>ContentHandler.startElement()</em> call might be passed a 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Attributes2} object. 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @since SAX 2.0 (extensions 1.1 alpha) 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author David Brownell 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @version TBS 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class DefaultHandler2 extends DefaultHandler 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project implements LexicalHandler, DeclHandler, EntityResolver2 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project{ 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** Constructs a handler which ignores all parsing events. */ 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public DefaultHandler2 () { } 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // SAX2 ext-1.0 LexicalHandler 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void startCDATA () 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project {} 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void endCDATA () 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project {} 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void startDTD (String name, String publicId, String systemId) 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project {} 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void endDTD () 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project {} 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void startEntity (String name) 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project {} 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void endEntity (String name) 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project {} 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void comment (char ch [], int start, int length) 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { } 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // SAX2 ext-1.0 DeclHandler 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void attributeDecl (String eName, String aName, 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String type, String mode, String value) 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project {} 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void elementDecl (String name, String model) 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project {} 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void externalEntityDecl (String name, 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String publicId, String systemId) 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project {} 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void internalEntityDecl (String name, String value) 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project {} 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // SAX2 ext-1.1 EntityResolver2 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tells the parser that if no external subset has been declared 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * in the document text, none should be used. 100f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name Identifies the document root element. This name comes 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * from a DOCTYPE declaration (where available) or from the actual 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * root element. The parameter is ignored. 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param baseURI The document's base URI, serving as an additional 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * hint for selecting the external subset. This is always an absolute 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * URI, unless it is null because the XMLReader was given an InputSource 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * without one. The parameter is ignored. 108f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return null (always). 110f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @exception SAXException Any SAX exception, possibly wrapping 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * another exception. 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @exception IOException Probably indicating a failure to create 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a new InputStream or Reader, or an illegal URL. 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public InputSource getExternalSubset (String name, String baseURI) 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException, IOException 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { return null; } 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tells the parser to resolve the systemId against the baseURI 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * and read the entity text from that resulting absolute URI. 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Note that because the older 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link DefaultHandler#resolveEntity DefaultHandler.resolveEntity()}, 125f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * method is overridden to call this one, this method may sometimes 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * be invoked with null <em>name</em> and <em>baseURI</em>, and 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * with the <em>systemId</em> already absolutized. 128f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name Identifies the external entity being resolved. 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Either "[dtd]" for the external subset, or a name starting 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * with "%" to indicate a parameter entity, or else the name of 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a general entity. This is never null when invoked by a SAX2 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * parser. 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param publicId The public identifier of the external entity being 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * referenced (normalized as required by the XML specification), or 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * null if none was supplied. 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param baseURI The URI with respect to which relative systemIDs 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * are interpreted. This is always an absolute URI, unless it is 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * null (likely because the XMLReader was given an InputSource without 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * one). This URI is defined by the XML specification to be the one 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * associated with the "<" starting the relevant declaration. 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param systemId The system identifier of the external entity 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * being referenced; either a relative or absolute URI. 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This is never null when invoked by a SAX2 parser; only declared 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * entities, and any external subset, are resolved by such parsers. 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return An InputSource object describing the new input source. 148f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @exception SAXException Any SAX exception, possibly wrapping 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * another exception. 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @exception IOException Probably indicating a failure to create 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a new InputStream or Reader, or an illegal URL. 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public InputSource resolveEntity (String name, String publicId, 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String baseURI, String systemId) 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException, IOException 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { return null; } 158f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // SAX1 EntityResolver 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Invokes 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link EntityResolver2#resolveEntity EntityResolver2.resolveEntity()} 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * with null entity name and base URI. 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You only need to override that method to use this class. 166f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param publicId The public identifier of the external entity being 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * referenced (normalized as required by the XML specification), or 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * null if none was supplied. 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param systemId The system identifier of the external entity 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * being referenced; either a relative or absolute URI. 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This is never null when invoked by a SAX2 parser; only declared 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * entities, and any external subset, are resolved by such parsers. 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return An InputSource object describing the new input source. 176f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @exception SAXException Any SAX exception, possibly wrapping 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * another exception. 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @exception IOException Probably indicating a failure to create 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a new InputStream or Reader, or an illegal URL. 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public InputSource resolveEntity (String publicId, String systemId) 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws SAXException, IOException 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project { return resolveEntity (null, publicId, null, systemId); } 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 186