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