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: ToTextSAXHandler.java 475978 2006-11-16 23:31:20Z minchau $ 020 */ 021 package org.apache.xml.serializer; 022 023 import java.io.IOException; 024 import java.io.OutputStream; 025 import java.io.Writer; 026 import java.util.Properties; 027 028 import org.w3c.dom.Node; 029 import org.xml.sax.Attributes; 030 import org.xml.sax.ContentHandler; 031 import org.xml.sax.Locator; 032 import org.xml.sax.SAXException; 033 import org.xml.sax.ext.LexicalHandler; 034 035 /** 036 * This class converts SAX-like event to SAX events for 037 * xsl:output method "text". 038 * 039 * This class is only to be used internally. This class is not a public API. 040 * 041 * @deprecated As of Xalan 2.7.1, replaced by the use of {@link ToXMLSAXHandler}. 042 * 043 * @xsl.usage internal 044 */ 045 public final class ToTextSAXHandler extends ToSAXHandler 046 { 047 /** 048 * From XSLTC 049 * @see ExtendedContentHandler#endElement(String) 050 */ 051 public void endElement(String elemName) throws SAXException 052 { 053 if (m_tracer != null) 054 super.fireEndElem(elemName); 055 } 056 057 /** 058 * @see org.xml.sax.ContentHandler#endElement(String, String, String) 059 */ 060 public void endElement(String arg0, String arg1, String arg2) 061 throws SAXException 062 { 063 if (m_tracer != null) 064 super.fireEndElem(arg2); 065 } 066 067 public ToTextSAXHandler(ContentHandler hdlr, LexicalHandler lex, String encoding) 068 { 069 super(hdlr, lex, encoding); 070 } 071 072 /** 073 * From XSLTC 074 */ 075 public ToTextSAXHandler(ContentHandler handler, String encoding) 076 { 077 super(handler,encoding); 078 } 079 080 public void comment(char ch[], int start, int length) 081 throws org.xml.sax.SAXException 082 { 083 if (m_tracer != null) 084 super.fireCommentEvent(ch, start, length); 085 } 086 087 public void comment(String data) throws org.xml.sax.SAXException 088 { 089 final int length = data.length(); 090 if (length > m_charsBuff.length) 091 { 092 m_charsBuff = new char[length*2 + 1]; 093 } 094 data.getChars(0, length, m_charsBuff, 0); 095 comment(m_charsBuff, 0, length); 096 } 097 098 /** 099 * @see Serializer#getOutputFormat() 100 */ 101 public Properties getOutputFormat() 102 { 103 return null; 104 } 105 106 /** 107 * @see Serializer#getOutputStream() 108 */ 109 public OutputStream getOutputStream() 110 { 111 return null; 112 } 113 114 /** 115 * @see Serializer#getWriter() 116 */ 117 public Writer getWriter() 118 { 119 return null; 120 } 121 122 /** 123 * Does nothing because 124 * the indent attribute is ignored for text output. 125 * 126 */ 127 public void indent(int n) throws SAXException 128 { 129 } 130 131 /** 132 * @see Serializer#reset() 133 */ 134 public boolean reset() 135 { 136 return false; 137 } 138 139 /** 140 * @see DOMSerializer#serialize(Node) 141 */ 142 public void serialize(Node node) throws IOException 143 { 144 } 145 146 /** 147 * @see SerializationHandler#setEscaping(boolean) 148 */ 149 public boolean setEscaping(boolean escape) 150 { 151 return false; 152 } 153 154 /** 155 * @see SerializationHandler#setIndent(boolean) 156 */ 157 public void setIndent(boolean indent) 158 { 159 } 160 161 /** 162 * @see Serializer#setOutputFormat(Properties) 163 */ 164 public void setOutputFormat(Properties format) 165 { 166 } 167 168 /** 169 * @see Serializer#setOutputStream(OutputStream) 170 */ 171 public void setOutputStream(OutputStream output) 172 { 173 } 174 175 /** 176 * @see Serializer#setWriter(Writer) 177 */ 178 public void setWriter(Writer writer) 179 { 180 } 181 182 /** 183 * @see ExtendedContentHandler#addAttribute(String, String, String, String, String) 184 */ 185 public void addAttribute( 186 String uri, 187 String localName, 188 String rawName, 189 String type, 190 String value, 191 boolean XSLAttribute) 192 { 193 } 194 195 /** 196 * @see org.xml.sax.ext.DeclHandler#attributeDecl(String, String, String, String, String) 197 */ 198 public void attributeDecl( 199 String arg0, 200 String arg1, 201 String arg2, 202 String arg3, 203 String arg4) 204 throws SAXException 205 { 206 } 207 208 /** 209 * @see org.xml.sax.ext.DeclHandler#elementDecl(String, String) 210 */ 211 public void elementDecl(String arg0, String arg1) throws SAXException 212 { 213 } 214 215 /** 216 * @see org.xml.sax.ext.DeclHandler#externalEntityDecl(String, String, String) 217 */ 218 public void externalEntityDecl(String arg0, String arg1, String arg2) 219 throws SAXException 220 { 221 } 222 223 /** 224 * @see org.xml.sax.ext.DeclHandler#internalEntityDecl(String, String) 225 */ 226 public void internalEntityDecl(String arg0, String arg1) 227 throws SAXException 228 { 229 } 230 231 /** 232 * @see org.xml.sax.ContentHandler#endPrefixMapping(String) 233 */ 234 public void endPrefixMapping(String arg0) throws SAXException 235 { 236 } 237 238 /** 239 * @see org.xml.sax.ContentHandler#ignorableWhitespace(char[], int, int) 240 */ 241 public void ignorableWhitespace(char[] arg0, int arg1, int arg2) 242 throws SAXException 243 { 244 } 245 246 /** 247 * From XSLTC 248 * @see org.xml.sax.ContentHandler#processingInstruction(String, String) 249 */ 250 public void processingInstruction(String arg0, String arg1) 251 throws SAXException 252 { 253 if (m_tracer != null) 254 super.fireEscapingEvent(arg0, arg1); 255 } 256 257 /** 258 * @see org.xml.sax.ContentHandler#setDocumentLocator(Locator) 259 */ 260 public void setDocumentLocator(Locator arg0) 261 { 262 } 263 264 /** 265 * @see org.xml.sax.ContentHandler#skippedEntity(String) 266 */ 267 public void skippedEntity(String arg0) throws SAXException 268 { 269 } 270 271 /** 272 * @see org.xml.sax.ContentHandler#startElement(String, String, String, Attributes) 273 */ 274 public void startElement( 275 String arg0, 276 String arg1, 277 String arg2, 278 Attributes arg3) 279 throws SAXException 280 { 281 flushPending(); 282 super.startElement(arg0, arg1, arg2, arg3); 283 } 284 285 /** 286 * @see org.xml.sax.ext.LexicalHandler#endCDATA() 287 */ 288 public void endCDATA() throws SAXException 289 { 290 } 291 292 /** 293 * @see org.xml.sax.ext.LexicalHandler#endDTD() 294 */ 295 public void endDTD() throws SAXException 296 { 297 } 298 299 /** 300 * @see org.xml.sax.ext.LexicalHandler#startCDATA() 301 */ 302 public void startCDATA() throws SAXException 303 { 304 } 305 306 307 /** 308 * @see org.xml.sax.ext.LexicalHandler#startEntity(String) 309 */ 310 public void startEntity(String arg0) throws SAXException 311 { 312 } 313 314 315 /** 316 * From XSLTC 317 * @see ExtendedContentHandler#startElement(String) 318 */ 319 public void startElement( 320 String elementNamespaceURI, 321 String elementLocalName, 322 String elementName) throws SAXException 323 { 324 super.startElement(elementNamespaceURI, elementLocalName, elementName); 325 } 326 327 public void startElement( 328 String elementName) throws SAXException 329 { 330 super.startElement(elementName); 331 } 332 333 334 /** 335 * From XSLTC 336 * @see org.xml.sax.ContentHandler#endDocument() 337 */ 338 public void endDocument() throws SAXException { 339 340 flushPending(); 341 m_saxHandler.endDocument(); 342 343 if (m_tracer != null) 344 super.fireEndDoc(); 345 } 346 347 /** 348 * 349 * @see ExtendedContentHandler#characters(String) 350 */ 351 public void characters(String characters) 352 throws SAXException 353 { 354 final int length = characters.length(); 355 if (length > m_charsBuff.length) 356 { 357 m_charsBuff = new char[length*2 + 1]; 358 } 359 characters.getChars(0, length, m_charsBuff, 0); 360 361 m_saxHandler.characters(m_charsBuff, 0, length); 362 363 } 364 /** 365 * @see org.xml.sax.ContentHandler#characters(char[], int, int) 366 */ 367 public void characters(char[] characters, int offset, int length) 368 throws SAXException 369 { 370 371 m_saxHandler.characters(characters, offset, length); 372 373 // time to fire off characters event 374 if (m_tracer != null) 375 super.fireCharEvent(characters, offset, length); 376 } 377 378 /** 379 * From XSLTC 380 */ 381 public void addAttribute(String name, String value) 382 { 383 // do nothing 384 } 385 386 387 public boolean startPrefixMapping( 388 String prefix, 389 String uri, 390 boolean shouldFlush) 391 throws SAXException 392 { 393 // no namespace support for HTML 394 return false; 395 } 396 397 398 public void startPrefixMapping(String prefix, String uri) 399 throws org.xml.sax.SAXException 400 { 401 // no namespace support for HTML 402 } 403 404 405 public void namespaceAfterStartElement( 406 final String prefix, 407 final String uri) 408 throws SAXException 409 { 410 // no namespace support for HTML 411 } 412 413 }