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