001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 /* 019 * $Id: TransformState.java 468645 2006-10-28 06:57:24Z minchau $ 020 */ 021 package org.apache.xalan.transformer; 022 023 import javax.xml.transform.Transformer; 024 025 import org.apache.xalan.templates.ElemTemplate; 026 import org.apache.xalan.templates.ElemTemplateElement; 027 import org.apache.xml.serializer.TransformStateSetter; 028 029 import org.w3c.dom.Node; 030 import org.w3c.dom.traversal.NodeIterator; 031 032 /** 033 * This interface is meant to be used by a consumer of 034 * SAX2 events produced by Xalan, and enables the consumer 035 * to get information about the state of the transform. It 036 * is primarily intended as a tooling interface. A content 037 * handler can get a reference to a TransformState by implementing 038 * the TransformerClient interface. Xalan will check for 039 * that interface before it calls startDocument, and, if it 040 * is implemented, pass in a TransformState reference to the 041 * setTransformState method. 042 * 043 * <p>Note that the current stylesheet and root stylesheet can 044 * be retrieved from the ElemTemplateElement obtained from 045 * either getCurrentElement() or getCurrentTemplate().</p> 046 * 047 * This interface contains only getter methods, any setters are in the interface 048 * TransformStateSetter which this interface extends. 049 * 050 * @see org.apache.xml.serializer.TransformStateSetter 051 */ 052 public interface TransformState extends TransformStateSetter 053 { 054 055 /** 056 * Retrieves the stylesheet element that produced 057 * the SAX event. 058 * 059 * <p>Please note that the ElemTemplateElement returned may 060 * be in a default template, and thus may not be 061 * defined in the stylesheet.</p> 062 * 063 * @return the stylesheet element that produced the SAX event. 064 */ 065 ElemTemplateElement getCurrentElement(); 066 067 /** 068 * This method retrieves the current context node 069 * in the source tree. 070 * 071 * @return the current context node in the source tree. 072 */ 073 Node getCurrentNode(); 074 075 /** 076 * This method retrieves the xsl:template 077 * that is in effect, which may be a matched template 078 * or a named template. 079 * 080 * <p>Please note that the ElemTemplate returned may 081 * be a default template, and thus may not have a template 082 * defined in the stylesheet.</p> 083 * 084 * @return the xsl:template that is in effect 085 */ 086 ElemTemplate getCurrentTemplate(); 087 088 /** 089 * This method retrieves the xsl:template 090 * that was matched. Note that this may not be 091 * the same thing as the current template (which 092 * may be from getCurrentElement()), since a named 093 * template may be in effect. 094 * 095 * <p>Please note that the ElemTemplate returned may 096 * be a default template, and thus may not have a template 097 * defined in the stylesheet.</p> 098 * 099 * @return the xsl:template that was matched. 100 */ 101 ElemTemplate getMatchedTemplate(); 102 103 /** 104 * Retrieves the node in the source tree that matched 105 * the template obtained via getMatchedTemplate(). 106 * 107 * @return the node in the source tree that matched 108 * the template obtained via getMatchedTemplate(). 109 */ 110 Node getMatchedNode(); 111 112 /** 113 * Get the current context node list. 114 * 115 * @return the current context node list. 116 */ 117 NodeIterator getContextNodeList(); 118 119 /** 120 * Get the TrAX Transformer object in effect. 121 * 122 * @return the TrAX Transformer object in effect. 123 */ 124 Transformer getTransformer(); 125 126 127 128 }