001 /* 002 // $Id: //open/util/resgen/src/org/eigenbase/xom/DOMWrapper.java#4 $ 003 // Package org.eigenbase.xom is an XML Object Mapper. 004 // Copyright (C) 2005-2005 The Eigenbase Project 005 // Copyright (C) 2005-2005 Disruptive Tech 006 // Copyright (C) 2005-2005 LucidEra, Inc. 007 // Portions Copyright (C) 2001-2005 Kana Software, Inc. and others. 008 // 009 // This library is free software; you can redistribute it and/or modify it 010 // under the terms of the GNU Lesser General Public License as published by the 011 // Free Software Foundation; either version 2 of the License, or (at your 012 // option) any later version approved by The Eigenbase Project. 013 // 014 // This library is distributed in the hope that it will be useful, 015 // but WITHOUT ANY WARRANTY; without even the implied warranty of 016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 017 // GNU Lesser General Public License for more details. 018 // 019 // You should have received a copy of the GNU Lesser General Public License 020 // along with this library; if not, write to the Free Software 021 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 022 // 023 // dsommerfield, 16 July, 2001 024 */ 025 026 package org.eigenbase.xom; 027 028 /** 029 * DOMWrapper implements a Wrapper around the Element class from any DOM-style 030 * XML parser. The wrapper is used to isolate ElementParser, ElementDef, and 031 * all ElementDef subclasses from the specifics of the underlying XML 032 * parser. 033 */ 034 public interface DOMWrapper { 035 036 /** 037 * UNKNOWN is used for DOM Element types unsupported by the 038 * wrapper. 039 */ 040 public static final int UNKNOWN = 0; 041 042 /** 043 * FREETEXT is a type of DOM Element representing a piece of text (but not 044 * a CDATA section). For example, <code>Some text</code>. FREETEXT 045 * elements always have a tag name of NULL and have no children. It 046 * maps to a {@link TextDef}. 047 **/ 048 public static final int FREETEXT = 1; 049 050 /** 051 * ELEMENT is a type of DOM Element representing a named tag, possibly 052 * containing attributes, child elements, and text. It maps to a {@link 053 * ElementDef} (or a generated class derived from it), or a {@link 054 * GenericDef}. 055 **/ 056 public static final int ELEMENT = 2; 057 058 /** 059 * COMMENT is a type of DOM Element representing an XML comment. It maps 060 * to a {@link CommentDef}. 061 **/ 062 public static final int COMMENT = 3; 063 064 /** 065 * CDATA is a type of DOM Element representing a piece of text embedded in 066 * a CDATA section, for example, 067 * <code><![CDATA[Some text]]></code>. 068 * CDATA elements always have a tag name of NULL and have no children. It 069 * maps to a {@link CdataDef}. 070 **/ 071 public static final int CDATA = 4; 072 073 /** 074 * Returns the type of this element/node. DOMWrapper supports only four 075 * possibilities: {@link #FREETEXT}, {@link #ELEMENT}, {@link #COMMENT}, 076 * {@link #CDATA}. 077 */ 078 public int getType(); 079 080 /** 081 * Returns the tag name of this element, or null for TEXT elements. 082 */ 083 public String getTagName(); 084 085 /** 086 * Returns the value of the attribute with the given attrName. If the 087 * attribute is not defined, this method returns null. 088 */ 089 public String getAttribute(String attrName); 090 091 /** 092 * Returns a list of attribute names. 093 **/ 094 public String[] getAttributeNames(); 095 096 /** 097 * Returns a flattened representation of the text inside thie element. 098 * For a TEXT element, this returns the text itself. For an ELEMENT 099 * element, this returns all pieces of text within the element, 100 * with all markup removed. 101 */ 102 public String getText(); 103 104 /** 105 * Returns this node serialized as XML. 106 **/ 107 public String toXML(); 108 109 /** 110 * Returns all children of this element, including TEXT elements, as 111 * an array of DOMWrappers. 112 */ 113 public DOMWrapper[] getChildren(); 114 115 /** 116 * Returns all element children of this element as an array of 117 * DOMWrappers. 118 */ 119 public DOMWrapper[] getElementChildren(); 120 121 /** 122 * Returns the location of this element. 123 */ 124 public Location getLocation(); 125 } 126 127 128 // End DOMWrapper.java