API Overview API Index Package Overview Direct link to this page
JDK 1.6
  org.w3c.dom.ls. LSParserFilter View Javadoc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172

/*
 * Copyright (c) 2004 World Wide Web Consortium,
 *
 * (Massachusetts Institute of Technology, European Research Consortium for
 * Informatics and Mathematics, Keio University). All Rights Reserved. This
 * work is distributed under the W3C(r) Software License [1] in the hope that
 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
 */

package org.w3c.dom.ls;

import org.w3c.dom.Node;
import org.w3c.dom.Element;

/**
 *  <code>LSParserFilter</code>s provide applications the ability to examine 
 * nodes as they are being constructed while parsing. As each node is 
 * examined, it may be modified or removed, or the entire parse may be 
 * terminated early. 
 * <p> At the time any of the filter methods are called by the parser, the 
 * owner Document and DOMImplementation objects exist and are accessible. 
 * The document element is never passed to the <code>LSParserFilter</code> 
 * methods, i.e. it is not possible to filter out the document element. 
 * <code>Document</code>, <code>DocumentType</code>, <code>Notation</code>, 
 * <code>Entity</code>, and <code>Attr</code> nodes are never passed to the 
 * <code>acceptNode</code> method on the filter. The child nodes of an 
 * <code>EntityReference</code> node are passed to the filter if the 
 * parameter "<a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-entities'>
 * entities</a>" is set to <code>false</code>. Note that, as described by the parameter "<a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-entities'>
 * entities</a>", unexpanded entity reference nodes are never discarded and are always 
 * passed to the filter. 
 * <p> All validity checking while parsing a document occurs on the source 
 * document as it appears on the input stream, not on the DOM document as it 
 * is built in memory. With filters, the document in memory may be a subset 
 * of the document on the stream, and its validity may have been affected by 
 * the filtering. 
 * <p> All default attributes must be present on elements when the elements 
 * are passed to the filter methods. All other default content must be 
 * passed to the filter methods. 
 * <p> DOM applications must not raise exceptions in a filter. The effect of 
 * throwing exceptions from a filter is DOM implementation dependent. 
 * <p>See also the <a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load
and Save Specification</a>.
 */
public interface LSParserFilter {
    // Constants returned by startElement and acceptNode
    /**
     * Accept the node.
     */
    public static final short FILTER_ACCEPT             = 1;
    /**
     * Reject the node and its children.
     */
    public static final short FILTER_REJECT             = 2;
    /**
     * Skip this single node. The children of this node will still be 
     * considered. 
     */
    public static final short FILTER_SKIP               = 3;
    /**
     *  Interrupt the normal processing of the document. 
     */
    public static final short FILTER_INTERRUPT          = 4;

    /**
     *  The parser will call this method after each <code>Element</code> start 
     * tag has been scanned, but before the remainder of the 
     * <code>Element</code> is processed. The intent is to allow the 
     * element, including any children, to be efficiently skipped. Note that 
     * only element nodes are passed to the <code>startElement</code> 
     * function. 
     * <br>The element node passed to <code>startElement</code> for filtering 
     * will include all of the Element's attributes, but none of the 
     * children nodes. The Element may not yet be in place in the document 
     * being constructed (it may not have a parent node.) 
     * <br>A <code>startElement</code> filter function may access or change 
     * the attributes for the Element. Changing Namespace declarations will 
     * have no effect on namespace resolution by the parser.
     * <br>For efficiency, the Element node passed to the filter may not be 
     * the same one as is actually placed in the tree if the node is 
     * accepted. And the actual node (node object identity) may be reused 
     * during the process of reading in and filtering a document.
     * @param elementArg The newly encountered element. At the time this 
     *   method is called, the element is incomplete - it will have its 
     *   attributes, but no children. 
     * @return 
     * <ul>
     * <li> <code>FILTER_ACCEPT</code> if the <code>Element</code> should 
     *   be included in the DOM document being built. 
     * </li>
     * <li> 
     *   <code>FILTER_REJECT</code> if the <code>Element</code> and all of 
     *   its children should be rejected. 
     * </li>
     * <li> <code>FILTER_SKIP</code> if the 
     *   <code>Element</code> should be skipped. All of its children are 
     *   inserted in place of the skipped <code>Element</code> node. 
     * </li>
     * <li> 
     *   <code>FILTER_INTERRUPT</code> if the filter wants to stop the 
     *   processing of the document. Interrupting the processing of the 
     *   document does no longer guarantee that the resulting DOM tree is 
     *   XML well-formed. The <code>Element</code> is rejected. 
     * </li>
     * </ul> Returning 
     *   any other values will result in unspecified behavior. 
     */
    public short startElement(Element elementArg);

    /**
     * This method will be called by the parser at the completion of the 
     * parsing of each node. The node and all of its descendants will exist 
     * and be complete. The parent node will also exist, although it may be 
     * incomplete, i.e. it may have additional children that have not yet 
     * been parsed. Attribute nodes are never passed to this function.
     * <br>From within this method, the new node may be freely modified - 
     * children may be added or removed, text nodes modified, etc. The state 
     * of the rest of the document outside this node is not defined, and the 
     * affect of any attempt to navigate to, or to modify any other part of 
     * the document is undefined. 
     * <br>For validating parsers, the checks are made on the original 
     * document, before any modification by the filter. No validity checks 
     * are made on any document modifications made by the filter.
     * <br>If this new node is rejected, the parser might reuse the new node 
     * and any of its descendants.
     * @param nodeArg The newly constructed element. At the time this method 
     *   is called, the element is complete - it has all of its children 
     *   (and their children, recursively) and attributes, and is attached 
     *   as a child to its parent. 
     * @return 
     * <ul>
     * <li> <code>FILTER_ACCEPT</code> if this <code>Node</code> should 
     *   be included in the DOM document being built. 
     * </li>
     * <li> 
     *   <code>FILTER_REJECT</code> if the <code>Node</code> and all of its 
     *   children should be rejected. 
     * </li>
     * <li> <code>FILTER_SKIP</code> if the 
     *   <code>Node</code> should be skipped and the <code>Node</code> 
     *   should be replaced by all the children of the <code>Node</code>. 
     * </li>
     * <li> 
     *   <code>FILTER_INTERRUPT</code> if the filter wants to stop the 
     *   processing of the document. Interrupting the processing of the 
     *   document does no longer guarantee that the resulting DOM tree is 
     *   XML well-formed. The <code>Node</code> is accepted and will be the 
     *   last completely parsed node. 
     * </li>
     * </ul>
     */
    public short acceptNode(Node nodeArg);

    /**
     *  Tells the <code>LSParser</code> what types of nodes to show to the 
     * method <code>LSParserFilter.acceptNode</code>. If a node is not shown 
     * to the filter using this attribute, it is automatically included in 
     * the DOM document being built. See <code>NodeFilter</code> for 
     * definition of the constants. The constants <code>SHOW_ATTRIBUTE</code>
     * , <code>SHOW_DOCUMENT</code>, <code>SHOW_DOCUMENT_TYPE</code>, 
     * <code>SHOW_NOTATION</code>, <code>SHOW_ENTITY</code>, and 
     * <code>SHOW_DOCUMENT_FRAGMENT</code> are meaningless here. Those nodes 
     * will never be passed to <code>LSParserFilter.acceptNode</code>. 
     * <br> The constants used here are defined in [<a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>DOM Level 2 Traversal and      Range</a>]
     * . 
     */
    public int getWhatToShow();

}

Generated By: JavaOnTracks Doclet 0.1.4     ©Thibaut Colar