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: ToSAXHandler.java 468654 2006-10-28 07:09:23Z minchau $ 209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xml.serializer; 229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.util.Vector; 249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.Attributes; 269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.ContentHandler; 279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.ErrorHandler; 289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.SAXException; 299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.SAXParseException; 309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.xml.sax.ext.LexicalHandler; 319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/** 339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This class is used to provide a base behavior to be inherited 349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * by other To...SAXHandler serializers. 359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This class is not a public API. 379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @xsl.usage internal 399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic abstract class ToSAXHandler extends SerializerBase 419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{ 429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public ToSAXHandler() 439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public ToSAXHandler( 479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ContentHandler hdlr, 489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson LexicalHandler lex, 499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String encoding) 509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson setContentHandler(hdlr); 529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson setLexHandler(lex); 539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson setEncoding(encoding); 549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public ToSAXHandler(ContentHandler handler, String encoding) 569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson setContentHandler(handler); 589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson setEncoding(encoding); 599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Underlying SAX handler. Taken from XSLTC 639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected ContentHandler m_saxHandler; 659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Underlying LexicalHandler. Taken from XSLTC 689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected LexicalHandler m_lexHandler; 709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * A startPrefixMapping() call on a ToSAXHandler will pass that call 739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * on to the wrapped ContentHandler, but should we also mirror these calls 749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * with matching attributes, if so this field is true. 759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * For example if this field is true then a call such as 769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * startPrefixMapping("prefix1","uri1") will also cause the additional 779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * internally generated attribute xmlns:prefix1="uri1" to be effectively added 789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to the attributes passed to the wrapped ContentHandler. 799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private boolean m_shouldGenerateNSAttribute = true; 819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** If this is true, then the content handler wrapped by this 839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * serializer implements the TransformState interface which 849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * will give the content handler access to the state of 859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * the transform. */ 869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected TransformStateSetter m_state = null; 879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass callback to the SAX Handler 909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected void startDocumentInternal() throws SAXException 929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_needToCallStartDocument) 949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson super.startDocumentInternal(); 969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_saxHandler.startDocument(); 989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_needToCallStartDocument = false; 999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Do nothing. 1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ext.LexicalHandler#startDTD(String, String, String) 1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startDTD(String arg0, String arg1, String arg2) 1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // do nothing for now 1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Receive notification of character data. 1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param characters The string of characters to process. 1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws org.xml.sax.SAXException 1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#characters(String) 1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void characters(String characters) throws SAXException 1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson final int len = characters.length(); 1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (len > m_charsBuff.length) 1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_charsBuff = new char[len*2 + 1]; 1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson characters.getChars(0,len, m_charsBuff, 0); 1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson characters(m_charsBuff, 0, len); 1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Receive notification of a comment. 1339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedLexicalHandler#comment(String) 1359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void comment(String comment) throws SAXException 1379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson flushPending(); 1399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Ignore if a lexical handler has not been set 1419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_lexHandler != null) 1429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson final int len = comment.length(); 1449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (len > m_charsBuff.length) 1459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_charsBuff = new char[len*2 + 1]; 1479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson comment.getChars(0,len, m_charsBuff, 0); 1499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexHandler.comment(m_charsBuff, 0, len); 1509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // time to fire off comment event 1519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_tracer != null) 1529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson super.fireCommentEvent(m_charsBuff, 0, len); 1539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Do nothing as this is an abstract class. All subclasses will need to 1599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * define their behavior if it is different. 1609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#processingInstruction(String, String) 1619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void processingInstruction(String target, String data) 1639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 1649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Redefined in SAXXMLOutput 1669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected void closeStartTag() throws SAXException 1699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson protected void closeCDATA() throws SAXException 1739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Redefined in SAXXMLOutput 1759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 1789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Receive notification of the beginning of an element, although this is a 1799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * SAX method additional namespace or attribute information can occur before 1809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * or after this call, that is associated with this element. 1819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws org.xml.sax.SAXException Any SAX exception, possibly 1839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * wrapping another exception. 1849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#startElement 1859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#endElement 1869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.AttributeList 1879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws org.xml.sax.SAXException 1899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 1909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ContentHandler#startElement(String,String,String,Attributes) 1919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startElement( 1939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String arg0, 1949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String arg1, 1959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String arg2, 1969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson Attributes arg3) 1979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 1989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_state != null) { 2009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_state.resetState(getTransformer()); 2019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // fire off the start element event 2049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_tracer != null) 2059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson super.fireStartElem(arg2); 2069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Sets the LexicalHandler. 2109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param _lexHandler The LexicalHandler to set 2119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setLexHandler(LexicalHandler _lexHandler) 2139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.m_lexHandler = _lexHandler; 2159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Sets the SAX ContentHandler. 2199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param _saxHandler The ContentHandler to set 2209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setContentHandler(ContentHandler _saxHandler) 2229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.m_saxHandler = _saxHandler; 2249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_lexHandler == null && _saxHandler instanceof LexicalHandler) 2259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // we are not overwriting an existing LexicalHandler, and _saxHandler 2279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // is also implements LexicalHandler, so lets use it 2289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_lexHandler = (LexicalHandler) _saxHandler; 2299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Does nothing. The setting of CDATA section elements has an impact on 2349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * stream serializers. 2359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see SerializationHandler#setCdataSectionElements(java.util.Vector) 2369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setCdataSectionElements(Vector URI_and_localNames) 2389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // do nothing 2409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** Set whether or not namespace declarations (e.g. 2439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * xmlns:foo) should appear as attributes of 2449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * elements 2459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param doOutputNSAttr whether or not namespace declarations 2469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * should appear as attributes 2479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setShouldOutputNSAttr(boolean doOutputNSAttr) 2499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_shouldGenerateNSAttribute = doOutputNSAttr; 2519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Returns true if namespace declarations from calls such as 2559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * startPrefixMapping("prefix1","uri1") should 2569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * also be mirrored with self generated additional attributes of elements 2579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * that declare the namespace, for example the attribute xmlns:prefix1="uri1" 2589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson boolean getShouldOutputNSAttr() 2609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return m_shouldGenerateNSAttribute; 2629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This method flushes any pending events, which can be startDocument() 2669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * closing the opening tag of an element, or closing an open CDATA section. 2679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void flushPending() throws SAXException 2699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_needToCallStartDocument) 2729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson startDocumentInternal(); 2749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_needToCallStartDocument = false; 2759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_elemContext.m_startTagOpen) 2789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson closeStartTag(); 2809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_elemContext.m_startTagOpen = false; 2819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_cdataTagOpen) 2849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 2859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson closeCDATA(); 2869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_cdataTagOpen = false; 2879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 2909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 2929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Pass in a reference to a TransformState object, which 2939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * can be used during SAX ContentHandler events to obtain 2949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * information about he state of the transformation. This 2959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * method will be called before each startDocument event. 2969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 2979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param ts A reference to a TransformState object 2989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void setTransformState(TransformStateSetter ts) { 3009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.m_state = ts; 3019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Receives notification that an element starts, but attributes are not 3059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * fully known yet. 3069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param uri the URI of the namespace of the element (optional) 3089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param localName the element name, but without prefix (optional) 3099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param qName the element name, with prefix, if any (required) 3109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#startElement(String, String, String) 3129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startElement(String uri, String localName, String qName) 3149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException { 3159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_state != null) { 3179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_state.resetState(getTransformer()); 3189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // fire off the start element event 3219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_tracer != null) 3229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson super.fireStartElem(qName); 3239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * An element starts, but attributes are not fully known yet. 3279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 3289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param qName the element name, with prefix (if any). 3299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see ExtendedContentHandler#startElement(String) 3319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void startElement(String qName) throws SAXException { 3339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_state != null) { 3349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_state.resetState(getTransformer()); 3359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // fire off the start element event 3379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_tracer != null) 3389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson super.fireStartElem(qName); 3399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This method gets the node's value as a String and uses that String as if 3439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * it were an input character notification. 3449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @param node the Node to serialize 3459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @throws org.xml.sax.SAXException 3469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void characters(org.w3c.dom.Node node) 3489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws org.xml.sax.SAXException 3499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // remember the current node 3519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_state != null) 3529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 3539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_state.setCurrentNode(node); 3549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // Get the node's value as a String and use that String as if 3579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson // it were an input character notification. 3589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson String data = node.getNodeValue(); 3599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (data != null) { 3609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.characters(data); 3619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ErrorHandler#fatalError(SAXParseException) 3669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void fatalError(SAXParseException exc) throws SAXException { 3689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson super.fatalError(exc); 3699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson m_needToCallStartDocument = false; 3719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_saxHandler instanceof ErrorHandler) { 3739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ((ErrorHandler)m_saxHandler).fatalError(exc); 3749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ErrorHandler#error(SAXParseException) 3799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void error(SAXParseException exc) throws SAXException { 3819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson super.error(exc); 3829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_saxHandler instanceof ErrorHandler) 3849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ((ErrorHandler)m_saxHandler).error(exc); 3859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 3899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.xml.sax.ErrorHandler#warning(SAXParseException) 3909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 3919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void warning(SAXParseException exc) throws SAXException { 3929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson super.warning(exc); 3939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (m_saxHandler instanceof ErrorHandler) 3959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ((ErrorHandler)m_saxHandler).warning(exc); 3969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 3979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 3999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Try's to reset the super class and reset this class for 4019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * re-use, so that you don't need to create a new serializer 4029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * (mostly for performance reasons). 4039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 4049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @return true if the class was successfuly reset. 4059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see Serializer#reset() 4069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public boolean reset() 4089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson boolean wasReset = false; 4109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (super.reset()) 4119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson resetToSAXHandler(); 4139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson wasReset = true; 4149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return wasReset; 4169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Reset all of the fields owned by ToSAXHandler class 4209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * 4219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson private void resetToSAXHandler() 4239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.m_lexHandler = null; 4259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.m_saxHandler = null; 4269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.m_state = null; 4279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson this.m_shouldGenerateNSAttribute = false; 4289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 4309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson /** 4319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Add a unique attribute 4329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 4339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson public void addUniqueAttribute(String qName, String value, int flags) 4349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson throws SAXException 4359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 4369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson addAttribute(qName, value); 4379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 4389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson} 439