1 /* 2 * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved 3 * 4 * This file is part of Resin(R) Open Source 5 * 6 * Each copy or derived work must preserve the copyright notice and this 7 * notice unmodified. 8 * 9 * Resin Open Source is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 2 of the License, or 12 * (at your option) any later version. 13 * 14 * Resin Open Source is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty 17 * of NON-INFRINGEMENT. See the GNU General Public License for more 18 * details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with Resin Open Source; if not, write to the 22 * Free SoftwareFoundation, Inc. 23 * 59 Temple Place, Suite 330 24 * Boston, MA 02111-1307 USA 25 * 26 * @author Scott Ferguson 27 */ 28 29 package com.caucho.xsl; 30 31 import com.caucho.util.L10N; 32 import com.caucho.xml.DOMBuilder; 33 import com.caucho.xml.QDocument; 34 35 import org.w3c.dom.Node; 36 import org.xml.sax.SAXException; 37 38 import javax.xml.transform.Templates; 39 import javax.xml.transform.TransformerException; 40 import javax.xml.transform.sax.TemplatesHandler; 41 42 public class TemplatesHandlerImpl extends DOMBuilder 43 implements TemplatesHandler { 44 protected static L10N L = new L10N(TemplatesHandlerImpl.class); 45 46 Templates _templates; 47 AbstractStylesheetFactory _factory; 48 49 TemplatesHandlerImpl(AbstractStylesheetFactory factory) 50 { 51 _factory = factory; 52 53 init(new QDocument()); 54 } 55 56 public javax.xml.transform.Templates getTemplates() 57 { 58 if (_templates == null) { 59 try { 60 endDocument(); 61 } catch (Exception e) { 62 } 63 } 64 65 return _templates; 66 } 67 68 public void endDocument() 69 throws SAXException 70 { 71 super.endDocument(); 72 73 Node node = getNode(); 74 75 try { 76 _templates = _factory.newTemplates(node); 77 } catch (TransformerException e) { 78 e.printStackTrace(); 79 throw new SAXException(e); 80 } 81 } 82 } 83