diff options
author | Michael Stahl <mst@openoffice.org> | 2010-04-28 17:52:28 +0200 |
---|---|---|
committer | Michael Stahl <mst@openoffice.org> | 2010-04-28 17:52:28 +0200 |
commit | fd358e1499ada29ac8421a7940e8eb6a61e7f818 (patch) | |
tree | 5bf0ff9fe2ab496838b0e93fb966a0c42c44f264 /xmloff/source/core | |
parent | d5d509c803f6210e7d62d6f91e9773774ea3ac58 (diff) | |
parent | eeaf2f34f56d815040b0e80b5e3abd6b08400bdc (diff) |
merge DEV300_m77
Diffstat (limited to 'xmloff/source/core')
-rw-r--r-- | xmloff/source/core/SettingsExportHelper.cxx | 131 | ||||
-rw-r--r-- | xmloff/source/core/xmlexp.cxx | 97 |
2 files changed, 159 insertions, 69 deletions
diff --git a/xmloff/source/core/SettingsExportHelper.cxx b/xmloff/source/core/SettingsExportHelper.cxx index 182ab6f9a2..31611faacc 100644 --- a/xmloff/source/core/SettingsExportHelper.cxx +++ b/xmloff/source/core/SettingsExportHelper.cxx @@ -32,32 +32,27 @@ #include <xmloff/xmltoken.hxx> #include <xmloff/xmluconv.hxx> #include <tools/debug.hxx> +#include <tools/diagnose_ex.h> #include <comphelper/extract.hxx> -// #110680# -//#ifndef _COMPHELPER_PROCESSFACTORYHXX_ -//#include <comphelper/processfactory.hxx> -//#endif #include <com/sun/star/linguistic2/XSupportedLocales.hpp> #include <com/sun/star/i18n/XForbiddenCharacters.hpp> #include <com/sun/star/container/XNameAccess.hpp> #include <com/sun/star/container/XNameContainer.hpp> -#ifndef _COM_SUN_STAR_CONTAINER_XIndexCONTAINER_HPP_ #include <com/sun/star/container/XIndexContainer.hpp> -#endif #include <com/sun/star/util/DateTime.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/container/XIndexContainer.hpp> #include <com/sun/star/formula/SymbolDescriptor.hpp> #include <com/sun/star/document/PrinterIndependentLayout.hpp> -#include <xmloff/nmspmap.hxx> +#include <xmloff/XMLSettingsExportContext.hxx> #include <xmlenums.hxx> using namespace ::com::sun::star; using namespace ::xmloff::token; -XMLSettingsExportHelper::XMLSettingsExportHelper(SvXMLExport& rTempExport) -: rExport(rTempExport) +XMLSettingsExportHelper::XMLSettingsExportHelper( ::xmloff::XMLSettingsExportContext& i_rContext ) +: m_rContext( i_rContext ) , msPrinterIndependentLayout( RTL_CONSTASCII_USTRINGPARAM( "PrinterIndependentLayout" ) ) , msColorTableURL( RTL_CONSTASCII_USTRINGPARAM( "ColorTableURL" ) ) , msLineEndTableURL( RTL_CONSTASCII_USTRINGPARAM( "LineEndTableURL" ) ) @@ -194,89 +189,97 @@ void XMLSettingsExportHelper::CallTypeFunction(const uno::Any& rAny, void XMLSettingsExportHelper::exportBool(const sal_Bool bValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_BOOLEAN); - SvXMLElementExport aBoolElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_BOOLEAN ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUString sValue; if (bValue) sValue = GetXMLToken(XML_TRUE); else sValue = GetXMLToken(XML_FALSE); - rExport.GetDocHandler()->characters(sValue); + m_rContext.Characters( sValue ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportByte(const sal_Int8 nValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_BYTE); - SvXMLElementExport aShortElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_BYTE ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::convertNumber(sBuffer, sal_Int32(nValue)); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.Characters( sBuffer.makeStringAndClear() ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportShort(const sal_Int16 nValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_SHORT); - SvXMLElementExport aShortElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_SHORT ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::convertNumber(sBuffer, sal_Int32(nValue)); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.Characters( sBuffer.makeStringAndClear() ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportInt(const sal_Int32 nValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_INT); - SvXMLElementExport aIntElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_INT ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::convertNumber(sBuffer, nValue); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.Characters( sBuffer.makeStringAndClear() ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportLong(const sal_Int64 nValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_LONG); - SvXMLElementExport aIntElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_LONG ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUString sValue(rtl::OUString::valueOf(nValue)); - rExport.GetDocHandler()->characters(sValue); + m_rContext.Characters( sValue ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportDouble(const double fValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_DOUBLE); - SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_DOUBLE ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::convertDouble(sBuffer, fValue); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.Characters( sBuffer.makeStringAndClear() ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportString(const rtl::OUString& sValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_STRING); - SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_STRING ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); if (sValue.getLength()) - rExport.GetDocHandler()->characters(sValue); + m_rContext.Characters( sValue ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportDateTime(const util::DateTime& aValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_DATETIME); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_DATETIME ); rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::convertDateTime(sBuffer, aValue); - SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); + m_rContext.Characters( sBuffer.makeStringAndClear() ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportSequencePropertyValue( @@ -287,10 +290,11 @@ void XMLSettingsExportHelper::exportSequencePropertyValue( sal_Int32 nLength(aProps.getLength()); if(nLength) { - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - SvXMLElementExport aSequenceElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_SET, sal_True, sal_True); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.StartElement( XML_CONFIG_ITEM_SET, sal_True ); for (sal_Int32 i = 0; i < nLength; i++) CallTypeFunction(aProps[i].Value, aProps[i].Name); + m_rContext.EndElement( sal_True ); } } void XMLSettingsExportHelper::exportSymbolDescriptors( @@ -299,7 +303,7 @@ void XMLSettingsExportHelper::exportSymbolDescriptors( { // #110680# // uno::Reference< lang::XMultiServiceFactory > xServiceFactory( comphelper::getProcessServiceFactory() ); - uno::Reference< lang::XMultiServiceFactory > xServiceFactory( rExport.getServiceFactory() ); + uno::Reference< lang::XMultiServiceFactory > xServiceFactory( m_rContext.GetServiceFactory() ); DBG_ASSERT( xServiceFactory.is(), "XMLSettingsExportHelper::exportSymbolDescriptors: got no service manager" ); if( xServiceFactory.is() ) @@ -362,15 +366,16 @@ void XMLSettingsExportHelper::exportbase64Binary( { DBG_ASSERT(rName.getLength(), "no name"); sal_Int32 nLength(aProps.getLength()); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_BASE64BINARY); - SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_BASE64BINARY ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); if(nLength) { rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::encodeBase64(sBuffer, aProps); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.Characters( sBuffer.makeStringAndClear() ); } + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportMapEntry(const uno::Any& rAny, @@ -384,10 +389,11 @@ void XMLSettingsExportHelper::exportMapEntry(const uno::Any& rAny, if (nLength) { if (bNameAccess) - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - SvXMLElementExport aEntryElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_MAP_ENTRY, sal_True, sal_True); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.StartElement( XML_CONFIG_ITEM_MAP_ENTRY, sal_True ); for (sal_Int32 i = 0; i < nLength; i++) CallTypeFunction(aProps[i].Value, aProps[i].Name); + m_rContext.EndElement( sal_True ); } } @@ -400,11 +406,12 @@ void XMLSettingsExportHelper::exportNameAccess( "wrong NameAccess" ); if(aNamed->hasElements()) { - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - SvXMLElementExport aNamedElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_MAP_NAMED, sal_True, sal_True); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.StartElement( XML_CONFIG_ITEM_MAP_NAMED, sal_True ); uno::Sequence< rtl::OUString > aNames(aNamed->getElementNames()); for (sal_Int32 i = 0; i < aNames.getLength(); i++) exportMapEntry(aNamed->getByName(aNames[i]), aNames[i], sal_True); + m_rContext.EndElement( sal_True ); } } @@ -414,17 +421,18 @@ void XMLSettingsExportHelper::exportIndexAccess( { DBG_ASSERT(rName.getLength(), "no name"); DBG_ASSERT(aIndexed->getElementType().equals(getCppuType( (uno::Sequence<beans::PropertyValue> *)0 ) ), - "wrong NameAccess" ); + "wrong IndexAccess" ); rtl::OUString sEmpty;// ( RTLCONSTASCII_USTRINGPARAM( "View" ) ); if(aIndexed->hasElements()) { - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - SvXMLElementExport aIndexedElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_MAP_INDEXED, sal_True, sal_True); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.StartElement( XML_CONFIG_ITEM_MAP_INDEXED, sal_True ); sal_Int32 nCount = aIndexed->getCount(); for (sal_Int32 i = 0; i < nCount; i++) { exportMapEntry(aIndexed->getByIndex(i), sEmpty, sal_False); } + m_rContext.EndElement( sal_True ); } } @@ -445,7 +453,7 @@ void XMLSettingsExportHelper::exportForbiddenCharacters( // #110680# // uno::Reference< lang::XMultiServiceFactory > xServiceFactory( comphelper::getProcessServiceFactory() ); - uno::Reference< lang::XMultiServiceFactory > xServiceFactory( rExport.getServiceFactory() ); + uno::Reference< lang::XMultiServiceFactory > xServiceFactory( m_rContext.GetServiceFactory() ); DBG_ASSERT( xServiceFactory.is(), "XMLSettingsExportHelper::exportForbiddenCharacters: got no service manager" ); if( xServiceFactory.is() ) @@ -496,14 +504,12 @@ void XMLSettingsExportHelper::exportForbiddenCharacters( } } -void XMLSettingsExportHelper::exportSettings( +void XMLSettingsExportHelper::exportAllSettings( const uno::Sequence<beans::PropertyValue>& aProps, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - ::rtl::OUString aQName = - rExport.GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_OOO, rName ); - exportSequencePropertyValue(aProps, aQName); + exportSequencePropertyValue(aProps, rName); } @@ -531,15 +537,16 @@ void XMLSettingsExportHelper::ManipulateSetting( uno::Any& rAny, const rtl::OUSt { if( !mxStringSubsitution.is() ) { - if( rExport.getServiceFactory().is() ) try + if( m_rContext.GetServiceFactory().is() ) try { const_cast< XMLSettingsExportHelper* >(this)->mxStringSubsitution = uno::Reference< util::XStringSubstitution >::query( - rExport.getServiceFactory()-> + m_rContext.GetServiceFactory()-> createInstance(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.PathSubstitution" ) ) ) ); } catch( uno::Exception& ) { + DBG_UNHANDLED_EXCEPTION(); } } diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx index 8732c143e1..a87141adf2 100644 --- a/xmloff/source/core/xmlexp.cxx +++ b/xmloff/source/core/xmlexp.cxx @@ -53,6 +53,7 @@ #include <xmloff/xmlexp.hxx> #include <xmloff/xmlnumfe.hxx> #include <xmloff/xmlmetae.hxx> +#include <xmloff/XMLSettingsExportContext.hxx> #include <xmloff/families.hxx> #include <xmloff/XMLEventExport.hxx> #include "XMLStarBasicExportHandler.hxx" @@ -157,6 +158,72 @@ const XMLServiceMapEntry_Impl aServiceMap[] = //============================================================================== +class SAL_DLLPRIVATE SettingsExportFacade : public ::xmloff::XMLSettingsExportContext +{ +public: + SettingsExportFacade( SvXMLExport& i_rExport ) + :m_rExport( i_rExport ) + { + } + + virtual ~SettingsExportFacade() + { + } + + virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, + const ::rtl::OUString& i_rValue ); + virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, + enum ::xmloff::token::XMLTokenEnum i_eValue ); + + virtual void StartElement( enum ::xmloff::token::XMLTokenEnum i_eName, + const sal_Bool i_bIgnoreWhitespace ); + virtual void EndElement( const sal_Bool i_bIgnoreWhitespace ); + + virtual void Characters( const ::rtl::OUString& i_rCharacters ); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > + GetServiceFactory() const; +private: + SvXMLExport& m_rExport; + ::std::stack< ::rtl::OUString > m_aElements; +}; + +void SettingsExportFacade::AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, const ::rtl::OUString& i_rValue ) +{ + m_rExport.AddAttribute( XML_NAMESPACE_CONFIG, i_eName, i_rValue ); +} + +void SettingsExportFacade::AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, enum ::xmloff::token::XMLTokenEnum i_eValue ) +{ + m_rExport.AddAttribute( XML_NAMESPACE_CONFIG, i_eName, i_eValue ); +} + +void SettingsExportFacade::StartElement( enum ::xmloff::token::XMLTokenEnum i_eName, const sal_Bool i_bIgnoreWhitespace ) +{ + const ::rtl::OUString sElementName( m_rExport.GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_CONFIG, GetXMLToken( i_eName ) ) ); + m_rExport.StartElement( sElementName, i_bIgnoreWhitespace ); + m_aElements.push( sElementName ); +} + +void SettingsExportFacade::EndElement( const sal_Bool i_bIgnoreWhitespace ) +{ + const ::rtl::OUString sElementName( m_aElements.top() ); + m_rExport.EndElement( sElementName, i_bIgnoreWhitespace ); + m_aElements.pop(); +} + +void SettingsExportFacade::Characters( const ::rtl::OUString& i_rCharacters ) +{ + m_rExport.GetDocHandler()->characters( i_rCharacters ); +} + +Reference< XMultiServiceFactory > SettingsExportFacade::GetServiceFactory() const +{ + return m_rExport.getServiceFactory(); +} + +//============================================================================== + class SvXMLExportEventListener : public cppu::WeakImplHelper1< com::sun::star::lang::XEventListener > { @@ -1100,7 +1167,9 @@ void SvXMLExport::ImplExportSettings() nSettingsCount != 0, XML_NAMESPACE_OFFICE, XML_SETTINGS, sal_True, sal_True ); - XMLSettingsExportHelper aSettingsExportHelper(*this); + + SettingsExportFacade aSettingsExportContext( *this ); + XMLSettingsExportHelper aSettingsExportHelper( aSettingsExportContext ); for ( ::std::list< SettingsGroup >::const_iterator settings = aSettings.begin(); settings != aSettings.end(); @@ -1111,7 +1180,8 @@ void SvXMLExport::ImplExportSettings() continue; OUString sSettingsName( GetXMLToken( settings->eGroupName ) ); - aSettingsExportHelper.exportSettings( settings->aSettings, sSettingsName ); + OUString sQName = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_OOO, sSettingsName ); + aSettingsExportHelper.exportAllSettings( settings->aSettings, sQName ); } } } @@ -1244,6 +1314,23 @@ void SvXMLExport::SetBodyAttributes() { } +static void +lcl_AddGrddl(SvXMLExport & rExport, const sal_Int32 nExportMode) +{ + // check version >= 1.2 + switch (rExport.getDefaultVersion()) { + case SvtSaveOptions::ODFVER_011: // fall thru + case SvtSaveOptions::ODFVER_010: return; + default: break; + } + + if (EXPORT_SETTINGS != nExportMode) // meta, content, styles + { + rExport.AddAttribute( XML_NAMESPACE_GRDDL, XML_TRANSFORMATION, + OUString::createFromAscii(s_grddl_xsl) ); + } +} + sal_uInt32 SvXMLExport::exportDoc( enum ::xmloff::token::XMLTokenEnum eClass ) { bool bOwnGraphicResolver = false; @@ -1379,11 +1466,7 @@ sal_uInt32 SvXMLExport::exportDoc( enum ::xmloff::token::XMLTokenEnum eClass ) enum XMLTokenEnum eRootService = XML_TOKEN_INVALID; const sal_Int32 nExportMode = mnExportFlags & (EXPORT_META|EXPORT_STYLES|EXPORT_CONTENT|EXPORT_SETTINGS); - if ( EXPORT_SETTINGS != nExportMode ) // meta, content, styles - { - AddAttribute( XML_NAMESPACE_GRDDL, XML_TRANSFORMATION, - OUString::createFromAscii(s_grddl_xsl) ); - } + lcl_AddGrddl(*this, nExportMode); if( EXPORT_META == nExportMode ) { |