1*cdf0e10cSrcweir/*************************************************************************
2*cdf0e10cSrcweir *
3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir *
5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir *
7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir *
9*cdf0e10cSrcweir * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir *
11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir *
15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir *
21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir *
26*cdf0e10cSrcweir ************************************************************************/
27*cdf0e10cSrcweir#ifndef __com_sun_star_xml_sax_XFastParser_idl__
28*cdf0e10cSrcweir#define __com_sun_star_xml_sax_XFastParser_idl__
29*cdf0e10cSrcweir
30*cdf0e10cSrcweir#ifndef __com_sun_star_uno_XInterface_idl__
31*cdf0e10cSrcweir#include <com/sun/star/uno/XInterface.idl>
32*cdf0e10cSrcweir#endif
33*cdf0e10cSrcweir
34*cdf0e10cSrcweir#ifndef __com_sun_star_xml_sax_InputSource_idl__
35*cdf0e10cSrcweir#include <com/sun/star/xml/sax/InputSource.idl>
36*cdf0e10cSrcweir#endif
37*cdf0e10cSrcweir
38*cdf0e10cSrcweir#ifndef __com_sun_star_xml_sax_SAXException_idl__
39*cdf0e10cSrcweir#include <com/sun/star/xml/sax/SAXException.idl>
40*cdf0e10cSrcweir#endif
41*cdf0e10cSrcweir
42*cdf0e10cSrcweir#ifndef __com_sun_star_io_IOException_idl__
43*cdf0e10cSrcweir#include <com/sun/star/io/IOException.idl>
44*cdf0e10cSrcweir#endif
45*cdf0e10cSrcweir
46*cdf0e10cSrcweir#ifndef __com_sun_star_xml_sax_XFastDocumentHandler_idl__
47*cdf0e10cSrcweir#include <com/sun/star/xml/sax/XFastDocumentHandler.idl>
48*cdf0e10cSrcweir#endif
49*cdf0e10cSrcweir
50*cdf0e10cSrcweir#ifndef __com_sun_star_xml_sax_XFastTokenHandler_idl__
51*cdf0e10cSrcweir#include <com/sun/star/xml/sax/XFastTokenHandler.idl>
52*cdf0e10cSrcweir#endif
53*cdf0e10cSrcweir
54*cdf0e10cSrcweir#ifndef __com_sun_star_xml_sax_XErrorHandler_idl__
55*cdf0e10cSrcweir#include <com/sun/star/xml/sax/XErrorHandler.idl>
56*cdf0e10cSrcweir#endif
57*cdf0e10cSrcweir
58*cdf0e10cSrcweir#ifndef __com_sun_star_xml_sax_XDTDHandler_idl__
59*cdf0e10cSrcweir#include <com/sun/star/xml/sax/XDTDHandler.idl>
60*cdf0e10cSrcweir#endif
61*cdf0e10cSrcweir
62*cdf0e10cSrcweir#ifndef __com_sun_star_xml_sax_XEntityResolver_idl__
63*cdf0e10cSrcweir#include <com/sun/star/xml/sax/XEntityResolver.idl>
64*cdf0e10cSrcweir#endif
65*cdf0e10cSrcweir
66*cdf0e10cSrcweir#ifndef __com_sun_star_lang_Locale_idl__
67*cdf0e10cSrcweir#include <com/sun/star/lang/Locale.idl>
68*cdf0e10cSrcweir#endif
69*cdf0e10cSrcweir
70*cdf0e10cSrcweir#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
71*cdf0e10cSrcweir#include <com/sun/star/lang/IllegalArgumentException.idl>
72*cdf0e10cSrcweir#endif
73*cdf0e10cSrcweir
74*cdf0e10cSrcweir//=============================================================================
75*cdf0e10cSrcweir
76*cdf0e10cSrcweirmodule com {  module sun {  module star {  module xml {  module sax {
77*cdf0e10cSrcweir
78*cdf0e10cSrcweir//=============================================================================
79*cdf0e10cSrcweir
80*cdf0e10cSrcweir/** specifies a SAX parser that uses integer values for known xml names
81*cdf0e10cSrcweir	(elements, attributes and attribute values). The parser also handles
82*cdf0e10cSrcweir	namespaces and allows to have individual contexts for each xml element.
83*cdf0e10cSrcweir
84*cdf0e10cSrcweir	<p>Before parsing is possible you have to set your
85*cdf0e10cSrcweir	<type>XFastDocumentHandler</type> using <member>setFastDocumentHandler</member>.
86*cdf0e10cSrcweir
87*cdf0e10cSrcweir	<p>Parsing starts with calling <member>parseStream</member>. If the parser
88*cdf0e10cSrcweir	finds a valid xml file with the given <type>InputSource</type>, it calls
89*cdf0e10cSrcweir	<member>XFastDocumentHandler::startDocument</member> first.
90*cdf0e10cSrcweir
91*cdf0e10cSrcweir	<p>This parser generates either 'fast' events that use integer token
92*cdf0e10cSrcweir	values for namespaces, elements and attributes or 'unknown' events for
93*cdf0e10cSrcweir	elements that are unknown.
94*cdf0e10cSrcweir
95*cdf0e10cSrcweir	<p>A namespace is unknown if the namespace URL was not registered with
96*cdf0e10cSrcweir	<member>registerNamespace</member>.
97*cdf0e10cSrcweir
98*cdf0e10cSrcweir	<p>An element is unknown if no <type>XFastTokenHandler</type> is set
99*cdf0e10cSrcweir	or if the <type>XFastTokenHandler</type> does not return a valid
100*cdf0e10cSrcweir	identifier for the elements local name. An element is also unknown if
101*cdf0e10cSrcweir	the elements local name is known but it uses a namespace that is unknown.
102*cdf0e10cSrcweir
103*cdf0e10cSrcweir	<p>Setting a <type>XFastTokenHandler</type> with <member>setTokenHandler</member>
104*cdf0e10cSrcweir	is optional, but without a <type>XFastTokenHandler</type> you will only
105*cdf0e10cSrcweir	get unknown sax events. This can be usefull if you are only interested
106*cdf0e10cSrcweir	in the namespace handling and/or the context feature.
107*cdf0e10cSrcweir
108*cdf0e10cSrcweir	<p>For each element the parser sends a create child element event to the
109*cdf0e10cSrcweir	elements parent context by calling
110*cdf0e10cSrcweir	<member>XFastContextHandler::createFastChildContext</member> for known
111*cdf0e10cSrcweir	elements or <member>XFastContextHandler::createUnknownChildContext</member>
112*cdf0e10cSrcweir	for unknown elements.
113*cdf0e10cSrcweir	<br>The parent context for the root element is the <type>XFastDocumentHandler</type>
114*cdf0e10cSrcweir	itself.
115*cdf0e10cSrcweir
116*cdf0e10cSrcweir	<p>If the parent context returns an empty reference, no further events for
117*cdf0e10cSrcweir	the element and all of its childs are created.
118*cdf0e10cSrcweir
119*cdf0e10cSrcweir	<p>If a valid context is returned this context gets a start event by a call to
120*cdf0e10cSrcweir	<member>XFastContextHandler::startFastElement</member> for known elements or
121*cdf0e10cSrcweir	<member>XFastContextHandler::startUnknownElement</member> for unknown elements.
122*cdf0e10cSrcweir
123*cdf0e10cSrcweir	<p>After processing all its child elements the context gets an end event by a call to
124*cdf0e10cSrcweir	<member>XFastContextHandler::endFastElement</member> for known elements or
125*cdf0e10cSrcweir	<member>XFastContextHandler::endUnknownElement</member> for unknown elements.
126*cdf0e10cSrcweir
127*cdf0e10cSrcweir	<p>It is valid to return one instance of <type>XFastContextHandler</type> more
128*cdf0e10cSrcweir	than once. It is even possible to only use the <type>XFastDocumentHandler</type>
129*cdf0e10cSrcweir	by always returning a reference to itself for each create child context event.
130*cdf0e10cSrcweir
131*cdf0e10cSrcweir	<p>After the last element is processed the parser generates an end document
132*cdf0e10cSrcweir	event at the <type>XFastDocumentHandler</type> by calling
133*cdf0e10cSrcweir	<member>XFastDocumentHandler::endDocument</member>.
134*cdf0e10cSrcweir
135*cdf0e10cSrcweir	@see http://wiki.services.openoffice.org/wiki/FastParser
136*cdf0e10cSrcweir*/
137*cdf0e10cSrcweirinterface XFastParser: com::sun::star::uno::XInterface
138*cdf0e10cSrcweir{
139*cdf0e10cSrcweir	//-------------------------------------------------------------------------
140*cdf0e10cSrcweir	/** parses an XML document from a stream.
141*cdf0e10cSrcweir
142*cdf0e10cSrcweir		<p>Set the desired handlers before calling this method.</p>
143*cdf0e10cSrcweir	 */
144*cdf0e10cSrcweir	void parseStream( [in] InputSource aInputSource )
145*cdf0e10cSrcweir			raises( SAXException, com::sun::star::io::IOException );
146*cdf0e10cSrcweir
147*cdf0e10cSrcweir	//-------------------------------------------------------------------------
148*cdf0e10cSrcweir
149*cdf0e10cSrcweir	/** Application must register a document event handler to get
150*cdf0e10cSrcweir		sax events for the parsed stream.
151*cdf0e10cSrcweir	 */
152*cdf0e10cSrcweir	void setFastDocumentHandler( [in] XFastDocumentHandler Handler );
153*cdf0e10cSrcweir
154*cdf0e10cSrcweir	//-------------------------------------------------------------------------
155*cdf0e10cSrcweir
156*cdf0e10cSrcweir	/** must be registered to translate known xml names to integer tokens.
157*cdf0e10cSrcweir	 */
158*cdf0e10cSrcweir	void setTokenHandler( [in] XFastTokenHandler Handler );
159*cdf0e10cSrcweir
160*cdf0e10cSrcweir	//-------------------------------------------------------------------------
161*cdf0e10cSrcweir
162*cdf0e10cSrcweir	/** registers a known namespace url with the given integer token.<br>
163*cdf0e10cSrcweir		@param NamespaceToken
164*cdf0e10cSrcweir			an integer token that must be greater than FastToken::NAMESPACE.
165*cdf0e10cSrcweir	 */
166*cdf0e10cSrcweir	void registerNamespace( [in] string NamespaceURL, [in] long NamespaceToken )
167*cdf0e10cSrcweir		raises( com::sun::star::lang::IllegalArgumentException );
168*cdf0e10cSrcweir
169*cdf0e10cSrcweir	//-------------------------------------------------------------------------
170*cdf0e10cSrcweir	/** allows an application to register an error event handler.
171*cdf0e10cSrcweir
172*cdf0e10cSrcweir		<p>Note that the error handler can throw an exception when an error or
173*cdf0e10cSrcweir		warning occurs.  Note that an exception is thrown by the parser when
174*cdf0e10cSrcweir		an unrecoverable (fatal) error occurs.</p>
175*cdf0e10cSrcweir	 */
176*cdf0e10cSrcweir	void setErrorHandler( [in] XErrorHandler Handler );
177*cdf0e10cSrcweir
178*cdf0e10cSrcweir	//-------------------------------------------------------------------------
179*cdf0e10cSrcweir	/** allows an application to register a DTD-Handler.
180*cdf0e10cSrcweir	 */
181*cdf0e10cSrcweir	void setEntityResolver( [in] XEntityResolver Resolver );
182*cdf0e10cSrcweir
183*cdf0e10cSrcweir	//-------------------------------------------------------------------------
184*cdf0e10cSrcweir	/** sets a locale specified for localization of warnings and error messages.
185*cdf0e10cSrcweir
186*cdf0e10cSrcweir		<p>Set the language of the error messages. Useful when the parsing
187*cdf0e10cSrcweir		errors will be presented to the user.</p>
188*cdf0e10cSrcweir	 */
189*cdf0e10cSrcweir	void setLocale( [in] com::sun::star::lang::Locale locale );
190*cdf0e10cSrcweir};
191*cdf0e10cSrcweir
192*cdf0e10cSrcweir//=============================================================================
193*cdf0e10cSrcweir
194*cdf0e10cSrcweir}; }; }; }; };
195*cdf0e10cSrcweir
196*cdf0e10cSrcweir#endif
197