KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > dom > DOM3


1 /*
2  * Copyright 1999-2002,2004,2005 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package dom;
18
19 import org.w3c.dom.DOMConfiguration JavaDoc;
20 import org.w3c.dom.DOMError JavaDoc;
21 import org.w3c.dom.DOMErrorHandler JavaDoc;
22 import org.w3c.dom.Document JavaDoc;
23 import org.w3c.dom.Element JavaDoc;
24 import org.w3c.dom.Node JavaDoc;
25 import org.w3c.dom.bootstrap.DOMImplementationRegistry JavaDoc;
26 import org.w3c.dom.ls.DOMImplementationLS JavaDoc;
27 import org.w3c.dom.ls.LSOutput JavaDoc;
28 import org.w3c.dom.ls.LSParser JavaDoc;
29 import org.w3c.dom.ls.LSParserFilter JavaDoc;
30 import org.w3c.dom.ls.LSSerializer JavaDoc;
31 import org.w3c.dom.traversal.NodeFilter;
32
33 /**
34  * This sample program illustrates how to use DOM L3
35  * DOMBuilder, DOMBuilderFilter DOMWriter and other DOM L3 functionality
36  * to preparse, revalidate and safe document.
37  */

38 public class DOM3 implements DOMErrorHandler JavaDoc, LSParserFilter JavaDoc {
39
40     /** Default namespaces support (true). */
41     protected static final boolean DEFAULT_NAMESPACES = true;
42
43     /** Default validation support (false). */
44     protected static final boolean DEFAULT_VALIDATION = false;
45
46     /** Default Schema validation support (false). */
47     protected static final boolean DEFAULT_SCHEMA_VALIDATION = false;
48
49     static LSParser JavaDoc builder;
50     public static void main( String JavaDoc[] argv) {
51
52         if (argv.length == 0) {
53             printUsage();
54             System.exit(1);
55         }
56
57
58         try {
59
60             // get DOM Implementation using DOM Registry
61
System.setProperty(DOMImplementationRegistry.PROPERTY,"org.apache.xerces.dom.DOMXSImplementationSourceImpl");
62             DOMImplementationRegistry JavaDoc registry =
63                 DOMImplementationRegistry.newInstance();
64
65             DOMImplementationLS JavaDoc impl =
66                 (DOMImplementationLS JavaDoc)registry.getDOMImplementation("LS");
67
68             // create DOMBuilder
69
builder = impl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null);
70             
71             DOMConfiguration JavaDoc config = builder.getDomConfig();
72
73             // create Error Handler
74
DOMErrorHandler JavaDoc errorHandler = new DOM3();
75             
76             // create filter
77
LSParserFilter JavaDoc filter = new DOM3();
78             
79             builder.setFilter(filter);
80
81             // set error handler
82
config.setParameter("error-handler", errorHandler);
83
84
85             // set validation feature
86
//config.setParameter("validate", Boolean.FALSE);
87
config.setParameter("validate",Boolean.TRUE);
88             
89             // set schema language
90
config.setParameter("schema-type", "http://www.w3.org/2001/XMLSchema");
91             //config.setParameter("psvi",Boolean.TRUE);
92
//config.setParameter("schema-type","http://www.w3.org/TR/REC-xml");
93

94             // set schema location
95
config.setParameter("schema-location","personal.xsd");
96             
97             // parse document
98
System.out.println("Parsing "+argv[0]+"...");
99             Document JavaDoc doc = builder.parseURI(argv[0]);
100
101             // set error handler on the Document
102
config = doc.getDomConfig();
103             
104             config.setParameter("error-handler", errorHandler);
105
106             // set validation feature
107
config.setParameter("validate", Boolean.TRUE);
108             config.setParameter("schema-type", "http://www.w3.org/2001/XMLSchema");
109             //config.setParameter("schema-type","http://www.w3.org/TR/REC-xml");
110
config.setParameter("schema-location","data/personal.xsd");
111             
112             // remove comments from the document
113
config.setParameter("comments", Boolean.FALSE);
114
115             System.out.println("Normalizing document... ");
116             doc.normalizeDocument();
117
118
119             // create DOMWriter
120
LSSerializer JavaDoc domWriter = impl.createLSSerializer();
121             
122             System.out.println("Serializing document... ");
123             config = domWriter.getDomConfig();
124             config.setParameter("xml-declaration", Boolean.FALSE);
125             //config.setParameter("validate",errorHandler);
126

127             // serialize document to standard output
128
//domWriter.writeNode(System.out, doc);
129
LSOutput JavaDoc dOut = impl.createLSOutput();
130             dOut.setByteStream(System.out);
131             domWriter.write(doc,dOut);
132
133         } catch ( Exception JavaDoc ex ) {
134             ex.printStackTrace();
135         }
136     }
137
138
139     private static void printUsage() {
140
141         System.err.println("usage: java dom.DOM3 uri ...");
142         System.err.println();
143         System.err.println("NOTE: You can only validate DOM tree against XML Schemas.");
144
145     } // printUsage()
146

147
148     public boolean handleError(DOMError JavaDoc error){
149         short severity = error.getSeverity();
150         if (severity == DOMError.SEVERITY_ERROR) {
151             System.out.println("[dom3-error]: "+error.getMessage());
152         }
153
154         if (severity == DOMError.SEVERITY_WARNING) {
155             System.out.println("[dom3-warning]: "+error.getMessage());
156         }
157         return true;
158
159     }
160     /**
161      * @see org.w3c.dom.ls.LSParserFilter#acceptNode(Node)
162      */

163     public short acceptNode(Node JavaDoc enode) {
164         return NodeFilter.FILTER_ACCEPT;
165     }
166
167     /**
168      * @see org.w3c.dom.ls.LSParserFilter#getWhatToShow()
169      */

170     public int getWhatToShow() {
171         return NodeFilter.SHOW_ELEMENT;
172     }
173
174     /**
175      * @see org.w3c.dom.ls.LSParserFilter#startElement(Element)
176      */

177     public short startElement(Element JavaDoc elt) {
178         return LSParserFilter.FILTER_ACCEPT;
179     }
180
181 }
182
183
184
185
Popular Tags