| Tag.java |
1 /**
2 * Distribution License:
3 * JSword is free software; you can redistribute it and/or modify it under
4 * the terms of the GNU Lesser General Public License, version 2.1 as published by
5 * the Free Software Foundation. This program is distributed in the hope
6 * that it will be useful, but WITHOUT ANY WARRANTY; without even the
7 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8 * See the GNU Lesser General Public License for more details.
9 *
10 * The License is available on the internet at:
11 * http://www.gnu.org/copyleft/lgpl.html
12 * or by writing to:
13 * Free Software Foundation, Inc.
14 * 59 Temple Place - Suite 330
15 * Boston, MA 02111-1307, USA
16 *
17 * Copyright: 2005 - 2012
18 * The copyright to this program is held by it's authors.
19 *
20 * ID: $Id: Tag.java 2221 2012-01-25 21:32:57Z dmsmith $
21 */
22 package org.crosswire.jsword.book.filter.thml;
23
24 import org.crosswire.jsword.book.Book;
25 import org.crosswire.jsword.passage.Key;
26 import org.jdom.Element;
27 import org.xml.sax.Attributes;
28
29 /**
30 * THML Tag interface - there should be one implementation of this class for
31 * each THML tag.
32 *
33 * @see gnu.lgpl.License for license details.<br>
34 * The copyright to this program is held by it's authors.
35 * @author Joe Walker [joe at eireneh dot com]
36 */
37 public interface Tag {
38 /**
39 * What element does this class represent. For example the Tag that
40 * represents the font element would return the string "font".
41 * @return the element's tag name
42 */
43 String getTagName();
44
45 /**
46 * Make changes to the specified OSIS element given the attributes passed in
47 * the source document.
48 *
49 * @param ele
50 * The OSIS element to use as a parent
51 * @param attrs
52 * The source document attributes.
53 * @return the element to which content is attached
54 */
55 Element processTag(Book book, Key key, Element ele, Attributes attrs);
56
57 /**
58 * Do additional processing of the tag after the element has been created.
59 *
60 * @param ele
61 * the created element to process
62 */
63 void processContent(Book book, Key key, Element ele);
64 }
65