23#include <com/sun/star/container/XNameContainer.hpp>
24#include <com/sun/star/xml/AttributeData.hpp>
25#include <com/sun/star/beans/XPropertySet.hpp>
26#include <com/sun/star/beans/XPropertyState.hpp>
27#include <com/sun/star/beans/XMultiPropertySet.hpp>
28#include <com/sun/star/beans/XTolerantMultiPropertySet.hpp>
29#include <com/sun/star/beans/TolerantPropertySetResultType.hpp>
30#include <rtl/ustrbuf.hxx>
34#include <osl/diagnose.h>
56#define GET_PROP_TYPE( f ) static_cast<sal_uInt16>((f & XML_TYPE_PROP_MASK) >> XML_TYPE_PROP_SHIFT)
60struct XMLPropTokens_Impl
95struct ComparePropertyState
102class XMLPropertyStates_Impl
106 XMLPropertyStates_Impl();
108 void FillPropertyStateVector(std::vector<XMLPropertyState>& rVector);
111XMLPropertyStates_Impl::XMLPropertyStates_Impl()
115void XMLPropertyStates_Impl::AddPropertyState(
118 aPropStates.insert(rPropState);
121void XMLPropertyStates_Impl::FillPropertyStateVector(
122 std::vector<XMLPropertyState>& rVector)
124 rVector.insert( rVector.begin(), aPropStates.begin(), aPropStates.end() );
127class FilterPropertyInfo_Impl
130 std::vector<sal_uInt32> maIndexes;
134 FilterPropertyInfo_Impl( OUString aApiName,
137 const OUString& GetApiName()
const {
return msApiName; }
138 std::vector<sal_uInt32>& GetIndexes() {
return maIndexes; }
141 bool operator< (
const FilterPropertyInfo_Impl& rArg )
const
143 return (GetApiName() < rArg.GetApiName());
147FilterPropertyInfo_Impl::FilterPropertyInfo_Impl(
149 const sal_uInt32
nIndex ) :
150 msApiName(std::move( aApiName ))
152 maIndexes.push_back(
nIndex);
155typedef std::list<FilterPropertyInfo_Impl> FilterPropertyInfoList_Impl;
157class FilterPropertiesInfo_Impl
159 FilterPropertyInfoList_Impl aPropInfos;
161 std::optional<Sequence<OUString>> mxApiNames;
164 FilterPropertiesInfo_Impl();
166 void AddProperty(
const OUString& rApiName,
const sal_uInt32
nIndex);
167 const uno::Sequence<OUString>& GetApiNames();
168 void FillPropertyStateArray(
169 std::vector< XMLPropertyState >& rPropStates,
170 const Reference< XPropertySet >& xPropSet,
172 const bool bDefault);
173 sal_uInt32 GetPropertyCount()
const {
return aPropInfos.size(); }
176FilterPropertiesInfo_Impl::FilterPropertiesInfo_Impl()
180void FilterPropertiesInfo_Impl::AddProperty(
181 const OUString& rApiName,
const sal_uInt32
nIndex)
183 aPropInfos.emplace_back(rApiName,
nIndex);
185 OSL_ENSURE( !mxApiNames,
"performance warning: API names already retrieved" );
189const uno::Sequence<OUString>& FilterPropertiesInfo_Impl::GetApiNames()
202 if ( aPropInfos.size() > 1 )
204 FilterPropertyInfoList_Impl::iterator aOld = aPropInfos.begin();
205 FilterPropertyInfoList_Impl::iterator aEnd = aPropInfos.end();
206 FilterPropertyInfoList_Impl::iterator aCurrent = aOld;
209 while ( aCurrent != aEnd )
212 if ( aOld->GetApiName() == aCurrent->GetApiName() )
215 std::vector<sal_uInt32> aMerged;
216 std::merge(aOld->GetIndexes().begin(), aOld->GetIndexes().end(),
217 aCurrent->GetIndexes().begin(), aCurrent->GetIndexes().end(),
218 std::back_inserter(aMerged));
219 aOld->GetIndexes() = std::move(aMerged);
220 aCurrent->GetIndexes().clear();
222 aCurrent = aPropInfos.erase( aCurrent );
234 mxApiNames.emplace( aPropInfos.size() );
235 OUString *pNames = mxApiNames->getArray();
237 for (
auto const& propInfo : aPropInfos)
239 *pNames = propInfo.GetApiName();
247void FilterPropertiesInfo_Impl::FillPropertyStateArray(
248 std::vector< XMLPropertyState >& rPropStates,
249 const Reference< XPropertySet >& rPropSet,
251 const bool bDefault )
253 XMLPropertyStates_Impl aPropStates;
255 const uno::Sequence<OUString>& rApiNames = GetApiNames();
257 Reference < XTolerantMultiPropertySet > xTolPropSet( rPropSet, UNO_QUERY );
258 if (xTolPropSet.is())
262 Sequence < beans::GetDirectPropertyTolerantResult > aResults(xTolPropSet->getDirectPropertyValuesTolerant(rApiNames));
263 sal_Int32 nResultCount(aResults.getLength());
264 if (nResultCount > 0)
266 const beans::GetDirectPropertyTolerantResult *pResults = aResults.getConstArray();
267 FilterPropertyInfoList_Impl::iterator aPropIter(aPropInfos.begin());
269 while (nResultCount > 0 && aPropIter != aPropInfos.end())
271 if (pResults->Name == aPropIter->GetApiName())
274 aNewProperty.
maValue = pResults->Value;
276 for (
auto const&
index : aPropIter->GetIndexes())
279 aPropStates.AddPropertyState( aNewProperty );
290 const Sequence < beans::GetPropertyTolerantResult > aResults(xTolPropSet->getPropertyValuesTolerant(rApiNames));
291 OSL_ENSURE( rApiNames.getLength() == aResults.getLength(),
"wrong implemented XTolerantMultiPropertySet" );
292 FilterPropertyInfoList_Impl::iterator aPropIter(aPropInfos.begin());
294 OSL_ENSURE( aPropInfos.size() ==
static_cast<sal_uInt32
>(aResults.getLength()),
"wrong implemented XTolerantMultiPropertySet??" );
295 for(
const auto& rResult : aResults )
297 if ((rResult.Result == beans::TolerantPropertySetResultType::SUCCESS) &&
298 ((rResult.State == PropertyState_DIRECT_VALUE) || (rResult.State == PropertyState_DEFAULT_VALUE)))
301 aNewProperty.
maValue = rResult.Value;
303 for (
auto const&
index : aPropIter->GetIndexes())
306 aPropStates.AddPropertyState( aNewProperty );
315 Sequence < PropertyState > aStates;
316 const PropertyState *pStates =
nullptr;
317 Reference< XPropertyState > xPropState( rPropSet, UNO_QUERY );
318 if( xPropState.is() )
320 aStates = xPropState->getPropertyStates( rApiNames );
321 pStates = aStates.getConstArray();
324 Reference < XMultiPropertySet > xMultiPropSet( rPropSet, UNO_QUERY );
325 if( xMultiPropSet.is() && !bDefault )
327 Sequence < Any > aValues;
331 sal_uInt32 nValueCount = 0;
333 for (
size_t i = 0;
i < aPropInfos.size(); ++
i, ++pStates)
335 if( *pStates == PropertyState_DIRECT_VALUE )
342 Sequence < OUString > aAPINames( nValueCount );
343 OUString *pAPINames = aAPINames.getArray();
345 ::std::vector< FilterPropertyInfoList_Impl::iterator > aPropIters;
346 aPropIters.reserve( nValueCount );
348 FilterPropertyInfoList_Impl::iterator aItr = aPropInfos.begin();
349 OSL_ENSURE(aItr != aPropInfos.end(),
"Invalid iterator!");
351 pStates = aStates.getConstArray();
353 while(
i < nValueCount )
355 if( *pStates == PropertyState_DIRECT_VALUE )
357 *pAPINames++ = aItr->GetApiName();
358 aPropIters.push_back( aItr );
365 aValues = xMultiPropSet->getPropertyValues( aAPINames );
368 ::std::vector< FilterPropertyInfoList_Impl::iterator >::const_iterator
369 pPropIter = aPropIters.begin();
372 for(
i = 0;
i < nValueCount; ++
i )
377 for (
auto const&
index : (*pPropIter)->GetIndexes())
380 aPropStates.AddPropertyState( aNewProperty );
390 aValues = xMultiPropSet->getPropertyValues( rApiNames );
393 FilterPropertyInfoList_Impl::iterator aItr = aPropInfos.begin();
394 for (
size_t i = 0;
i < aPropInfos.size(); ++
i)
400 for (
auto const&
index : aItr->GetIndexes())
403 aPropStates.AddPropertyState( aNewProperty );
411 FilterPropertyInfoList_Impl::iterator aItr = aPropInfos.begin();
412 for (
size_t i = 0;
i < aPropInfos.size(); ++
i)
415 !pStates || *pStates == PropertyState_DIRECT_VALUE;
416 if( bDirectValue || bDefault )
419 bool bGotValue =
false;
421 for (
auto const&
index : aItr->GetIndexes())
424 (rPropMapper->GetEntryFlags(
index) &
432 rPropSet->getPropertyValue( aItr->GetApiName() );
436 aPropStates.AddPropertyState( aNewProperty );
438 catch( UnknownPropertyException& )
454 aPropStates.FillPropertyStateVector(rPropStates);
461 typedef std::map<css::uno::Reference<css::beans::XPropertySetInfo>, std::unique_ptr<FilterPropertiesInfo_Impl>>
CacheType;
476 mpImpl->mxPropMapper = rMapper;
487 mpImpl->mxPropMapper->AddMapperEntry( rMapper->getPropertySetMapper() );
489 rMapper->mpImpl->mxPropMapper =
mpImpl->mxPropMapper;
495 while (xNext->mpImpl->mxNextMapper.is())
496 xNext = xNext->mpImpl->mxNextMapper;
497 xNext->mpImpl->mxNextMapper = rMapper;
500 mpImpl->mxNextMapper = rMapper;
506 while (xNext->mpImpl->mxNextMapper.is())
508 xNext = xNext->mpImpl->mxNextMapper;
509 xNext->mpImpl->mxPropMapper =
mpImpl->mxPropMapper;
515 const uno::Reference<beans::XPropertySet>& rPropSet,
bool bEnableFoFontFamily )
const
517 return Filter_(rExport, rPropSet,
false, bEnableFoFontFamily);
522 const uno::Reference<beans::XPropertySet>& rPropSet )
const
524 return Filter_(rExport, rPropSet,
true,
false);
529 const Reference<XPropertySet>& xPropSet,
bool bDefault,
bool bEnableFoFontFamily )
const
531 std::vector< XMLPropertyState > aPropStateArray;
534 Reference< XPropertySetInfo > xInfo( xPropSet->getPropertySetInfo() );
536 return aPropStateArray;
538 sal_Int32 nProps =
mpImpl->mxPropMapper->GetEntryCount();
540 FilterPropertiesInfo_Impl *pFilterInfo =
nullptr;
542 Impl::CacheType::iterator aIter =
mpImpl->maCache.find(xInfo);
543 if (aIter !=
mpImpl->maCache.end())
544 pFilterInfo = (*aIter).second.get();
546 bool bDelInfo =
false;
551 pFilterInfo =
new FilterPropertiesInfo_Impl;
552 for( sal_Int32
i=0;
i < nProps;
i++ )
556 const OUString& rAPIName =
mpImpl->mxPropMapper->GetEntryAPIName(
i );
557 const sal_Int32 nFlags =
mpImpl->mxPropMapper->GetEntryFlags(
i );
560 xInfo->hasPropertyByName( rAPIName ) ) )
563 mpImpl->mxPropMapper->GetEarliestODFVersionForExport(
i));
570 static sal_uInt16 s_OdfNs[] = {
597 static bool s_Assert(
false);
600 assert(std::is_sorted(std::begin(s_OdfNs), std::end(s_OdfNs)));
604 auto const ns(
mpImpl->mxPropMapper->GetEntryNameSpace(
i));
605 auto const iter(std::lower_bound(std::begin(s_OdfNs), std::end(s_OdfNs),
607 bool const isExtension(iter == std::end(s_OdfNs) || *iter !=
ns
614 && (nCurrentVersion < nEarliestODFVersionForExport))
615 : (nEarliestODFVersionForExport <= nCurrentVersion))
617 pFilterInfo->AddProperty(rAPIName,
i);
626 WeakReference < XPropertySetInfo > xWeakInfo( xInfo );
631 mpImpl->maCache.emplace(xInfo, std::unique_ptr<FilterPropertiesInfo_Impl>(pFilterInfo));
637 if( pFilterInfo->GetPropertyCount() )
641 pFilterInfo->FillPropertyStateArray(
642 aPropStateArray, xPropSet,
mpImpl->mxPropMapper, bDefault);
644 catch( UnknownPropertyException& )
652 if( !aPropStateArray.empty() )
653 ContextFilter(bEnableFoFontFamily, aPropStateArray, xPropSet);
660 return aPropStateArray;
664 bool bEnableFoFontFamily,
665 std::vector< XMLPropertyState >& rProperties,
666 const Reference< XPropertySet >& rPropSet )
const
669 if (
mpImpl->mxNextMapper.is())
670 mpImpl->mxNextMapper->ContextFilter(bEnableFoFontFamily, rProperties, rPropSet);
678 const std::vector< XMLPropertyState >& aProperties1,
679 const std::vector< XMLPropertyState >& aProperties2 )
const
681 if (aProperties1.size() < aProperties2.size())
683 if (aProperties1.size() > aProperties2.size())
686 sal_uInt32
nCount = aProperties1.size();
712 if (!
mpImpl->mxPropMapper->GetPropertyHandler(
728 const std::vector< XMLPropertyState >& aProperties1,
729 const std::vector< XMLPropertyState >& aProperties2 )
const
731 if (aProperties1.size() < aProperties2.size())
733 if (aProperties1.size() > aProperties2.size())
736 sal_uInt32
nCount = aProperties1.size();
792 const ::std::vector< XMLPropertyState >& rProperties,
794 bool bUseExtensionNamespaceForGraphicProperties)
const
796 exportXML(rExport, rProperties, -1, -1, nFlags, bUseExtensionNamespaceForGraphicProperties);
802 const ::std::vector< XMLPropertyState >& rProperties,
803 sal_Int32 nPropMapStartIdx, sal_Int32 nPropMapEndIdx,
804 SvXmlExportFlags nFlags,
bool bUseExtensionNamespaceForGraphicProperties)
const
806 sal_uInt16 nPropTypeFlags = 0;
810 if( 0==
i || (nPropTypeFlags & (1 << nPropType)) != 0 )
813 if (bUseExtensionNamespaceForGraphicProperties &&
823 std::vector<sal_uInt16> aIndexArray;
830 nPropMapStartIdx, nPropMapEndIdx );
833 !aIndexArray.empty() )
853 const ::std::vector< XMLPropertyState > *pProperties,
854 sal_uInt32 nIdx )
const
856 OSL_ENSURE(
mpImpl->mxNextMapper.is(),
"special item not handled in xml export");
857 if (
mpImpl->mxNextMapper.is())
858 mpImpl->mxNextMapper->handleSpecialItem(
859 rAttrList, rProperty, rUnitConverter, rNamespaceMap, pProperties, nIdx);
868 const ::std::vector< XMLPropertyState > *pProperties,
869 sal_uInt32 nIdx )
const
871 OSL_ENSURE(
mpImpl->mxNextMapper.is(),
"element item not handled in xml export");
872 if (
mpImpl->mxNextMapper.is())
873 mpImpl->mxNextMapper->handleElementItem(rExport, rProperty, nFlags, pProperties, nIdx);
880 sal_uInt16 nPropType, sal_uInt16& rPropTypeFlags,
882 const ::std::vector< XMLPropertyState >& rProperties,
885 std::vector<sal_uInt16>* pIndexArray,
886 sal_Int32 nPropMapStartIdx, sal_Int32 nPropMapEndIdx )
const
888 const sal_uInt32
nCount = rProperties.size();
891 if( -1 == nPropMapStartIdx )
892 nPropMapStartIdx = 0;
893 if( -1 == nPropMapEndIdx )
894 nPropMapEndIdx =
mpImpl->mxPropMapper->GetEntryCount();
898 sal_Int32 nPropMapIdx = rProperties[
nIndex].mnIndex;
899 if( nPropMapIdx >= nPropMapStartIdx &&
900 nPropMapIdx < nPropMapEndIdx )
902 sal_uInt32 nEFlags =
mpImpl->mxPropMapper->GetEntryFlags(nPropMapIdx);
905 "no prop type specified");
906 rPropTypeFlags |= (1 << nEPType);
907 if( nEPType == nPropType )
916 pIndexArray->push_back(
static_cast<sal_uInt16
>(
nIndex) );
922 rNamespaceMap, &rProperties,
nIndex );
936sal_Int8 CheckExtendedNamespace(std::u16string_view sXMLAttributeName, std::u16string_view sValue,
955 const ::std::vector< XMLPropertyState > *pProperties,
956 sal_uInt32 nIdx )
const
960 uno::Reference< container::XNameContainer > xAttrContainer;
961 if( (rProperty.
maValue >>= xAttrContainer) && xAttrContainer.is() )
963 std::unique_ptr<SvXMLNamespaceMap> pNewNamespaceMap;
966 const uno::Sequence< OUString > aAttribNames( xAttrContainer->getElementNames() );
968 xml::AttributeData
aData;
969 for(
const auto& rAttribName : aAttribNames )
971 xAttrContainer->getByName( rAttribName ) >>=
aData;
972 OUString sAttribName( rAttribName );
976 const sal_Int32 nColonPos =
977 rAttribName.indexOf(
':' );
978 if( nColonPos != -1 )
979 sPrefix = rAttribName.copy( 0, nColonPos );
983 OUString sNamespace(
aData.Namespace );
988 if( USHRT_MAX == nKey || pNamespaceMap->
GetNameByKey( nKey ) != sNamespace )
990 bool bAddNamespace =
false;
991 if( USHRT_MAX == nKey )
995 bAddNamespace =
true;
1007 OUString sOrigPrefix(
sPrefix );
1010 sPrefix = sOrigPrefix + OUString::number( ++
n );
1013 while( nKey != USHRT_MAX );
1015 bAddNamespace =
true;
1024 sAttribName =
sPrefix +
":" + rAttribName.subView(nColonPos+1);
1029 if( !pNewNamespaceMap )
1032 pNamespaceMap = pNewNamespaceMap.get();
1034 pNewNamespaceMap->
Add(
sPrefix, sNamespace );
1041 OSL_ENSURE( sOldValue.isEmpty(),
"alien attribute exists already" );
1043 if( sOldValue.isEmpty() )
1050 rNamespaceMap, pProperties, nIdx );
1060 bool bRemove =
false;
1067 if (
mpImpl->mxPropMapper->exportXML(aValue, rProperty, rUnitConverter))
1075 = CheckExtendedNamespace(
mpImpl->mxPropMapper->GetEntryXMLName(rProperty.
mnIndex),
1077 if (nExtendedStatus == -1)
1079 if (nExtendedStatus == 1)
1089 const ::std::vector< XMLPropertyState >& rProperties,
1091 const std::vector<sal_uInt16>& rIndexArray )
const
1093 bool bItemsExported =
false;
1094 for (
const sal_uInt16 nElement : rIndexArray)
1096 OSL_ENSURE( 0 != (
mpImpl->mxPropMapper->GetEntryFlags(
1098 "wrong mid flag!" );
1102 nFlags, &rProperties, nElement );
1103 bItemsExported =
true;
1106 if( bItemsExported )
1112 return mpImpl->mxPropMapper;
1117 mpImpl->maStyleName = rStyleName;
1122 return mpImpl->maStyleName;
const PropertyValue * pValues
const XMLTokenEnum aPropTokens[XML_PROP_TYPE_END]
const sal_uInt16 MAX_PROP_TYPES
const OUString & GetStyleName() const
std::vector< XMLPropertyState > Filter(SvXMLExport const &rExport, const css::uno::Reference< css::beans::XPropertySet > &rPropSet, bool bEnableFoFontFamily=false) const
Filter all properties we don't want to export: Take all properties of the XPropertySet which are also...
std::unique_ptr< Impl > mpImpl
virtual void handleElementItem(SvXMLExport &rExport, const XMLPropertyState &rProperty, SvXmlExportFlags nFlags, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const
this method is called for every item that has the MID_FLAG_ELEMENT_EXPORT flag set
void ChainExportMapper(const rtl::Reference< SvXMLExportPropertyMapper > &rMapper)
bool Equals(const ::std::vector< XMLPropertyState > &aProperties1, const ::std::vector< XMLPropertyState > &aProperties2) const
Compare two arrays of XMLPropertyState.
void SetStyleName(const OUString &rStyleName)
virtual void handleSpecialItem(comphelper::AttributeList &rAttrList, const XMLPropertyState &rProperty, const SvXMLUnitConverter &rUnitConverter, const SvXMLNamespaceMap &rNamespaceMap, const ::std::vector< XMLPropertyState > *pProperties, sal_uInt32 nIdx) const
this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set
SvXMLExportPropertyMapper(const rtl::Reference< XMLPropertySetMapper > &rMapper)
std::vector< XMLPropertyState > FilterDefaults(SvXMLExport const &rExport, const css::uno::Reference< css::beans::XPropertySet > &rPropSet) const
Like Filter(), except that:
virtual ~SvXMLExportPropertyMapper() override
std::vector< XMLPropertyState > Filter_(SvXMLExport const &rExport, const css::uno::Reference< css::beans::XPropertySet > &rPropSet, bool bDefault, bool bDisableFoFontFamily) const
Filter all properties we don't want to export: Take all properties of the XPropertySet which are also...
void exportXML(SvXMLExport &rExport, const ::std::vector< XMLPropertyState > &rProperties, SvXmlExportFlags nFlags, bool bUseExtensionNamespaceForGraphicProperties=false) const
fills the given attribute list with the items in the given set void SvXMLExportPropertyMapper::export...
virtual void ContextFilter(bool bEnableFoFontFamily, ::std::vector< XMLPropertyState > &rProperties, const css::uno::Reference< css::beans::XPropertySet > &rPropSet) const
Application-specific filter.
void _exportXML(sal_uInt16 nPropType, sal_uInt16 &rPropTypeFlags, comphelper::AttributeList &rAttrList, const ::std::vector< XMLPropertyState > &rProperties, const SvXMLUnitConverter &rUnitConverter, const SvXMLNamespaceMap &rNamespaceMap, std::vector< sal_uInt16 > *pIndexArray, sal_Int32 nPropMapStartIdx, sal_Int32 nPropMapEndIdx) const
fills the given attribute list with the items in the given set
const rtl::Reference< XMLPropertySetMapper > & getPropertySetMapper() const
void exportElementItems(SvXMLExport &rExport, const ::std::vector< XMLPropertyState > &rProperties, SvXmlExportFlags nFlags, const std::vector< sal_uInt16 > &rIndexArray) const
bool LessPartial(const ::std::vector< XMLPropertyState > &aProperties1, const ::std::vector< XMLPropertyState > &aProperties2) const
Provides a partial ordering over two arrays of XMLPropertyState, Partial because implementing a full ...
const SvXMLNamespaceMap & GetNamespaceMap() const
SvtSaveOptions::ODFSaneDefaultVersion getSaneDefaultVersion() const
returns the deterministic version for odf export
void IgnorableWhitespace()
const SvXMLUnitConverter & GetMM100UnitConverter() const
comphelper::AttributeList & GetAttrList()
OUString GetQNameByKey(sal_uInt16 nKey, const OUString &rLocalName, bool bCache=true) const
const OUString & GetNameByKey(sal_uInt16 nKey) const
sal_uInt16 GetKeyByPrefix(const OUString &rPrefix) const
sal_uInt16 Add(const OUString &rPrefix, const OUString &rName, sal_uInt16 nKey=XML_NAMESPACE_UNKNOWN)
sal_uInt16 GetKeyByName(const OUString &rName) const
const OUString & GetPrefixByKey(sal_uInt16 nKey) const
the SvXMLTypeConverter converts values of various types from their internal representation to the tex...
SvtSaveOptions::ODFSaneDefaultVersion getSaneDefaultVersion() const
ODF version, only when exporting.
virtual OUString SAL_CALL getValueByName(const OUString &aName) override
void AddAttribute(const OUString &sName, const OUString &sValue)
virtual sal_Int16 SAL_CALL getLength() override
void RemoveAttribute(const OUString &sName)
#define TOOLS_WARN_EXCEPTION(area, stream)
constexpr OUStringLiteral aData
bool anyLess(css::uno::Any const &lhs, css::uno::Any const &rhs)
const sal_uInt16 XML_NAMESPACE_UNKNOWN
Handling of tokens in XML:
XMLTokenEnum
The enumeration of all XML tokens.
@ XML_TABLE_CELL_PROPERTIES
@ XML_LIST_LEVEL_PROPERTIES
@ XML_DRAWING_PAGE_PROPERTIES
@ XML_PAGE_CONTENT_BOTTOM
@ XML_HEADER_FOOTER_PROPERTIES
@ XML_TABLE_COLUMN_PROPERTIES
@ XML_PARAGRAPH_PROPERTIES
@ XML_PAGE_LAYOUT_PROPERTIES
@ XML_TABLE_ROW_PROPERTIES
bool IsXMLToken(std::u16string_view rString, enum XMLTokenEnum eToken)
compare eToken to the string
const OUString & GetXMLToken(enum XMLTokenEnum eToken)
return the OUString representation for eToken
UNOTOOLS_DLLPUBLIC SvtSaveOptions::ODFDefaultVersion GetODFDefaultVersion()
OReadStatusBarDocumentHandler::StatusBar_XML_Namespace nNamespace
rtl::Reference< XMLPropertySetMapper > mxPropMapper
std::map< css::uno::Reference< css::beans::XPropertySetInfo >, std::unique_ptr< FilterPropertiesInfo_Impl > > CacheType
rtl::Reference< SvXMLExportPropertyMapper > mxNextMapper
Smart struct to transport an Any with an index to the appropriate property-name.
bool operator<(const tSchXMLIndexWithPart &rFirst, const tSchXMLIndexWithPart &rSecond)
constexpr sal_uInt16 XML_NAMESPACE_DRAW
constexpr sal_uInt16 XML_NAMESPACE_XHTML
constexpr sal_uInt16 XML_NAMESPACE_META
constexpr sal_uInt16 XML_NAMESPACE_SMIL
constexpr sal_uInt16 XML_NAMESPACE_DC
constexpr sal_uInt16 XML_NAMESPACE_DB
constexpr sal_uInt16 XML_NAMESPACE_XLINK
constexpr sal_uInt16 XML_NAMESPACE_ANIMATION
constexpr sal_uInt16 XML_NAMESPACE_SVG
constexpr sal_uInt16 XML_NAMESPACE_TEXT
constexpr sal_uInt16 XML_NAMESPACE_FORM
constexpr sal_uInt16 XML_NAMESPACE_XFORMS
constexpr sal_uInt16 XML_NAMESPACE_DR3D
constexpr sal_uInt16 XML_NAMESPACE_CHART
constexpr sal_uInt16 XML_NAMESPACE_XML
constexpr sal_uInt16 XML_NAMESPACE_TABLE
constexpr sal_uInt16 XML_NAMESPACE_LO_EXT
constexpr sal_uInt16 XML_NAMESPACE_OFFICE
constexpr sal_uInt16 XML_NAMESPACE_PRESENTATION
constexpr sal_uInt16 XML_NAMESPACE_CONFIG
constexpr sal_uInt16 XML_NAMESPACE_MATH
constexpr sal_uInt16 XML_NAMESPACE_GRDDL
constexpr sal_uInt16 XML_NAMESPACE_STYLE
constexpr sal_uInt16 XML_NAMESPACE_SCRIPT
constexpr sal_uInt16 XML_NAMESPACE_FO
constexpr sal_uInt16 XML_NAMESPACE_NUMBER
#define XML_TYPE_PROP_RUBY
#define XML_TYPE_PROP_SECTION
#define XML_TYPE_PROP_SHIFT
#define XML_TYPE_PROP_GRAPHIC
#define MID_FLAG_ELEMENT_ITEM_EXPORT
#define XML_TYPE_PROP_CHART
#define XML_TYPE_PROP_TABLE_CELL
#define XML_TYPE_PROP_PARAGRAPH
#define XML_TYPE_PROP_HEADER_FOOTER
#define MID_FLAG_DEFAULT_ITEM_EXPORT
#define XML_TYPE_PROP_TEXT
#define XML_TYPE_PROP_LIST_LEVEL
#define MID_FLAG_SPECIAL_ITEM_EXPORT
#define XML_TYPE_BUILDIN_CMP
#define XML_TYPE_PROP_TABLE_COLUMN
#define XML_TYPE_PROP_TABLE
#define MID_FLAG_NO_PROPERTY_EXPORT
#define MID_FLAG_MUST_EXIST
#define XML_TYPE_PROP_DRAWING_PAGE
#define XML_TYPE_PROP_END
#define MID_FLAG_MERGE_ATTRIBUTE
#define XML_TYPE_PROP_TABLE_ROW
#define XML_TYPE_PROP_START
#define XML_TYPE_PROP_PAGE_LAYOUT