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: TransformerHandlerImpl.java 468645 2006-10-28 06:57:24Z minchau $ 209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xalan.transformer; 229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.io.IOException; 249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport javax.xml.transform.Result; 269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport javax.xml.transform.Transformer; 279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport javax.xml.transform.sax.TransformerHandler; 289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.res.XSLMessages; 309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xalan.res.XSLTErrorResources; 319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.dtm.DTM; 329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.dtm.DTMManager; 339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.dtm.ref.IncrementalSAXSource_Filter; 349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.dtm.ref.sax2dtm.SAX2DTM; 359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xpath.XPathContext; 369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.Attributes; 389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.ContentHandler; 399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.DTDHandler; 409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.EntityResolver; 419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.ErrorHandler; 429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.InputSource; 439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.Locator; 449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.SAXException; 459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.SAXParseException; 469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.ext.DeclHandler; 479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.ext.LexicalHandler; 489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.serializer.SerializationHandler; 499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/** 529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * A TransformerHandler 539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * listens for SAX ContentHandler parse events and transforms 549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * them to a Result. 559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic class TransformerHandlerImpl 579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson implements EntityResolver, DTDHandler, ContentHandler, ErrorHandler, 589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson LexicalHandler, TransformerHandler, DeclHandler 599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{ 609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * The flag for the setting of the optimize feature; 629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private final boolean m_optimizer; 649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * The flag for the setting of the incremental feature; 679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private final boolean m_incremental; 699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * The flag for the setting of the source_location feature; 729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private final boolean m_source_location; 749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private boolean m_insideParse = false; 769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Constructors. 799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Construct a TransformerHandlerImpl. 839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param transformer Non-null reference to the Xalan transformer impl. 859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param doFragment True if the result should be a document fragement. 869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param baseSystemID The system ID to use as the base for relative URLs. 879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public TransformerHandlerImpl(TransformerImpl transformer, 899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson boolean doFragment, String baseSystemID) 909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson super(); 939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_transformer = transformer; 959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_baseSystemID = baseSystemID; 969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson XPathContext xctxt = transformer.getXPathContext(); 989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson DTM dtm = xctxt.getDTM(null, true, transformer, true, true); 999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_dtm = dtm; 1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson dtm.setDocumentBaseURI(baseSystemID); 1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler = dtm.getContentHandler(); 1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_dtdHandler = dtm.getDTDHandler(); 1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_entityResolver = dtm.getEntityResolver(); 1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_errorHandler = dtm.getErrorHandler(); 1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexicalHandler = dtm.getLexicalHandler(); 1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_incremental = transformer.getIncremental(); 1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_optimizer = transformer.getOptimize(); 1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_source_location = transformer.getSource_location(); 1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Do what needs to be done to shut down the CoRoutine management. 1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected void clearCoRoutine() 1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson clearCoRoutine(null); 1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Do what needs to be done to shut down the CoRoutine management. 1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected void clearCoRoutine(SAXException ex) 1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null != ex) 1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_transformer.setExceptionThrown(ex); 1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(m_dtm instanceof SAX2DTM) 1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(DEBUG) 1329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.err.println("In clearCoRoutine..."); 1339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 1349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson SAX2DTM sax2dtm = ((SAX2DTM)m_dtm); 1369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null != m_contentHandler 1379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson && m_contentHandler instanceof IncrementalSAXSource_Filter) 1389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson IncrementalSAXSource_Filter sp = 1409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson (IncrementalSAXSource_Filter)m_contentHandler; 1419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // This should now be all that's needed. 1429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson sp.deliverMoreNodes(false); 1439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson sax2dtm.clearCoRoutine(true); 1469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler = null; 1479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_dtdHandler = null; 1489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_entityResolver = null; 1499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_errorHandler = null; 1509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexicalHandler = null; 1519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch(Throwable throwable) 1539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throwable.printStackTrace(); 1559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(DEBUG) 1589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.err.println("...exiting clearCoRoutine"); 1599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 1639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Implementation of javax.xml.transform.sax.TransformerHandler. 1649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 1659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Enables the user of the TransformerHandler to set the 1689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to set the Result for the transformation. 1699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param result A Result instance, should not be null. 1719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws IllegalArgumentException if result is invalid for some reason. 1739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setResult(Result result) throws IllegalArgumentException 1759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null == result) 1789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throw new IllegalArgumentException(XSLMessages.createMessage(XSLTErrorResources.ER_RESULT_NULL, null)); //"result should not be null"); 1799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 1819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson// ContentHandler handler = 1839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson// m_transformer.createResultContentHandler(result); 1849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson// m_transformer.setContentHandler(handler); 1859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson SerializationHandler xoh = 1869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_transformer.createSerializationHandler(result); 1879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_transformer.setSerializationHandler(xoh); 1889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch (javax.xml.transform.TransformerException te) 1909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throw new IllegalArgumentException(XSLMessages.createMessage(XSLTErrorResources.ER_RESULT_COULD_NOT_BE_SET, null)); //"result could not be set"); 1929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_result = result; 1959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Set the base ID (URI or system ID) from where relative 1999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * URLs will be resolved. 2009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param systemID Base URI for the source tree. 2019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setSystemId(String systemID) 2039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_baseSystemID = systemID; 2059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_dtm.setDocumentBaseURI(systemID); 2069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Get the base ID (URI or system ID) from where relative 2109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * URLs will be resolved. 2119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return The systemID that was set with {@link #setSystemId}. 2129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public String getSystemId() 2149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_baseSystemID; 2169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Get the Transformer associated with this handler, which 2209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * is needed in order to set parameters and output properties. 2219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return The Transformer associated with this handler 2239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public Transformer getTransformer() 2259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_transformer; 2279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 2309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Implementation of org.xml.sax.EntityResolver. 2319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 2329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter an external entity resolution. 2359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param publicId The entity's public identifier, or null. 2379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param systemId The entity's system identifier. 2389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return A new InputSource or null for the default. 2399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws IOException 2419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 2429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 2439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws java.io.IOException The client may throw an 2449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * I/O-related exception while obtaining the 2459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * new InputSource. 2469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.EntityResolver#resolveEntity 2479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public InputSource resolveEntity(String publicId, String systemId) 2499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException, IOException 2509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_entityResolver != null) 2539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_entityResolver.resolveEntity(publicId, systemId); 2559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 2579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return null; 2599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 2639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Implementation of org.xml.sax.DTDHandler. 2649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 2659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter a notation declaration event. 2689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param name The notation name. 2709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param publicId The notation's public identifier, or null. 2719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param systemId The notation's system identifier, or null. 2729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 2739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 2749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.DTDHandler#notationDecl 2759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void notationDecl(String name, String publicId, String systemId) 2779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 2789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_dtdHandler != null) 2819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_dtdHandler.notationDecl(name, publicId, systemId); 2839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter an unparsed entity declaration event. 2889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param name The entity name. 2909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param publicId The entity's public identifier, or null. 2919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param systemId The entity's system identifier, or null. 2929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param notationName The name of the associated notation. 2939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 2949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 2959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.DTDHandler#unparsedEntityDecl 2969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void unparsedEntityDecl( 2989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String name, String publicId, String systemId, String notationName) 2999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 3009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_dtdHandler != null) 3039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_dtdHandler.unparsedEntityDecl(name, publicId, systemId, notationName); 3059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 3099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Implementation of org.xml.sax.ContentHandler. 3109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 3119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter a new document locator event. 3149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param locator The document locator. 3169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#setDocumentLocator 3179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setDocumentLocator(Locator locator) 3199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 3229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#setDocumentLocator: " 3239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + locator.getSystemId()); 3249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.m_locator = locator; 3269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null == m_baseSystemID) 3289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson setSystemId(locator.getSystemId()); 3309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 3339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.setDocumentLocator(locator); 3359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter a start document event. 3409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 3429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 3439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#startDocument 3449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startDocument() throws SAXException 3469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 3499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#startDocument"); 3509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_insideParse = true; 3529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Thread listener = new Thread(m_transformer); 3549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 3569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //m_transformer.setTransformThread(listener); 3589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(m_incremental) 3599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_transformer.setSourceTreeDocForThread(m_dtm.getDocument()); 3619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int cpriority = Thread.currentThread().getPriority(); 3639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // runTransformThread is equivalent with the 2.0.1 code, 3659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // except that the Thread may come from a pool. 3669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_transformer.runTransformThread( cpriority ); 3679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // This is now done _last_, because IncrementalSAXSource_Filter 3709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // will immediately go into a "wait until events are requested" 3719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // pause. I believe that will close our timing window. 3729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // %REVIEW% 3739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.startDocument(); 3749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //listener.setDaemon(false); 3779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //listener.start(); 3789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter an end document event. 3839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 3859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 3869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#endDocument 3879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endDocument() throws SAXException 3899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 3929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#endDocument"); 3939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_insideParse = false; 3959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 3979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.endDocument(); 3999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(m_incremental) 4029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_transformer.waitTransformThread(); 4049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 4069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_transformer.setSourceTreeDocForThread(m_dtm.getDocument()); 4089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_transformer.run(); 4099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /* Thread transformThread = m_transformer.getTransformThread(); 4119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != transformThread) 4139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 4159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // This should wait until the transformThread is considered not alive. 4189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson transformThread.join(); 4199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (!m_transformer.hasTransformThreadErrorCatcher()) 4219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson Exception e = m_transformer.getExceptionThrown(); 4239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != e) 4259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throw new org.xml.sax.SAXException(e); 4269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_transformer.setTransformThread(null); 4299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch (InterruptedException ie){} 4319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson }*/ 4329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter a start Namespace prefix mapping event. 4369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 4379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param prefix The Namespace prefix. 4389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param uri The Namespace URI. 4399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 4409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 4419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#startPrefixMapping 4429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startPrefixMapping(String prefix, String uri) 4449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 4459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 4489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#startPrefixMapping: " 4499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + prefix + ", " + uri); 4509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 4529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.startPrefixMapping(prefix, uri); 4549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter an end Namespace prefix mapping event. 4599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 4609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param prefix The Namespace prefix. 4619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 4629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 4639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#endPrefixMapping 4649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endPrefixMapping(String prefix) throws SAXException 4669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 4699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#endPrefixMapping: " 4709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + prefix); 4719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 4739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.endPrefixMapping(prefix); 4759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter a start element event. 4809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 4819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param uri The element's Namespace URI, or the empty string. 4829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param localName The element's local name, or the empty string. 4839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param qName The element's qualified (prefixed) name, or the empty 4849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * string. 4859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param atts The element's attributes. 4869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 4879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 4889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#startElement 4899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startElement( 4919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String uri, String localName, String qName, Attributes atts) 4929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 4939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 4969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#startElement: " + qName); 4979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 4999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.startElement(uri, localName, qName, atts); 5019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter an end element event. 5069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 5079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param uri The element's Namespace URI, or the empty string. 5089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param localName The element's local name, or the empty string. 5099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param qName The element's qualified (prefixed) name, or the empty 5109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * string. 5119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 5129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 5139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#endElement 5149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endElement(String uri, String localName, String qName) 5169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 5179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 5209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#endElement: " + qName); 5219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 5239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.endElement(uri, localName, qName); 5259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter a character data event. 5309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 5319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param ch An array of characters. 5329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param start The starting position in the array. 5339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param length The number of characters to use from the array. 5349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 5359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 5369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#characters 5379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void characters(char ch[], int start, int length) throws SAXException 5399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 5429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#characters: " + start + ", " 5439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + length); 5449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 5469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.characters(ch, start, length); 5489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter an ignorable whitespace event. 5539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 5549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param ch An array of characters. 5559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param start The starting position in the array. 5569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param length The number of characters to use from the array. 5579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 5589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 5599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#ignorableWhitespace 5609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void ignorableWhitespace(char ch[], int start, int length) 5629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 5639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 5669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#ignorableWhitespace: " 5679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + start + ", " + length); 5689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 5709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.ignorableWhitespace(ch, start, length); 5729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter a processing instruction event. 5779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 5789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param target The processing instruction target. 5799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param data The text following the target. 5809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 5819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 5829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#processingInstruction 5839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 5849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void processingInstruction(String target, String data) 5859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 5869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 5899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#processingInstruction: " 5909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + target + ", " + data); 5919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 5939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 5949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.processingInstruction(target, data); 5959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 5979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 5989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 5999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter a skipped entity event. 6009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 6019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param name The name of the skipped entity. 6029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 6039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 6049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#skippedEntity 6059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void skippedEntity(String name) throws SAXException 6079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 6109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#skippedEntity: " + name); 6119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_contentHandler != null) 6139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_contentHandler.skippedEntity(name); 6159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 6199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Implementation of org.xml.sax.ErrorHandler. 6209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 6219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter a warning event. 6249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 6259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param e The nwarning as an exception. 6269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 6279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 6289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ErrorHandler#warning 6299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void warning(SAXParseException e) throws SAXException 6319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // This is not great, but we really would rather have the error 6339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // handler be the error listener if it is a error handler. Coroutine's fatalError 6349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // can't really be configured, so I think this is the best thing right now 6359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // for error reporting. Possibly another JAXP 1.1 hole. -sb 6369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson javax.xml.transform.ErrorListener errorListener = m_transformer.getErrorListener(); 6379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(errorListener instanceof ErrorHandler) 6389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ((ErrorHandler)errorListener).warning(e); 6409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 6429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 6449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson errorListener.warning(new javax.xml.transform.TransformerException(e)); 6469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch(javax.xml.transform.TransformerException te) 6489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throw e; 6509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter an error event. 6569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 6579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param e The error as an exception. 6589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 6599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 6609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ErrorHandler#error 6619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 6629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void error(SAXParseException e) throws SAXException 6639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // %REVIEW% I don't think this should be called. -sb 6659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // clearCoRoutine(e); 6669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // This is not great, but we really would rather have the error 6689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // handler be the error listener if it is a error handler. Coroutine's fatalError 6699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // can't really be configured, so I think this is the best thing right now 6709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // for error reporting. Possibly another JAXP 1.1 hole. -sb 6719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson javax.xml.transform.ErrorListener errorListener = m_transformer.getErrorListener(); 6729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(errorListener instanceof ErrorHandler) 6739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ((ErrorHandler)errorListener).error(e); 6759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null != m_errorHandler) 6769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_errorHandler.error(e); // may not be called. 6779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 6799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 6819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson errorListener.error(new javax.xml.transform.TransformerException(e)); 6839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null != m_errorHandler) 6849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_errorHandler.error(e); // may not be called. 6859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch(javax.xml.transform.TransformerException te) 6879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 6889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throw e; 6899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 6929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 6939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 6949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Filter a fatal error event. 6959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 6969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param e The error as an exception. 6979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The client may throw 6989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * an exception during processing. 6999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ErrorHandler#fatalError 7009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void fatalError(SAXParseException e) throws SAXException 7029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null != m_errorHandler) 7049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 7069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_errorHandler.fatalError(e); 7089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch(SAXParseException se) 7109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // ignore 7129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // clearCoRoutine(e); 7149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // This is not great, but we really would rather have the error 7179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // handler be the error listener if it is a error handler. Coroutine's fatalError 7189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // can't really be configured, so I think this is the best thing right now 7199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // for error reporting. Possibly another JAXP 1.1 hole. -sb 7209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson javax.xml.transform.ErrorListener errorListener = m_transformer.getErrorListener(); 7219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(errorListener instanceof ErrorHandler) 7239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ((ErrorHandler)errorListener).fatalError(e); 7259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null != m_errorHandler) 7269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_errorHandler.fatalError(e); // may not be called. 7279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 7299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson try 7319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson errorListener.fatalError(new javax.xml.transform.TransformerException(e)); 7339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(null != m_errorHandler) 7349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_errorHandler.fatalError(e); // may not be called. 7359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson catch(javax.xml.transform.TransformerException te) 7379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throw e; 7399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 7449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Implementation of org.xml.sax.ext.LexicalHandler. 7459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 7469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 7489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report the start of DTD declarations, if any. 7499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 7509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>Any declarations are assumed to be in the internal subset 7519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * unless otherwise indicated by a {@link #startEntity startEntity} 7529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * event.</p> 7539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 7549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>Note that the start/endDTD events will appear within 7559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the start/endDocument events from ContentHandler and 7569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * before the first startElement event.</p> 7579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 7589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param name The document type name. 7599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param publicId The declared public identifier for the 7609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * external DTD subset, or null if none was declared. 7619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param systemId The declared system identifier for the 7629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * external DTD subset, or null if none was declared. 7639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an 7649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * exception. 7659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see #endDTD 7669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see #startEntity 7679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startDTD(String name, String publicId, String systemId) 7699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 7709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 7739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#startDTD: " + name + ", " 7749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + publicId + ", " + systemId); 7759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_lexicalHandler) 7779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexicalHandler.startDTD(name, publicId, systemId); 7799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 7839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report the end of DTD declarations. 7849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 7859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an exception. 7869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see #startDTD 7879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 7889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endDTD() throws SAXException 7899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 7929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#endDTD"); 7939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 7949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_lexicalHandler) 7959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 7969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexicalHandler.endDTD(); 7979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 7999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report the beginning of an entity in content. 8029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 8039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p><strong>NOTE:</entity> entity references in attribute 8049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * values -- and the start and end of the document entity -- 8059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * are never reported.</p> 8069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 8079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>The start and end of the external DTD subset are reported 8089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * using the pseudo-name "[dtd]". All other events must be 8099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * properly nested within start/end entity events.</p> 8109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 8119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>Note that skipped entities will be reported through the 8129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * {@link org.xml.sax.ContentHandler#skippedEntity skippedEntity} 8139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * event, which is part of the ContentHandler interface.</p> 8149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 8159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param name The name of the entity. If it is a parameter 8169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * entity, the name will begin with '%'. 8179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an exception. 8189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see #endEntity 8199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.DeclHandler#internalEntityDecl 8209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.DeclHandler#externalEntityDecl 8219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startEntity(String name) throws SAXException 8239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 8269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#startEntity: " + name); 8279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_lexicalHandler) 8299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexicalHandler.startEntity(name); 8319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report the end of an entity. 8369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 8379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param name The name of the entity that is ending. 8389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an exception. 8399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see #startEntity 8409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endEntity(String name) throws SAXException 8429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 8459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#endEntity: " + name); 8469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_lexicalHandler) 8489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexicalHandler.endEntity(name); 8509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report the start of a CDATA section. 8559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 8569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>The contents of the CDATA section will be reported through 8579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the regular {@link org.xml.sax.ContentHandler#characters 8589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * characters} event.</p> 8599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 8609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an exception. 8619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see #endCDATA 8629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startCDATA() throws SAXException 8649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 8679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#startCDATA"); 8689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_lexicalHandler) 8709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexicalHandler.startCDATA(); 8729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report the end of a CDATA section. 8779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 8789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an exception. 8799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see #startCDATA 8809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 8819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void endCDATA() throws SAXException 8829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 8859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#endCDATA"); 8869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_lexicalHandler) 8889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 8899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexicalHandler.endCDATA(); 8909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 8929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 8939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 8949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report an XML comment anywhere in the document. 8959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 8969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>This callback will be used for comments inside or outside the 8979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * document element, including comments in the external DTD 8989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * subset (if read).</p> 8999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 9009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param ch An array holding the characters in the comment. 9019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param start The starting position in the array. 9029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param length The number of characters to use from the array. 9039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an exception. 9049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void comment(char ch[], int start, int length) throws SAXException 9069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 9099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#comment: " + start + ", " 9109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + length); 9119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_lexicalHandler) 9139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexicalHandler.comment(ch, start, length); 9159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 9199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Implementation of org.xml.sax.ext.DeclHandler. 9209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 9219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 9239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report an element type declaration. 9249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 9259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>The content model will consist of the string "EMPTY", the 9269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * string "ANY", or a parenthesised group, optionally followed 9279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * by an occurrence indicator. The model will be normalized so 9289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * that all whitespace is removed,and will include the enclosing 9299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * parentheses.</p> 9309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 9319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param name The element type name. 9329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param model The content model as a normalized string. 9339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an exception. 9349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void elementDecl(String name, String model) throws SAXException 9369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 9399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#elementDecl: " + name + ", " 9409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + model); 9419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_declHandler) 9439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_declHandler.elementDecl(name, model); 9459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 9499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report an attribute type declaration. 9509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 9519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>Only the effective (first) declaration for an attribute will 9529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * be reported. The type will be one of the strings "CDATA", 9539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * "ID", "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", 9549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * "ENTITIES", or "NOTATION", or a parenthesized token group with 9559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the separator "|" and all whitespace removed.</p> 9569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 9579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param eName The name of the associated element. 9589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param aName The name of the attribute. 9599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param type A string representing the attribute type. 9609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param valueDefault A string representing the attribute default 9619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if 9629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * none of these applies. 9639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param value A string representing the attribute's default value, 9649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * or null if there is none. 9659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an exception. 9669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void attributeDecl( 9689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String eName, String aName, String type, String valueDefault, String value) 9699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 9709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 9739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#attributeDecl: " + eName 9749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + ", " + aName + ", etc..."); 9759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_declHandler) 9779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_declHandler.attributeDecl(eName, aName, type, valueDefault, value); 9799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 9819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 9839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report an internal entity declaration. 9849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 9859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>Only the effective (first) declaration for each entity 9869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * will be reported.</p> 9879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 9889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param name The name of the entity. If it is a parameter 9899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * entity, the name will begin with '%'. 9909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param value The replacement text of the entity. 9919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an exception. 9929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see #externalEntityDecl 9939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.DTDHandler#unparsedEntityDecl 9949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 9959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void internalEntityDecl(String name, String value) 9969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 9979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 9989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 9999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 10009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#internalEntityDecl: " + name 10019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + ", " + value); 10029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_declHandler) 10049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_declHandler.internalEntityDecl(name, value); 10069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 10109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Report a parsed external entity declaration. 10119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 10129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>Only the effective (first) declaration for each entity 10139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * will be reported.</p> 10149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 10159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param name The name of the entity. If it is a parameter 10169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * entity, the name will begin with '%'. 10179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param publicId The declared public identifier of the entity, or 10189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * null if none was declared. 10199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param systemId The declared system identifier of the entity. 10209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws SAXException The application may raise an exception. 10219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see #internalEntityDecl 10229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.DTDHandler#unparsedEntityDecl 10239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 10249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void externalEntityDecl( 10259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String name, String publicId, String systemId) throws SAXException 10269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (DEBUG) 10299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson System.out.println("TransformerHandlerImpl#externalEntityDecl: " + name 10309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson + ", " + publicId + ", " + systemId); 10319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (null != m_declHandler) 10339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 10349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_declHandler.externalEntityDecl(name, publicId, systemId); 10359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 10379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 10399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Internal state. 10409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson //////////////////////////////////////////////////////////////////// 10419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** Set to true for diagnostics output. */ 10439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private static boolean DEBUG = false; 10449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 10469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * The transformer this will use to transform a 10479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * source tree into a result tree. 10489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 10499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private TransformerImpl m_transformer; 10509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The system ID to use as a base for relative URLs. */ 10529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private String m_baseSystemID; 10539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The result for the transformation. */ 10559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private Result m_result = null; 10569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The locator for this TransformerHandler. */ 10589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private Locator m_locator = null; 10599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The entity resolver to aggregate to. */ 10619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private EntityResolver m_entityResolver = null; 10629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The DTD handler to aggregate to. */ 10649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private DTDHandler m_dtdHandler = null; 10659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The content handler to aggregate to. */ 10679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private ContentHandler m_contentHandler = null; 10689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The error handler to aggregate to. */ 10709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private ErrorHandler m_errorHandler = null; 10719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The lexical handler to aggregate to. */ 10739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private LexicalHandler m_lexicalHandler = null; 10749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The decl handler to aggregate to. */ 10769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private DeclHandler m_declHandler = null; 10779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 10789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** The Document Table Instance we are transforming. */ 10799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson DTM m_dtm; 10809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson} 1081