xref: /aoo42x/main/xmloff/inc/xmloff/xmlimp.hxx (revision ecfe53c5)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _XMLOFF_XMLIMP_HXX
25 #define _XMLOFF_XMLIMP_HXX
26 
27 #include "sal/config.h"
28 #include "xmloff/dllapi.h"
29 #include "sal/types.h"
30 #include <com/sun/star/xml/sax/SAXParseException.hpp>
31 #include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
32 #include <com/sun/star/xml/sax/SAXException.hpp>
33 #include <com/sun/star/xml/sax/XAttributeList.hpp>
34 #include <com/sun/star/xml/sax/XLocator.hpp>
35 #include <com/sun/star/lang/XUnoTunnel.hpp>
36 #include <com/sun/star/util/XNumberFormatsSupplier.hpp>
37 #include <com/sun/star/container/XNameContainer.hpp>
38 #include <com/sun/star/lang/XInitialization.hpp>
39 #include <com/sun/star/lang/XServiceInfo.hpp>
40 #include <com/sun/star/document/XImporter.hpp>
41 #include <com/sun/star/document/XFilter.hpp>
42 #include <com/sun/star/document/XGraphicObjectResolver.hpp>
43 #include <com/sun/star/document/XEmbeddedObjectResolver.hpp>
44 #include <com/sun/star/beans/XPropertySet.hpp>
45 #include <cppuhelper/weak.hxx>
46 #include <xmloff/txtimp.hxx>
47 #include <xmloff/shapeimport.hxx>
48 #include <xmloff/SchXMLImportHelper.hxx>
49 #include <xmloff/ProgressBarHelper.hxx>
50 #include <cppuhelper/implbase6.hxx>
51 #include <xmloff/formlayerimport.hxx>
52 
53 #include <com/sun/star/beans/NamedValue.hpp>
54 
55 namespace rtl { class OUString; }
56 namespace com { namespace sun { namespace star {
57     namespace uno { class XComponentContext; }
58 	namespace frame { class XModel; }
59 	namespace io { class XOutputStream; }
60     namespace rdf { class XMetadatable; }
61 } } }
62 namespace comphelper { class UnoInterfaceToUniqueIdentifierMapper; }
63 
64 class SvXMLNamespaceMap;
65 class SvXMLImportContext;
66 class SvXMLImportContexts_Impl;
67 class SvXMLImport_Impl;
68 class SvXMLUnitConverter;
69 class SvXMLNumFmtHelper;
70 class XMLFontStylesContext;
71 class XMLEventImportHelper;
72 class XMLErrors;
73 class StyleMap;
74 class String;
75 
76 namespace xmloff {
77     class RDFaImportHelper;
78 }
79 
80 #define IMPORT_META			0x0001
81 #define IMPORT_STYLES		0x0002
82 #define IMPORT_MASTERSTYLES 0x0004
83 #define IMPORT_AUTOSTYLES	0x0008
84 #define IMPORT_CONTENT		0x0010
85 #define IMPORT_SCRIPTS		0x0020
86 #define IMPORT_SETTINGS		0x0040
87 #define IMPORT_FONTDECLS	0x0080
88 #define IMPORT_EMBEDDED		0x0100
89 #define IMPORT_OOO_NAMESPACES	0x0100
90 #define IMPORT_ALL			0xffff
91 
92 
93 
94 class XMLOFF_DLLPUBLIC SvXMLImport : public ::cppu::WeakImplHelper6<
95 			 ::com::sun::star::xml::sax::XExtendedDocumentHandler,
96 			 ::com::sun::star::lang::XServiceInfo,
97 			 ::com::sun::star::lang::XInitialization,
98 			 ::com::sun::star::document::XImporter,
99              ::com::sun::star::document::XFilter,
100 			 ::com::sun::star::lang::XUnoTunnel>
101 {
102 	friend class SvXMLImportContext;
103 
104 	::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator > mxLocator;
105 	::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > mxModel;
106 	::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > mxNumberFormatsSupplier;
107 	::com::sun::star::uno::Reference< ::com::sun::star::document::XGraphicObjectResolver > mxGraphicResolver;
108 	::com::sun::star::uno::Reference< ::com::sun::star::document::XEmbeddedObjectResolver > mxEmbeddedResolver;
109 	::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > mxImportInfo;
110 
111 	UniReference< XMLTextImportHelper >				mxTextImport;
112 	UniReference< XMLShapeImportHelper >			mxShapeImport;
113 	UniReference< SchXMLImportHelper >				mxChartImport;
114 	UniReference< ::xmloff::OFormLayerXMLImport >	mxFormImport;
115 
116 	SvXMLImportContextRef mxFontDecls;
117 	SvXMLImportContextRef mxStyles;
118 	SvXMLImportContextRef mxAutoStyles;
119 	SvXMLImportContextRef mxMasterStyles;
120 
121 	::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > mxGradientHelper;
122 	::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > mxHatchHelper;
123 	::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > mxBitmapHelper;
124 	::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > mxTransGradientHelper;
125 	::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > mxMarkerHelper;
126 	::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > mxDashHelper;
127 	::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > mxNumberStyles;
128 	::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > mxEventListener;
129 
130 	SvXMLImport_Impl			*mpImpl;			// dummy
131 
132 	SvXMLNamespaceMap 			*mpNamespaceMap;
133 	SvXMLUnitConverter			*mpUnitConv;
134 	SvXMLImportContexts_Impl	*mpContexts;
135 	SvXMLNumFmtHelper			*mpNumImport;
136 	ProgressBarHelper			*mpProgressBarHelper;
137 	XMLEventImportHelper   		*mpEventImportHelper;
138 	XMLErrors					*mpXMLErrors;
139 	StyleMap 					*mpStyleMap;
140 	::rtl::OUString				msPackageProtocol;
141 
142 	SAL_DLLPRIVATE void _InitCtor();
143 
144 	sal_uInt16	mnImportFlags;
145 	sal_uInt16	mnErrorFlags;
146 
147 protected:
148 	// #110680#
149 	::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxServiceFactory;
150 
151 	::com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator > mxStatusIndicator;
152 	sal_Bool					mbIsFormsSupported;
153 	bool						mbIsTableShapeSupported;
154     bool                        mbIsGraphicLoadOnDemandSupported;
155 
156 	// This method is called after the namespace map has been updated, but
157 	// before a context for the current element has been pushed.
158 	virtual SvXMLImportContext *CreateContext( sal_uInt16 nPrefix,
159 									  const ::rtl::OUString& rLocalName,
160 									  const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList );
161 
162 	virtual XMLTextImportHelper* CreateTextImport();
163 	virtual XMLShapeImportHelper* CreateShapeImport();
164 	inline sal_Bool HasShapeImport() const { return mxShapeImport.is(); }
165 	inline void ClearShapeImport() { mxShapeImport = 0; }
166 
167 	virtual SchXMLImportHelper* CreateChartImport();
168 	virtual ::xmloff::OFormLayerXMLImport* CreateFormImport();
169 
170 	void SetFontDecls( XMLFontStylesContext *pFontDecls );
171 	void SetStyles( SvXMLStylesContext *pStyles );
172 	void SetAutoStyles( SvXMLStylesContext *pAutoStyles );
173 	void SetMasterStyles( SvXMLStylesContext *pMasterStyles );
174 
175     sal_Bool IsODFVersionConsistent( const ::rtl::OUString& aODFVersion );
176 
177 	const ::com::sun::star::uno::Reference< ::com::sun::star::document::XEmbeddedObjectResolver >& GetEmbeddedResolver() const { return mxEmbeddedResolver; }
178 	inline void SetEmbeddedResolver( com::sun::star::uno::Reference< com::sun::star::document::XEmbeddedObjectResolver >& _xEmbeddedResolver );
179 
180 	const ::com::sun::star::uno::Reference< ::com::sun::star::document::XGraphicObjectResolver >& GetGraphicResolver() const { return mxGraphicResolver; }
181 	void SetGraphicResolver( com::sun::star::uno::Reference< com::sun::star::document::XGraphicObjectResolver >& _xGraphicResolver );
182 
183 
184     void _CreateNumberFormatsSupplier();
185     void _CreateDataStylesImport();
186 
187 public:
188 	// #110680#
189 	// SvXMLImport( sal_uInt16 nImportFlags = IMPORT_ALL ) throw();
190 	SvXMLImport(
191 		const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory,
192 		sal_uInt16 nImportFlags = IMPORT_ALL ) throw();
193 
194 	// #110680#
195 	//SvXMLImport( const ::com::sun::star::uno::Reference<
196 	//		::com::sun::star::frame::XModel > & ) throw();
197 	SvXMLImport(
198 		const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory,
199 		const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & ) throw();
200 
201 	// #110680#
202 	//SvXMLImport( const ::com::sun::star::uno::Reference<
203 	//		::com::sun::star::frame::XModel > &,
204 	//		const ::com::sun::star::uno::Reference< ::com::sun::star::document::XGraphicObjectResolver > & ) throw();
205 	SvXMLImport(
206 		const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory,
207 		const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > &,
208 		const ::com::sun::star::uno::Reference< ::com::sun::star::document::XGraphicObjectResolver > & ) throw();
209 
210 	virtual ~SvXMLImport() throw();
211 
212 	static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw();
213 	static SvXMLImport* getImplementation( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > ) throw();
214 
215 	// ::com::sun::star::xml::sax::XDocumentHandler
216 	virtual void SAL_CALL startDocument(void)
217 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
218 	virtual void SAL_CALL endDocument(void)
219 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
220 	virtual void SAL_CALL startElement(const ::rtl::OUString& aName,
221 							  const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttribs)
222 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
223 	virtual void SAL_CALL endElement(const ::rtl::OUString& aName)
224 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
225 	virtual void SAL_CALL characters(const ::rtl::OUString& aChars)
226 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
227 	virtual void SAL_CALL ignorableWhitespace(const ::rtl::OUString& aWhitespaces)
228 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
229 	virtual void SAL_CALL processingInstruction(const ::rtl::OUString& aTarget,
230 									   const ::rtl::OUString& aData)
231 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
232 	virtual void SAL_CALL setDocumentLocator(const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator > & xLocator)
233 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
234 
235 	// ::com::sun::star::xml::sax::XExtendedDocumentHandler
236 	virtual void SAL_CALL startCDATA(void) throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
237 	virtual void SAL_CALL endCDATA(void) throw( ::com::sun::star::uno::RuntimeException );
238 	virtual void SAL_CALL comment(const ::rtl::OUString& sComment)
239 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
240 	virtual void SAL_CALL allowLineBreak(void)
241 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
242 	virtual void SAL_CALL unknown(const ::rtl::OUString& sString)
243 		throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException );
244 
245 	// XImporter
246     virtual void SAL_CALL setTargetDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
247 
248     // XFilter
249     virtual sal_Bool SAL_CALL filter( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aDescriptor ) throw (::com::sun::star::uno::RuntimeException);
250     virtual void SAL_CALL cancel(  ) throw (::com::sun::star::uno::RuntimeException);
251 
252 	// XInitialization
253     virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
254 
255 	// XUnoTunnel
256     virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
257 
258 	// XServiceInfo
259     virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw(::com::sun::star::uno::RuntimeException);
260     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
261     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
262 
263     // may be called by certain subclasses that handle document meta-data
264     // override to provide customized handling of document statistics
265     // the base class implementation initializes the progress bar and should
266     // be called by overriding methods
267 	virtual void SetStatistics(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > & i_rStats);
268 
269 	// get import helper for text
270 	inline UniReference< XMLTextImportHelper > GetTextImport();
271 	sal_Bool HasTextImport() const { return mxTextImport.is(); }
272 	inline SvXMLNumFmtHelper* GetDataStylesImport();
273 
274 	// get import helper for shapes
275 	inline UniReference< XMLShapeImportHelper > GetShapeImport();
276 
277 	// get import helper for charts
278 	inline UniReference< SchXMLImportHelper > GetChartImport();
279 
280 	// get import helper for form layer
281 	inline UniReference< ::xmloff::OFormLayerXMLImport > GetFormImport();
282 
283 	// get XPropertySet with import information
284 	inline ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > getImportInfo() const { return mxImportInfo; }
285 
286 	// get import helper for events
287 	XMLEventImportHelper& GetEventImport();
288 
289 	SvXMLNamespaceMap& GetNamespaceMap() { return *mpNamespaceMap; }
290 	const SvXMLNamespaceMap& GetNamespaceMap() const { return *mpNamespaceMap; }
291 	const SvXMLUnitConverter& GetMM100UnitConverter() const { return *mpUnitConv; }
292 		SvXMLUnitConverter& GetMM100UnitConverter() { return *mpUnitConv; }
293 	const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator > & GetLocator() const { return mxLocator; }
294 	const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > &
295         GetModel() const { return mxModel; }
296 
297 	const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > & GetGradientHelper();
298 	const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > & GetHatchHelper();
299 	const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > & GetBitmapHelper();
300 	const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > & GetTransGradientHelper();
301 	const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > & GetMarkerHelper();
302 	const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > & GetDashHelper();
303 	inline ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > & GetNumberFormatsSupplier();
304 	inline void SetNumberFormatsSupplier(const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >& _xNumberFormatSupplier)
305 	{
306 		mxNumberFormatsSupplier = _xNumberFormatSupplier;
307 	}
308 
309 	// Convert a local packe URL into either a graphic manager or a
310 	// internal package URL. The later one happens only if bLoadURL is true
311 	::rtl::OUString ResolveGraphicObjectURL( const ::rtl::OUString& rURL, sal_Bool bLoadOnDemand );
312 	::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >
313 		GetStreamForGraphicObjectURLFromBase64();
314     ::rtl::OUString ResolveGraphicObjectURLFromBase64(
315 		const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& rOut );
316 
317 	sal_Bool IsPackageURL( const ::rtl::OUString& rURL ) const;
318 	::rtl::OUString ResolveEmbeddedObjectURL( const ::rtl::OUString& rURL,
319 											  const ::rtl::OUString& rClassId );
320 	::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >
321 		GetStreamForEmbeddedObjectURLFromBase64();
322 	::rtl::OUString ResolveEmbeddedObjectURLFromBase64();
323 
324 	void AddStyleDisplayName( sal_uInt16 nFamily,
325 							  const ::rtl::OUString& rName,
326 							  const ::rtl::OUString& rDisplayName );
327 	::rtl::OUString GetStyleDisplayName( sal_uInt16 nFamily,
328 									  const ::rtl::OUString& rName ) const;
329 
330 	ProgressBarHelper*	GetProgressBarHelper();
331 
332 	void AddNumberStyle(sal_Int32 nKey, const rtl::OUString& sName);
333 
334 	virtual void SetViewSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps);
335 	virtual void SetConfigurationSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aConfigProps);
336     virtual void SetDocumentSpecificSettings(const ::rtl::OUString& _rSettingsGroupName,
337                     const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& _rSettings);
338 
339 	XMLFontStylesContext *GetFontDecls();
340 	SvXMLStylesContext *GetStyles();
341 	SvXMLStylesContext *GetAutoStyles();
342 	SvXMLStylesContext *GetMasterStyles();
343 	const XMLFontStylesContext *GetFontDecls() const;
344 	const SvXMLStylesContext *GetStyles() const;
345 	const SvXMLStylesContext *GetAutoStyles() const;
346 	const SvXMLStylesContext *GetMasterStyles() const;
347 
348 	sal_uInt16	getImportFlags() const { return mnImportFlags; }
349 	sal_Bool	IsFormsSupported() const { return mbIsFormsSupported; }
350 	rtl::OUString GetAbsoluteReference(const rtl::OUString& rValue) const;
351 
352 	sal_Unicode ConvStarBatsCharToStarSymbol( sal_Unicode c );
353 	sal_Unicode ConvStarMathCharToStarSymbol( sal_Unicode c );
354 
355 	bool IsTableShapeSupported() const { return mbIsTableShapeSupported; }
356 
357     ::rtl::OUString GetODFVersion() const;
358 
359 	/**
360      * Record an error condition that occured during import. The
361      * behavior of SetError can be modified using the error flag
362      * constants.
363      */
364 	void SetError(
365         /// error ID, may contain an error flag
366         sal_Int32 nId,
367         /// string parameters for the error message
368         const ::com::sun::star::uno::Sequence< ::rtl::OUString> & rMsgParams,
369         /// original exception message (if applicable)
370         const ::rtl::OUString& rExceptionMessage,
371         /// error location (if applicable)
372         const ::com::sun::star::uno::Reference<
373             ::com::sun::star::xml::sax::XLocator> & rLocator );
374 
375 	void SetError(
376         sal_Int32 nId,
377         const ::com::sun::star::uno::Sequence< ::rtl::OUString> & rMsgParams);
378 
379 	void SetError( sal_Int32 nId );
380 	void SetError( sal_Int32 nId, const rtl::OUString& rMsg1 );
381 	void SetError( sal_Int32 nId, const rtl::OUString& rMsg1,
382                                   const rtl::OUString& rMsg2 );
383 	void SetError( sal_Int32 nId, const rtl::OUString& rMsg1,
384                                   const rtl::OUString& rMsg2,
385                                   const rtl::OUString& rMsg3 );
386 	void SetError( sal_Int32 nId, const rtl::OUString& rMsg1,
387                                   const rtl::OUString& rMsg2,
388                                   const rtl::OUString& rMsg3,
389                                   const rtl::OUString& rMsg4 );
390 
391     /** return list of errors */
392 	XMLErrors* GetErrors();
393 
394     /** return current error flags */
395 	sal_uInt16 GetErrorFlags()  { return mnErrorFlags; }
396 
397     virtual void DisposingModel();
398 
399 	::comphelper::UnoInterfaceToUniqueIdentifierMapper& getInterfaceToIdentifierMapper();
400 
401 	// #110680#
402 	::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > getServiceFactory();
403 
404     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >
405     GetComponentContext() const;
406 
407     // --> OD 2004-08-10 #i28749#
408     sal_Bool IsShapePositionInHoriL2R() const;
409     // <--
410 
411     // --> OD 2007-12-19 #152540#
412     sal_Bool IsTextDocInOOoFileFormat() const;
413     // <--
414 
415     String GetBaseURL() const;
416     String GetDocumentBase() const;
417 
418     /// name of stream in package, e.g., "content.xml"
419     ::rtl::OUString GetStreamName() const;
420 
421     /// set the XmlId attribute of given UNO object (for RDF metadata)
422     void SetXmlId(::com::sun::star::uno::Reference<
423             ::com::sun::star::uno::XInterface> const & i_xIfc,
424         ::rtl::OUString const & i_rXmlId);
425 
426     /// Add a RDFa statement; parameters are XML attribute values
427     void AddRDFa(
428         ::com::sun::star::uno::Reference< ::com::sun::star::rdf::XMetadatable>
429             i_xObject,
430         ::rtl::OUString const & i_rAbout,
431         ::rtl::OUString const & i_rProperty,
432         ::rtl::OUString const & i_rContent,
433         ::rtl::OUString const & i_rDatatype);
434 
435     /// do not dllexport this; only for advanced cases (bookmark-start)
436     SAL_DLLPRIVATE ::xmloff::RDFaImportHelper & GetRDFaImportHelper();
437 
438     // #i31958# XForms helper method
439     // (to be implemented by applications suporting XForms)
440     virtual void initXForms();
441 
442 	/** returns the upd and build id (f.e. "680m124$Build-8964" gives rMaster = 680 and rBuild = 8964)
443 		from the metafile.
444 		this only works if the meta.xml was already imported and the
445 		import propertyset contains the string property "BuildId".
446 		If false is returned the build ids are not available (yet).
447 	**/
448 	bool getBuildIds( sal_Int32& rUPD, sal_Int32& rBuild ) const;
449 
450     static const sal_uInt16 OOo_1x = 10;
451     static const sal_uInt16 OOo_2x = 20;
452     // --> ORW
453     static const sal_uInt16 OOo_30x = 30;
454     static const sal_uInt16 OOo_31x = 31;
455     static const sal_uInt16 OOo_32x = 32;
456     static const sal_uInt16 OOo_33x = 33;
457     static const sal_uInt16 OOo_34x = 34;
458     static const sal_uInt16 ProductVersionUnknown = SAL_MAX_UINT16;
459     // <--
460 
461     /** this checks the build ID and returns
462 
463         * OOo_1x for files created with OpenOffice.org 1.x or StarOffice 7 (this also includes binary import over binfilter)
464         * OOo_2x for files created with OpenOffice.org 2.x or StarOffice 8
465         * OOo_30x for files created with OpenOffice.org 3.0/3.0.1 or StarOffice 9/9 PU01
466         * OOo_31x for files created with OpenOffice.org 3.1/3.1.1 or StarOffice 9 PU02/9 PU03
467         * OOo_32x for files created with OpenOffice.org 3.2/3.2.1 or StarOffice 9 PU04 or Oracle Open Office 3.2.1
468         * OOo_33x for files created with OpenOffice.org 3.3 (and minors) or Oracle Open Office 3.3 (and minors)
469         * OOo_34x for files created with OpenOffice.org 3.4 Beta or Oracle Open Office 3.4 Beta
470         * ProductVersionUnknown for files not created with OpenOffice.org, StarOffice or Oracle Open Office
471     */
472     sal_uInt16 getGeneratorVersion() const;
473 
474     /** If true, the URL for graphic shapes may be stored as a package URL and
475         loaded later (on demand) by the application. Otherwise graphics are
476         loaded immediately and the graphic shape gets the graphic manager URL.
477 
478         @see <member>mbIsGraphicLoadOnDemandSupported</member>
479      */
480     bool isGraphicLoadOnDemandSupported() const;
481 };
482 
483 inline UniReference< XMLTextImportHelper > SvXMLImport::GetTextImport()
484 {
485 	if( !mxTextImport.is() )
486 		mxTextImport = CreateTextImport();
487 
488 	return mxTextImport;
489 }
490 
491 inline UniReference< XMLShapeImportHelper > SvXMLImport::GetShapeImport()
492 {
493 	if( !mxShapeImport.is() )
494 		mxShapeImport = CreateShapeImport();
495 
496 	return mxShapeImport;
497 }
498 
499 inline UniReference< SchXMLImportHelper > SvXMLImport::GetChartImport()
500 {
501 	if( !mxChartImport.is() )
502 		mxChartImport = CreateChartImport();
503 
504 	return mxChartImport;
505 }
506 
507 inline UniReference< ::xmloff::OFormLayerXMLImport > SvXMLImport::GetFormImport()
508 {
509 	if( !mxFormImport.is() )
510 		mxFormImport = CreateFormImport();
511 
512 	return mxFormImport;
513 }
514 
515 inline void SvXMLImport::SetEmbeddedResolver(
516 	com::sun::star::uno::Reference< com::sun::star::document::XEmbeddedObjectResolver >& _xEmbeddedResolver )
517 {
518 	mxEmbeddedResolver = _xEmbeddedResolver;
519 }
520 
521 inline void SvXMLImport::SetGraphicResolver(
522 	com::sun::star::uno::Reference< com::sun::star::document::XGraphicObjectResolver >& _xGraphicResolver )
523 {
524 	mxGraphicResolver = _xGraphicResolver;
525 }
526 
527 inline ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > & SvXMLImport::GetNumberFormatsSupplier()
528 {
529     if ( ! mxNumberFormatsSupplier.is() && mxModel.is() )
530         _CreateNumberFormatsSupplier();
531 
532     return mxNumberFormatsSupplier;
533 }
534 
535 inline SvXMLNumFmtHelper* SvXMLImport::GetDataStylesImport()
536 {
537     if ( mpNumImport == NULL)
538         _CreateDataStylesImport();
539 
540     return mpNumImport;
541 }
542 
543 
544 #endif	//  _XMLOFF_XMLIMP_HXX
545