comphelper/source/xml/attributelist.cxx                     |   82 ++++-
 comphelper/source/xml/ofopxmlhelper.cxx                     |   14 
 dbaccess/source/core/recovery/storagexmlstream.cxx          |    8 
 dbaccess/source/filter/xml/xmlAutoStyle.cxx                 |    2 
 dbaccess/source/filter/xml/xmlAutoStyle.hxx                 |    2 
 dbaccess/source/filter/xml/xmlExport.cxx                    |   10 
 dbaccess/source/filter/xml/xmlExport.hxx                    |    4 
 filter/Library_t602filter.mk                                |    1 
 filter/source/t602/t602filter.cxx                           |    2 
 filter/source/t602/t602filter.hxx                           |    4 
 filter/source/xsltdialog/typedetectionexport.cxx            |   29 -
 framework/inc/acceleratorconst.h                            |    2 
 framework/inc/xml/imagesdocumenthandler.hxx                 |    1 
 framework/inc/xml/menudocumenthandler.hxx                   |    1 
 framework/inc/xml/statusbardocumenthandler.hxx              |    1 
 framework/inc/xml/toolboxconfigurationdefines.hxx           |    2 
 framework/inc/xml/toolboxdocumenthandler.hxx                |    1 
 framework/source/fwe/xml/menudocumenthandler.cxx            |   11 
 framework/source/fwe/xml/saxnamespacefilter.cxx             |    2 
 framework/source/fwe/xml/statusbardocumenthandler.cxx       |   17 -
 framework/source/fwe/xml/toolboxdocumenthandler.cxx         |    9 
 framework/source/xml/acceleratorconfigurationwriter.cxx     |   16 -
 framework/source/xml/imagesdocumenthandler.cxx              |    6 
 include/comphelper/attributelist.hxx                        |   35 +-
 include/xmloff/attrlist.hxx                                 |   74 ----
 include/xmloff/shapeexport.hxx                              |    8 
 include/xmloff/xmlaustp.hxx                                 |    4 
 include/xmloff/xmlexp.hxx                                   |    6 
 include/xmloff/xmlexppr.hxx                                 |    8 
 lotuswordpro/source/filter/xfilter/xfsaxattrlist.cxx        |    4 
 lotuswordpro/source/filter/xfilter/xfsaxattrlist.hxx        |   12 
 package/source/manifest/ManifestDefines.hxx                 |    1 
 package/source/manifest/ManifestExport.cxx                  |   34 --
 reportdesign/inc/pch/precompiled_rptxml.hxx                 |    1 
 reportdesign/source/filter/xml/xmlAutoStyle.cxx             |    2 
 reportdesign/source/filter/xml/xmlAutoStyle.hxx             |    2 
 reportdesign/source/filter/xml/xmlExport.cxx                |    4 
 reportdesign/source/filter/xml/xmlExport.hxx                |    2 
 reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx |   16 -
 reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx |    4 
 sax/source/expatwrap/sax_expat.cxx                          |    3 
 sax/source/fastparser/legacyfastparser.cxx                  |    6 
 sc/source/filter/xml/xmlexprt.cxx                           |    6 
 sc/source/filter/xml/xmlstyle.cxx                           |    8 
 sc/source/filter/xml/xmlstyle.hxx                           |    8 
 sfx2/source/doc/doctemplateslocal.cxx                       |    6 
 starmath/source/mathml/mathmlexport.cxx                     |    3 
 sw/source/filter/xml/xmlexpit.cxx                           |    7 
 sw/source/filter/xml/xmlexpit.hxx                           |    8 
 sw/source/filter/xml/xmlfmte.cxx                            |    5 
 sw/source/filter/xml/xmliteme.cxx                           |    8 
 ucb/source/ucp/webdav-curl/CurlSession.cxx                  |   10 
 unoxml/source/dom/element.cxx                               |    5 
 writerperfect/source/common/DocumentHandler.cxx             |    5 
 writerperfect/source/writer/EPUBPackage.cxx                 |    4 
 xmloff/Library_xo.mk                                        |    1 
 xmloff/inc/SchXMLAutoStylePoolP.hxx                         |    2 
 xmloff/inc/XMLChartPropertySetMapper.hxx                    |    2 
 xmloff/inc/pch/precompiled_xo.hxx                           |    1 
 xmloff/inc/pch/precompiled_xof.hxx                          |    1 
 xmloff/source/chart/PropertyMaps.cxx                        |    4 
 xmloff/source/chart/SchXMLAutoStylePoolP.cxx                |    2 
 xmloff/source/core/XMLEmbeddedObjectImportContext.cxx       |    1 
 xmloff/source/core/attrlist.cxx                             |  187 ------------
 xmloff/source/core/xmlexp.cxx                               |    7 
 xmloff/source/core/xmlimp.cxx                               |    2 
 xmloff/source/draw/sdpropls.cxx                             |    2 
 xmloff/source/draw/sdpropls.hxx                             |    2 
 xmloff/source/draw/shapeexport.cxx                          |    8 
 xmloff/source/draw/shapeimport.cxx                          |    1 
 xmloff/source/draw/ximpshap.cxx                             |    1 
 xmloff/source/forms/controlpropertymap.cxx                  |    2 
 xmloff/source/forms/controlpropertymap.hxx                  |    2 
 xmloff/source/style/PageMasterExportPropMapper.cxx          |    2 
 xmloff/source/style/PageMasterExportPropMapper.hxx          |    2 
 xmloff/source/style/xmlaustp.cxx                            |    2 
 xmloff/source/style/xmlexppr.cxx                            |    7 
 xmloff/source/table/XMLTableExport.cxx                      |    2 
 xmloff/source/text/XMLTextFrameContext.cxx                  |    1 
 xmloff/source/text/txtexppr.cxx                             |    2 
 xmloff/source/text/txtexppr.hxx                             |    2 
 xmloff/source/transform/MutableAttrList.cxx                 |   14 
 xmloff/source/transform/MutableAttrList.hxx                 |    6 
 xmloff/source/xforms/xformsexport.cxx                       |    2 
 xmlsecurity/source/helper/documentsignaturehelper.cxx       |   36 +-
 xmlsecurity/source/helper/ooxmlsecexporter.cxx              |  117 +++----
 xmlsecurity/source/helper/xmlsignaturehelper.cxx            |    5 
 xmlsecurity/source/helper/xsecctl.cxx                       |   68 ++--
 xmlsecurity/source/xmlsec/xmldocumentwrapper_xmlsecimpl.cxx |    5 
 89 files changed, 382 insertions(+), 655 deletions(-)

New commits:
commit f2f008c52aaa88329c07f441de60d6fdfce9f0b3
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Sun Jan 15 13:43:31 2023 +0300
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Sun Jan 15 12:32:29 2023 +0000

    Merge SvXMLAttributeList to comphelper::AttributeList
    
    And simplify the latter, to always use "CDATA" type (as the former did).
    "CDATA" was used in all cases but one, where an empty string was used.
    
    Change-Id: I1b3bfae40e29628e4094d9a6e58a69a66865874c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145526
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/comphelper/source/xml/attributelist.cxx 
b/comphelper/source/xml/attributelist.cxx
index a02c82f69465..69f8a2aca62c 100644
--- a/comphelper/source/xml/attributelist.cxx
+++ b/comphelper/source/xml/attributelist.cxx
@@ -19,23 +19,15 @@
 
 #include <comphelper/attributelist.hxx>
 
+#include <algorithm>
+#include <cassert>
+
 using namespace osl;
 using namespace com::sun::star;
 
 
 namespace comphelper {
 
-OUString SAL_CALL AttributeList::getTypeByName( const OUString& sName )
-{
-    for (auto const& attribute : mAttributes)
-    {
-        if( attribute.sName == sName ) {
-            return attribute.sType;
-        }
-    }
-    return OUString();
-}
-
 OUString SAL_CALL AttributeList::getValueByName(const OUString& sName)
 {
     for (auto const& attribute : mAttributes)
@@ -53,10 +45,12 @@ AttributeList::AttributeList()
     mAttributes.reserve(20);
 }
 
-AttributeList::AttributeList(const AttributeList &r)
-    : cppu::WeakImplHelper<XAttributeList, XCloneable>(r)
+AttributeList::AttributeList(const uno::Reference< xml::sax::XAttributeList>& 
rAttrList)
 {
-    mAttributes = r.mAttributes;
+    if (AttributeList* pImpl = dynamic_cast<AttributeList*>(rAttrList.get()))
+        mAttributes = pImpl->mAttributes;
+    else
+        AppendAttributeList(rAttrList);
 }
 
 AttributeList::~AttributeList()
@@ -68,6 +62,66 @@ css::uno::Reference< css::util::XCloneable > 
AttributeList::createClone()
     return new AttributeList( *this );
 }
 
+void AttributeList::AddAttribute(const OUString& sName, const OUString& sValue)
+{
+    assert(!sName.isEmpty() && "empty attribute name is invalid");
+    assert(std::count(sName.getStr(), sName.getStr() + sName.getLength(), 
u':') <= 1
+           && "too many colons");
+    // TODO: this assertion fails in tests!
+//    assert(std::none_of(mAttributes.begin(), mAttributes.end(),
+//                        [&sName](const TagAttribute& a) { return a.sName == 
sName; }));
+    mAttributes.push_back({ sName, sValue });
+}
+
+void AttributeList::RemoveAttribute(const OUString& sName)
+{
+    auto ii = std::find_if(mAttributes.begin(), mAttributes.end(),
+                           [&sName](const TagAttribute& rAttr) { return 
rAttr.sName == sName; });
+
+    if (ii != mAttributes.end())
+        mAttributes.erase(ii);
+}
+
+void AttributeList::AppendAttributeList(const 
uno::Reference<css::xml::sax::XAttributeList>& r)
+{
+    assert(r.is());
+
+    sal_Int16 nMax = r->getLength();
+    sal_Int16 nTotalSize = mAttributes.size() + nMax;
+    mAttributes.reserve(nTotalSize);
+
+    for (sal_Int16 i = 0; i < nMax; ++i)
+        AddAttribute(r->getNameByIndex(i), r->getValueByIndex(i));
+
+    assert(nTotalSize == getLength());
+}
+
+void AttributeList::SetValueByIndex(sal_Int16 i, const OUString& rValue)
+{
+    mAttributes[i].sValue = rValue;
+}
+
+void AttributeList::RemoveAttributeByIndex(sal_Int16 i)
+{
+    mAttributes.erase(mAttributes.begin() + i);
+}
+
+void AttributeList::RenameAttributeByIndex(sal_Int16 i, const OUString& 
rNewName)
+{
+    mAttributes[i].sName = rNewName;
+}
+
+sal_Int16 AttributeList::GetIndexByName(const OUString& rName) const
+{
+    auto ii = std::find_if(mAttributes.begin(), mAttributes.end(),
+                           [&rName](const TagAttribute& rAttr) { return 
rAttr.sName == rName; });
+
+    if (ii != mAttributes.end())
+        return static_cast<sal_Int16>(std::distance(mAttributes.begin(), ii));
+
+    return -1;
+}
+
 } // namespace comphelper
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/comphelper/source/xml/ofopxmlhelper.cxx 
b/comphelper/source/xml/ofopxmlhelper.cxx
index 52f6c63568a9..a2797ef3a49b 100644
--- a/comphelper/source/xml/ofopxmlhelper.cxx
+++ b/comphelper/source/xml/ofopxmlhelper.cxx
@@ -142,14 +142,12 @@ void WriteRelationsInfoSequence(
 
     OUString aRelListElement( "Relationships" );
     OUString aRelElement( "Relationship" );
-    OUString aCDATAString( "CDATA" );
     OUString aWhiteSpace( " " );
 
     // write the namespace
     rtl::Reference<AttributeList> pRootAttrList = new AttributeList;
     pRootAttrList->AddAttribute(
         "xmlns",
-        aCDATAString,
         "http://schemas.openxmlformats.org/package/2006/relationships"; );
 
     xWriter->startDocument();
@@ -168,7 +166,7 @@ void WriteRelationsInfoSequence(
                 // TODO/LATER: should the extensions be allowed?
                 throw lang::IllegalArgumentException();
             }
-            pAttrList->AddAttribute( pair.First, aCDATAString, pair.Second );
+            pAttrList->AddAttribute( pair.First, pair.Second );
         }
 
         xWriter->startElement( aRelElement, pAttrList );
@@ -199,14 +197,12 @@ void WriteContentSequence(
     static constexpr OUStringLiteral aDefaultElement(u"Default");
     static constexpr OUStringLiteral aOverrideElement(u"Override");
     static constexpr OUStringLiteral aContentTypeAttr(u"ContentType");
-    static constexpr OUStringLiteral aCDATAString(u"CDATA");
     static constexpr OUStringLiteral aWhiteSpace(u" ");
 
     // write the namespace
     rtl::Reference<AttributeList> pRootAttrList = new AttributeList;
     pRootAttrList->AddAttribute(
         "xmlns",
-        aCDATAString,
         "http://schemas.openxmlformats.org/package/2006/content-types"; );
 
     xWriter->startDocument();
@@ -215,8 +211,8 @@ void WriteContentSequence(
     for ( const beans::StringPair & pair : aDefaultsSequence )
     {
         rtl::Reference<AttributeList> pAttrList = new AttributeList;
-        pAttrList->AddAttribute( "Extension", aCDATAString, pair.First );
-        pAttrList->AddAttribute( aContentTypeAttr, aCDATAString, pair.Second );
+        pAttrList->AddAttribute( "Extension", pair.First );
+        pAttrList->AddAttribute( aContentTypeAttr, pair.Second );
 
         xWriter->startElement( aDefaultElement, pAttrList  );
         xWriter->ignorableWhitespace( aWhiteSpace );
@@ -226,8 +222,8 @@ void WriteContentSequence(
     for ( const beans::StringPair & pair : aOverridesSequence )
     {
         rtl::Reference<AttributeList> pAttrList = new AttributeList;
-        pAttrList->AddAttribute( "PartName", aCDATAString, pair.First );
-        pAttrList->AddAttribute( aContentTypeAttr, aCDATAString, pair.Second );
+        pAttrList->AddAttribute( "PartName", pair.First );
+        pAttrList->AddAttribute( aContentTypeAttr, pair.Second );
 
         xWriter->startElement( aOverrideElement, pAttrList );
         xWriter->ignorableWhitespace( aWhiteSpace );
diff --git a/dbaccess/source/core/recovery/storagexmlstream.cxx 
b/dbaccess/source/core/recovery/storagexmlstream.cxx
index a4a88fa0df8f..98e238265b99 100644
--- a/dbaccess/source/core/recovery/storagexmlstream.cxx
+++ b/dbaccess/source/core/recovery/storagexmlstream.cxx
@@ -25,8 +25,8 @@
 #include <com/sun/star/xml/sax/Writer.hpp>
 
 #include <rtl/ref.hxx>
+#include <comphelper/attributelist.hxx>
 #include <comphelper/diagnose_ex.hxx>
-#include <xmloff/attrlist.hxx>
 
 #include <stack>
 
@@ -48,7 +48,7 @@ namespace dbaccess
     {
         Reference< XDocumentHandler >           xHandler;
         std::stack< OUString >         aElements;
-        ::rtl::Reference< SvXMLAttributeList >  xAttributes;
+        ::rtl::Reference<comphelper::AttributeList>  xAttributes;
     };
 
     // StorageXMLOutputStream
@@ -64,7 +64,7 @@ namespace dbaccess
         m_pData->xHandler.set( xSaxWriter, UNO_QUERY_THROW );
         m_pData->xHandler->startDocument();
 
-        m_pData->xAttributes = new SvXMLAttributeList;
+        m_pData->xAttributes = new comphelper::AttributeList;
     }
 
     StorageXMLOutputStream::~StorageXMLOutputStream()
@@ -89,7 +89,7 @@ namespace dbaccess
         ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "no document handler" );
 
         m_pData->xHandler->startElement( i_rElementName, m_pData->xAttributes 
);
-        m_pData->xAttributes = new SvXMLAttributeList;
+        m_pData->xAttributes = new comphelper::AttributeList;
         m_pData->aElements.push( i_rElementName );
     }
 
diff --git a/dbaccess/source/filter/xml/xmlAutoStyle.cxx 
b/dbaccess/source/filter/xml/xmlAutoStyle.cxx
index 99101567111a..f55e620ec1d6 100644
--- a/dbaccess/source/filter/xml/xmlAutoStyle.cxx
+++ b/dbaccess/source/filter/xml/xmlAutoStyle.cxx
@@ -27,7 +27,7 @@ namespace dbaxml
     using namespace ::com::sun::star::xml::sax;
 
 void OXMLAutoStylePoolP::exportStyleAttributes(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             XmlStyleFamily nFamily,
             const std::vector< XMLPropertyState >& rProperties,
             const SvXMLExportPropertyMapper& rPropExp
diff --git a/dbaccess/source/filter/xml/xmlAutoStyle.hxx 
b/dbaccess/source/filter/xml/xmlAutoStyle.hxx
index 54748a22c307..d358b50f7230 100644
--- a/dbaccess/source/filter/xml/xmlAutoStyle.hxx
+++ b/dbaccess/source/filter/xml/xmlAutoStyle.hxx
@@ -28,7 +28,7 @@ namespace dbaxml
         ODBExport& rODBExport;
 
         virtual void exportStyleAttributes(
-                SvXMLAttributeList& rAttrList,
+                comphelper::AttributeList& rAttrList,
                 XmlStyleFamily nFamily,
                 const std::vector< XMLPropertyState >& rProperties,
                 const SvXMLExportPropertyMapper& rPropExp,
diff --git a/dbaccess/source/filter/xml/xmlExport.cxx 
b/dbaccess/source/filter/xml/xmlExport.cxx
index 48e3051cb694..aeb2d82bbd03 100644
--- a/dbaccess/source/filter/xml/xmlExport.cxx
+++ b/dbaccess/source/filter/xml/xmlExport.cxx
@@ -127,7 +127,7 @@ namespace dbaxml
         /** this method is called for every item that has the
         MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
         virtual void handleSpecialItem(
-                SvXMLAttributeList& /*rAttrList*/,
+                comphelper::AttributeList& /*rAttrList*/,
                 const XMLPropertyState& /*rProperty*/,
                 const SvXMLUnitConverter& /*rUnitConverter*/,
                 const SvXMLNamespaceMap& /*rNamespaceMap*/,
@@ -840,7 +840,7 @@ void ODBExport::exportTable(XPropertySet* _xProp)
     exportFilter(_xProp,PROPERTY_ORDER,XML_ORDER_STATEMENT);
 }
 
-void ODBExport::exportStyleName(XPropertySet* _xProp,SvXMLAttributeList& _rAtt)
+void ODBExport::exportStyleName(XPropertySet* 
_xProp,comphelper::AttributeList& _rAtt)
 {
     Reference<XPropertySet> xFind(_xProp);
     exportStyleName(XML_STYLE_NAME,xFind,_rAtt,m_aAutoStyleNames);
@@ -848,7 +848,7 @@ void ODBExport::exportStyleName(XPropertySet* 
_xProp,SvXMLAttributeList& _rAtt)
     
exportStyleName(XML_DEFAULT_ROW_STYLE_NAME,xFind,_rAtt,m_aRowAutoStyleNames);
 }
 
-void ODBExport::exportStyleName(const ::xmloff::token::XMLTokenEnum 
_eToken,const uno::Reference<beans::XPropertySet>& _xProp,SvXMLAttributeList& 
_rAtt,TPropertyStyleMap& _rMap)
+void ODBExport::exportStyleName(const ::xmloff::token::XMLTokenEnum 
_eToken,const uno::Reference<beans::XPropertySet>& 
_xProp,comphelper::AttributeList& _rAtt,TPropertyStyleMap& _rMap)
 {
     TPropertyStyleMap::const_iterator aFind = _rMap.find(_xProp);
     if ( aFind != _rMap.end() )
@@ -911,7 +911,7 @@ void ODBExport::exportColumns(const 
Reference<XColumnsSupplier>& _xColSup)
             if ( aFind != m_aTableDummyColumns.end() )
             {
                 SvXMLElementExport aColumns(*this,XML_NAMESPACE_DB, 
XML_COLUMNS, true, true);
-                rtl::Reference<SvXMLAttributeList> pAtt = new 
SvXMLAttributeList;
+                rtl::Reference<comphelper::AttributeList> pAtt = new 
comphelper::AttributeList;
                 exportStyleName(aFind->second.get(),*pAtt);
                 AddAttributeList(pAtt);
                 SvXMLElementExport aColumn(*this,XML_NAMESPACE_DB, XML_COLUMN, 
true, true);
@@ -929,7 +929,7 @@ void ODBExport::exportColumns(const 
Reference<XColumnsSupplier>& _xColSup)
             Reference<XPropertySet> 
xProp(xNameAccess->getByName(*pIter),UNO_QUERY);
             if ( xProp.is() )
             {
-                rtl::Reference<SvXMLAttributeList> pAtt = new 
SvXMLAttributeList;
+                rtl::Reference<comphelper::AttributeList> pAtt = new 
comphelper::AttributeList;
                 exportStyleName(xProp.get(),*pAtt);
 
                 bool bHidden = 
getBOOL(xProp->getPropertyValue(PROPERTY_HIDDEN));
diff --git a/dbaccess/source/filter/xml/xmlExport.hxx 
b/dbaccess/source/filter/xml/xmlExport.hxx
index f852e39fba43..4cded949d419 100644
--- a/dbaccess/source/filter/xml/xmlExport.hxx
+++ b/dbaccess/source/filter/xml/xmlExport.hxx
@@ -123,8 +123,8 @@ class ODBExport : public SvXMLExport
     void                    exportReports();
     void                    exportQueries(bool _bExportContext);
     void                    exportTables(bool _bExportContext);
-    void                    exportStyleName(XPropertySet* 
_xProp,SvXMLAttributeList& _rAtt);
-    void                    exportStyleName(const 
::xmloff::token::XMLTokenEnum _eToken,const Reference<XPropertySet>& 
_xProp,SvXMLAttributeList& _rAtt,TPropertyStyleMap& _rMap);
+    void                    exportStyleName(XPropertySet* 
_xProp,comphelper::AttributeList& _rAtt);
+    void                    exportStyleName(const 
::xmloff::token::XMLTokenEnum _eToken,const Reference<XPropertySet>& 
_xProp,comphelper::AttributeList& _rAtt,TPropertyStyleMap& _rMap);
     void                    exportCollection(const Reference< XNameAccess >& 
_xCollection
                                             ,enum 
::xmloff::token::XMLTokenEnum _eComponents
                                             ,enum 
::xmloff::token::XMLTokenEnum _eSubComponents
diff --git a/filter/Library_t602filter.mk b/filter/Library_t602filter.mk
index f8ad92b9680e..027709c4c6e2 100644
--- a/filter/Library_t602filter.mk
+++ b/filter/Library_t602filter.mk
@@ -34,6 +34,7 @@ $(eval $(call gb_Library_use_libraries,t602filter,\
        xo \
        tl \
        utl \
+       comphelper \
        cppuhelper \
        cppu \
        sal \
diff --git a/filter/source/t602/t602filter.cxx 
b/filter/source/t602/t602filter.cxx
index f26875347023..17acea9d966b 100644
--- a/filter/source/t602/t602filter.cxx
+++ b/filter/source/t602/t602filter.cxx
@@ -248,7 +248,7 @@ bool T602ImportFilter::importImpl( const Sequence< 
css::beans::PropertyValue >&
     auto const fs = OUString(OUString::number(inistruct::fontsize) + "pt");
     auto const fs2 = OUString(OUString::number(2*inistruct::fontsize) + "pt");
 
-    mpAttrList = new SvXMLAttributeList;
+    mpAttrList = new comphelper::AttributeList;
 
     Reference < XAttributeList > xAttrList ( mpAttrList );
 
diff --git a/filter/source/t602/t602filter.hxx 
b/filter/source/t602/t602filter.hxx
index cd92a22fdf3c..93efc45c28ed 100644
--- a/filter/source/t602/t602filter.hxx
+++ b/filter/source/t602/t602filter.hxx
@@ -29,8 +29,8 @@
 #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
 #include <com/sun/star/xml/sax/XDocumentHandler.hpp>
 #include <com/sun/star/uno/XComponentContext.hpp>
+#include <comphelper/attributelist.hxx>
 #include <cppuhelper/implbase.hxx>
-#include <xmloff/attrlist.hxx>
 #include <rtl/ref.hxx>
 
 namespace T602ImportFilter {
@@ -118,7 +118,7 @@ private:
     css::uno::Reference< css::lang::XComponent >         mxDoc;
     css::uno::Reference < css::io::XInputStream >        mxInputStream;
 
-    rtl::Reference<SvXMLAttributeList> mpAttrList;
+    rtl::Reference<comphelper::AttributeList> mpAttrList;
 
     tnode node;         // START
 
diff --git a/filter/source/xsltdialog/typedetectionexport.cxx 
b/filter/source/xsltdialog/typedetectionexport.cxx
index 0f86af1cbc5a..af367ec8a483 100644
--- a/filter/source/xsltdialog/typedetectionexport.cxx
+++ b/filter/source/xsltdialog/typedetectionexport.cxx
@@ -90,7 +90,6 @@ void TypeDetectionExporter::doExport( const Reference< 
XOutputStream >& xOS,  co
         static const OUStringLiteral sDocTypePrefix       ( u"doctype:" );
         static const OUStringLiteral sFilterAdaptorService( 
u"com.sun.star.comp.Writer.XmlFilterAdaptor" );
         static const OUStringLiteral sXSLTFilterService   ( 
u"com.sun.star.documentconversion.XSLTFilter" );
-        static const OUStringLiteral sCdataAttribute      ( u"CDATA" );
 
 
         // set up sax writer and connect to given output stream
@@ -98,10 +97,10 @@ void TypeDetectionExporter::doExport( const Reference< 
XOutputStream >& xOS,  co
         xHandler->setOutputStream( xOS );
 
         rtl::Reference<::comphelper::AttributeList> pAttrList = new 
::comphelper::AttributeList;
-        pAttrList->AddAttribute ( "xmlns:oor", sCdataAttribute, 
"http://openoffice.org/2001/registry"; );
-        pAttrList->AddAttribute ( "xmlns:xs", sCdataAttribute, 
"http://www.w3.org/2001/XMLSchema"; );
-        pAttrList->AddAttribute ( sName, sCdataAttribute, "TypeDetection" );
-        pAttrList->AddAttribute ( "oor:package", sCdataAttribute, 
"org.openoffice.Office" );
+        pAttrList->AddAttribute ( "xmlns:oor", 
"http://openoffice.org/2001/registry"; );
+        pAttrList->AddAttribute ( "xmlns:xs", 
"http://www.w3.org/2001/XMLSchema"; );
+        pAttrList->AddAttribute ( sName, "TypeDetection" );
+        pAttrList->AddAttribute ( "oor:package", "org.openoffice.Office" );
 
         xHandler->startDocument();
         xHandler->ignorableWhitespace ( sWhiteSpace );
@@ -110,14 +109,14 @@ void TypeDetectionExporter::doExport( const Reference< 
XOutputStream >& xOS,  co
         // export types
         {
             pAttrList = new ::comphelper::AttributeList;
-            pAttrList->AddAttribute ( sName, sCdataAttribute, "Types" );
+            pAttrList->AddAttribute ( sName, "Types" );
             xHandler->ignorableWhitespace ( sWhiteSpace );
             xHandler->startElement( sNode, pAttrList );
 
             for (auto const& filter : rFilters)
             {
                 pAttrList = new ::comphelper::AttributeList;
-                pAttrList->AddAttribute( sName, sCdataAttribute, 
filter->maType );
+                pAttrList->AddAttribute( sName, filter->maType );
                 xHandler->ignorableWhitespace ( sWhiteSpace );
                 xHandler->startElement( sNode, pAttrList );
                 OUString sValue = "0" + sComma + sComma;
@@ -141,14 +140,14 @@ void TypeDetectionExporter::doExport( const Reference< 
XOutputStream >& xOS,  co
         // export filters
         {
             pAttrList = new ::comphelper::AttributeList;
-            pAttrList->AddAttribute ( sName, sCdataAttribute, "Filters" );
+            pAttrList->AddAttribute ( sName, "Filters" );
             xHandler->ignorableWhitespace ( sWhiteSpace );
             xHandler->startElement( sNode, pAttrList );
 
             for (auto const& filter : rFilters)
             {
                 pAttrList = new ::comphelper::AttributeList;
-                pAttrList->AddAttribute( sName, sCdataAttribute, 
filter->maFilterName );
+                pAttrList->AddAttribute( sName, filter->maFilterName );
                 xHandler->ignorableWhitespace ( sWhiteSpace );
                 xHandler->startElement( sNode, pAttrList );
                 addLocaleProperty( xHandler, sUIName, filter->maInterfaceName 
);
@@ -207,14 +206,13 @@ void TypeDetectionExporter::addProperty( const Reference< 
XWriter >& xHandler, c
 {
     try
     {
-        static const OUStringLiteral sCdataAttribute( u"CDATA" );
         static const OUStringLiteral sProp( u"prop" );
         static const OUStringLiteral sValue( u"value" );
         static const OUStringLiteral sWhiteSpace          ( u" " );
 
         rtl::Reference<::comphelper::AttributeList>pAttrList = new 
::comphelper::AttributeList;
-        pAttrList->AddAttribute ( "oor:name", sCdataAttribute, rName );
-        pAttrList->AddAttribute ( "oor:type", sCdataAttribute, "xs:string" );
+        pAttrList->AddAttribute ( "oor:name", rName );
+        pAttrList->AddAttribute ( "oor:type", "xs:string" );
 
         xHandler->ignorableWhitespace ( sWhiteSpace );
         xHandler->startElement( sProp, pAttrList );
@@ -235,19 +233,18 @@ void TypeDetectionExporter::addLocaleProperty( const 
Reference< XWriter >& xHand
 {
     try
     {
-        static const OUStringLiteral sCdataAttribute( u"CDATA" );
         static const OUStringLiteral sProp( u"prop" );
         static const OUStringLiteral sValue( u"value" );
         static const OUStringLiteral sWhiteSpace          ( u" " );
 
         rtl::Reference<::comphelper::AttributeList> pAttrList = new 
::comphelper::AttributeList;
-        pAttrList->AddAttribute ( "oor:name", sCdataAttribute, rName );
-        pAttrList->AddAttribute ( "oor:type", sCdataAttribute, "xs:string" );
+        pAttrList->AddAttribute ( "oor:name", rName );
+        pAttrList->AddAttribute ( "oor:type", "xs:string" );
 
         xHandler->ignorableWhitespace ( sWhiteSpace );
         xHandler->startElement( sProp, pAttrList );
         pAttrList = new ::comphelper::AttributeList;
-        pAttrList->AddAttribute ( "xml:lang", sCdataAttribute, "en-US" );
+        pAttrList->AddAttribute ( "xml:lang", "en-US" );
         xHandler->ignorableWhitespace ( sWhiteSpace );
         xHandler->startElement( sValue, pAttrList );
         xHandler->characters( rValue );
diff --git a/framework/inc/acceleratorconst.h b/framework/inc/acceleratorconst.h
index 55f9435ffa51..ee45f8ef55a1 100644
--- a/framework/inc/acceleratorconst.h
+++ b/framework/inc/acceleratorconst.h
@@ -23,8 +23,6 @@
 
 namespace framework{
 
-inline constexpr OUStringLiteral ATTRIBUTE_TYPE_CDATA = u"CDATA";
-
 // same items with a name space alias
 inline constexpr OUStringLiteral AL_ELEMENT_ACCELERATORLIST = 
u"accel:acceleratorlist";
 inline constexpr OUStringLiteral AL_ELEMENT_ITEM = u"accel:item";
diff --git a/framework/inc/xml/imagesdocumenthandler.hxx 
b/framework/inc/xml/imagesdocumenthandler.hxx
index d8cd84f4dfe4..ccdbe0e5b4cf 100644
--- a/framework/inc/xml/imagesdocumenthandler.hxx
+++ b/framework/inc/xml/imagesdocumenthandler.hxx
@@ -123,7 +123,6 @@ class OWriteImagesDocumentHandler final
         css::uno::Reference< css::xml::sax::XDocumentHandler >    
m_xWriteDocumentHandler;
         css::uno::Reference< css::xml::sax::XAttributeList >      m_xEmptyList;
         OUString                                                  
m_aXMLImageNS;
-        OUString                                                  
m_aAttributeType;
         OUString                                                  
m_aAttributeXlinkType;
         OUString                                                  
m_aAttributeValueSimple;
 };
diff --git a/framework/inc/xml/menudocumenthandler.hxx 
b/framework/inc/xml/menudocumenthandler.hxx
index f3a0238d0bd7..db72eb9171c2 100644
--- a/framework/inc/xml/menudocumenthandler.hxx
+++ b/framework/inc/xml/menudocumenthandler.hxx
@@ -213,7 +213,6 @@ class OWriteMenuDocumentHandler final
         css::uno::Reference< css::container::XIndexAccess > 
m_xMenuBarContainer;
         css::uno::Reference< css::xml::sax::XDocumentHandler > 
m_xWriteDocumentHandler;
         css::uno::Reference< css::xml::sax::XAttributeList > m_xEmptyList;
-        OUString m_aAttributeType;
         bool m_bIsMenuBar;
 };
 
diff --git a/framework/inc/xml/statusbardocumenthandler.hxx 
b/framework/inc/xml/statusbardocumenthandler.hxx
index 829cd0b9745a..ba1ef7c364f8 100644
--- a/framework/inc/xml/statusbardocumenthandler.hxx
+++ b/framework/inc/xml/statusbardocumenthandler.hxx
@@ -125,7 +125,6 @@ class OWriteStatusBarDocumentHandler final
         css::uno::Reference< css::xml::sax::XAttributeList >      m_xEmptyList;
         OUString                                                  
m_aXMLStatusBarNS;
         OUString                                                  
m_aXMLXlinkNS;
-        OUString                                                  
m_aAttributeType;
         OUString                                                  
m_aAttributeURL;
 };
 
diff --git a/framework/inc/xml/toolboxconfigurationdefines.hxx 
b/framework/inc/xml/toolboxconfigurationdefines.hxx
index 399693044ec3..95a9c9802bc1 100644
--- a/framework/inc/xml/toolboxconfigurationdefines.hxx
+++ b/framework/inc/xml/toolboxconfigurationdefines.hxx
@@ -49,8 +49,6 @@ inline constexpr OUStringLiteral ELEMENT_NS_TOOLBARSEPARATOR 
= u"toolbar:toolbar
 inline constexpr OUStringLiteral ATTRIBUTE_XMLNS_TOOLBAR = u"xmlns:toolbar";
 inline constexpr OUStringLiteral ATTRIBUTE_XMLNS_XLINK = u"xmlns:xlink";
 
-inline constexpr OUStringLiteral ATTRIBUTE_TYPE_CDATA = u"CDATA";
-
 #define ATTRIBUTE_BOOLEAN_TRUE      "true"
 inline constexpr OUStringLiteral ATTRIBUTE_BOOLEAN_FALSE  = u"false";
 
diff --git a/framework/inc/xml/toolboxdocumenthandler.hxx 
b/framework/inc/xml/toolboxdocumenthandler.hxx
index 79657e5324e4..721d02936616 100644
--- a/framework/inc/xml/toolboxdocumenthandler.hxx
+++ b/framework/inc/xml/toolboxdocumenthandler.hxx
@@ -149,7 +149,6 @@ class OWriteToolBoxDocumentHandler final
         css::uno::Reference< css::container::XIndexAccess >    m_rItemAccess;
         OUString                                               m_aXMLToolbarNS;
         OUString                                               m_aXMLXlinkNS;
-        OUString                                               
m_aAttributeType;
         OUString                                               m_aAttributeURL;
 };
 
diff --git a/framework/source/fwe/xml/menudocumenthandler.cxx 
b/framework/source/fwe/xml/menudocumenthandler.cxx
index cfb4e9f971c7..05b8d6257eff 100644
--- a/framework/source/fwe/xml/menudocumenthandler.cxx
+++ b/framework/source/fwe/xml/menudocumenthandler.cxx
@@ -64,8 +64,6 @@ constexpr OUStringLiteral ATTRIBUTE_NS_STYLE = u"menu:style";
 
 constexpr OUStringLiteral ATTRIBUTE_XMLNS_MENU = u"xmlns:menu";
 
-constexpr OUStringLiteral ATTRIBUTE_TYPE_CDATA = u"CDATA";
-
 constexpr OUStringLiteral MENUBAR_DOCTYPE = u"<!DOCTYPE menu:menubar PUBLIC 
\"-//OpenOffice.org//DTD OfficeDocument 1.0//EN\" \"menubar.dtd\">";
 
 #define ATTRIBUTE_ITEMSTYLE_TEXT    "text"
@@ -720,7 +718,6 @@ OWriteMenuDocumentHandler::OWriteMenuDocumentHandler(
     m_bIsMenuBar( bIsMenuBar )
 {
     m_xEmptyList = new ::comphelper::AttributeList;
-    m_aAttributeType = ATTRIBUTE_TYPE_CDATA;
 }
 
 OWriteMenuDocumentHandler::~OWriteMenuDocumentHandler()
@@ -742,12 +739,10 @@ void OWriteMenuDocumentHandler::WriteMenuDocument()
     }
 
     pList->AddAttribute( ATTRIBUTE_XMLNS_MENU,
-                         m_aAttributeType,
                          XMLNS_MENU );
 
     if ( m_bIsMenuBar ) //FIXME
         pList->AddAttribute( ATTRIBUTE_NS_ID,
-                             m_aAttributeType,
                              "menubar" );
 
     OUString aRootElement;
@@ -793,12 +788,10 @@ void OWriteMenuDocumentHandler::WriteMenu( const 
Reference< XIndexAccess >& rMen
                     rtl::Reference<::comphelper::AttributeList> pListMenu = 
new ::comphelper::AttributeList;
 
                     pListMenu->AddAttribute( ATTRIBUTE_NS_ID,
-                                            m_aAttributeType,
                                             aCommandURL );
 
                     if ( !aLabel.isEmpty() )
                         pListMenu->AddAttribute( ATTRIBUTE_NS_LABEL,
-                                                 m_aAttributeType,
                                                  aLabel );
 
                     m_xWriteDocumentHandler->ignorableWhitespace( OUString() );
@@ -843,20 +836,17 @@ void OWriteMenuDocumentHandler::WriteMenuItem( const 
OUString& aCommandURL, cons
     rtl::Reference<::comphelper::AttributeList> pList = new 
::comphelper::AttributeList;
 
     pList->AddAttribute( ATTRIBUTE_NS_ID,
-                                m_aAttributeType,
                                 aCommandURL );
 
     if ( !aHelpURL.isEmpty() )
     {
         pList->AddAttribute( ATTRIBUTE_NS_HELPID,
-                             m_aAttributeType,
                              aHelpURL );
     }
 
     if ( !aLabel.isEmpty() )
     {
         pList->AddAttribute( ATTRIBUTE_NS_LABEL,
-                                m_aAttributeType,
                                 aLabel );
     }
     if ( nStyle > 0 )
@@ -874,7 +864,6 @@ void OWriteMenuDocumentHandler::WriteMenuItem( const 
OUString& aCommandURL, cons
             }
         }
         pList->AddAttribute( ATTRIBUTE_NS_STYLE,
-                                m_aAttributeType,
                                 aValue.makeStringAndClear() );
     }
 
diff --git a/framework/source/fwe/xml/saxnamespacefilter.cxx 
b/framework/source/fwe/xml/saxnamespacefilter.cxx
index ac1ff571c26a..b5349eb4887d 100644
--- a/framework/source/fwe/xml/saxnamespacefilter.cxx
+++ b/framework/source/fwe/xml/saxnamespacefilter.cxx
@@ -84,7 +84,7 @@ void SAL_CALL SaxNamespaceFilter::startElement(
             OUString aAttributeName           = 
xAttribs->getNameByIndex(attributeIndex);
             OUString aValue                   = 
xAttribs->getValueByIndex(attributeIndex);
             OUString aNamespaceAttributeName = 
aXMLNamespaces.applyNSToAttributeName( aAttributeName );
-            pNewList->AddAttribute( aNamespaceAttributeName, "CDATA", aValue );
+            pNewList->AddAttribute(aNamespaceAttributeName, aValue);
         }
     }
     catch ( SAXException& e )
diff --git a/framework/source/fwe/xml/statusbardocumenthandler.cxx 
b/framework/source/fwe/xml/statusbardocumenthandler.cxx
index 3786e2fbd298..09d42e9257f3 100644
--- a/framework/source/fwe/xml/statusbardocumenthandler.cxx
+++ b/framework/source/fwe/xml/statusbardocumenthandler.cxx
@@ -64,8 +64,6 @@ constexpr OUStringLiteral ELEMENT_NS_STATUSBARITEM = 
u"statusbar:statusbaritem";
 constexpr OUStringLiteral ATTRIBUTE_XMLNS_STATUSBAR = u"xmlns:statusbar";
 constexpr OUStringLiteral ATTRIBUTE_XMLNS_XLINK = u"xmlns:xlink";
 
-constexpr OUStringLiteral ATTRIBUTE_TYPE_CDATA = u"CDATA";
-
 constexpr OUStringLiteral ATTRIBUTE_BOOLEAN_TRUE = u"true";
 constexpr OUStringLiteral ATTRIBUTE_BOOLEAN_FALSE = u"false";
 
@@ -461,7 +459,6 @@ 
OWriteStatusBarDocumentHandler::OWriteStatusBarDocumentHandler(
     m_xWriteDocumentHandler( rWriteDocumentHandler )
 {
     m_xEmptyList = new ::comphelper::AttributeList;
-    m_aAttributeType    = ATTRIBUTE_TYPE_CDATA;
     m_aXMLXlinkNS       = XMLNS_XLINK_PREFIX;
     m_aXMLStatusBarNS   = XMLNS_STATUSBAR_PREFIX;
 }
@@ -485,11 +482,9 @@ void 
OWriteStatusBarDocumentHandler::WriteStatusBarDocument()
     rtl::Reference<::comphelper::AttributeList> pList = new 
::comphelper::AttributeList;
 
     pList->AddAttribute( ATTRIBUTE_XMLNS_STATUSBAR,
-                         m_aAttributeType,
                          XMLNS_STATUSBAR );
 
     pList->AddAttribute( ATTRIBUTE_XMLNS_XLINK,
-                         m_aAttributeType,
                          XMLNS_XLINK );
 
     m_xWriteDocumentHandler->startElement( ELEMENT_NS_STATUSBAR, pList );
@@ -545,25 +540,22 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem(
     }
 
     // save required attribute (URL)
-    pList->AddAttribute( m_aAttributeURL, m_aAttributeType, rCommandURL );
+    pList->AddAttribute( m_aAttributeURL, rCommandURL );
 
     // alignment
     if ( nStyle & ItemStyle::ALIGN_RIGHT )
     {
         pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_ALIGN,
-                             m_aAttributeType,
                              ATTRIBUTE_ALIGN_RIGHT );
     }
     else if ( nStyle & ItemStyle::ALIGN_CENTER )
     {
         pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_ALIGN,
-                             m_aAttributeType,
                              ATTRIBUTE_ALIGN_CENTER );
     }
     else
     {
         pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_ALIGN,
-                             m_aAttributeType,
                              ATTRIBUTE_ALIGN_LEFT );
     }
 
@@ -571,13 +563,11 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem(
     if ( nStyle & ItemStyle::DRAW_FLAT )
     {
         pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_STYLE,
-                             m_aAttributeType,
                              ATTRIBUTE_STYLE_FLAT );
     }
     else if ( nStyle & ItemStyle::DRAW_OUT3D )
     {
         pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_STYLE,
-                             m_aAttributeType,
                              ATTRIBUTE_STYLE_OUT );
     }
 
@@ -585,7 +575,6 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem(
     if ( nStyle & ItemStyle::AUTO_SIZE )
     {
         pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_AUTOSIZE,
-                             m_aAttributeType,
                              ATTRIBUTE_BOOLEAN_TRUE );
     }
 
@@ -593,7 +582,6 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem(
     if ( nStyle & ItemStyle::OWNER_DRAW )
     {
         pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_OWNERDRAW,
-                             m_aAttributeType,
                              ATTRIBUTE_BOOLEAN_TRUE );
     }
 
@@ -601,7 +589,6 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem(
     if ( nWidth > 0 )
     {
         pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_WIDTH,
-                             m_aAttributeType,
                              OUString::number( nWidth ) );
     }
 
@@ -609,7 +596,6 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem(
     if ( nOffset != STATUSBAR_OFFSET )
     {
         pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_OFFSET,
-                             m_aAttributeType,
                              OUString::number( nOffset ) );
     }
 
@@ -617,7 +603,6 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem(
     if ( !( nStyle & ItemStyle::MANDATORY ) )
     {
         pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_MANDATORY,
-                             m_aAttributeType,
                              ATTRIBUTE_BOOLEAN_FALSE );
     }
 
diff --git a/framework/source/fwe/xml/toolboxdocumenthandler.cxx 
b/framework/source/fwe/xml/toolboxdocumenthandler.cxx
index 62202dea611f..28005b3172ff 100644
--- a/framework/source/fwe/xml/toolboxdocumenthandler.cxx
+++ b/framework/source/fwe/xml/toolboxdocumenthandler.cxx
@@ -563,7 +563,6 @@ OWriteToolBoxDocumentHandler::OWriteToolBoxDocumentHandler(
     m_rItemAccess( rItemAccess )
 {
     m_xEmptyList = new ::comphelper::AttributeList;
-    m_aAttributeType    = ATTRIBUTE_TYPE_CDATA;
     m_aXMLXlinkNS       = XMLNS_XLINK_PREFIX;
     m_aXMLToolbarNS     = XMLNS_TOOLBAR_PREFIX;
 }
@@ -600,16 +599,13 @@ void OWriteToolBoxDocumentHandler::WriteToolBoxDocument()
     rtl::Reference<::comphelper::AttributeList> pList = new 
::comphelper::AttributeList;
 
     pList->AddAttribute( ATTRIBUTE_XMLNS_TOOLBAR,
-                         m_aAttributeType,
                          XMLNS_TOOLBAR );
 
     pList->AddAttribute( ATTRIBUTE_XMLNS_XLINK,
-                         m_aAttributeType,
                          XMLNS_XLINK );
 
     if ( !aUIName.isEmpty() )
         pList->AddAttribute( m_aXMLToolbarNS + ATTRIBUTE_UINAME,
-                             m_aAttributeType,
                              aUIName );
 
     m_xWriteDocumentHandler->startElement( ELEMENT_NS_TOOLBAR, pList );
@@ -664,19 +660,17 @@ void OWriteToolBoxDocumentHandler::WriteToolBoxItem(
     }
 
     // save required attribute (URL)
-    pList->AddAttribute( m_aAttributeURL, m_aAttributeType, rCommandURL );
+    pList->AddAttribute( m_aAttributeURL, rCommandURL );
 
     if ( !rLabel.isEmpty() )
     {
         pList->AddAttribute( m_aXMLToolbarNS + ATTRIBUTE_TEXT,
-                             m_aAttributeType,
                              rLabel );
     }
 
     if ( !bVisible )
     {
         pList->AddAttribute( m_aXMLToolbarNS + ATTRIBUTE_VISIBLE,
-                             m_aAttributeType,
                              ATTRIBUTE_BOOLEAN_FALSE );
     }
 
@@ -695,7 +689,6 @@ void OWriteToolBoxDocumentHandler::WriteToolBoxItem(
             }
         }
         pList->AddAttribute( m_aXMLToolbarNS + ATTRIBUTE_ITEMSTYLE,
-                             m_aAttributeType,
                              aValue.makeStringAndClear() );
     }
 
diff --git a/framework/source/xml/acceleratorconfigurationwriter.cxx 
b/framework/source/xml/acceleratorconfigurationwriter.cxx
index 04e50f5ae6a7..645fd479c329 100644
--- a/framework/source/xml/acceleratorconfigurationwriter.cxx
+++ b/framework/source/xml/acceleratorconfigurationwriter.cxx
@@ -52,10 +52,10 @@ void AcceleratorConfigurationWriter::flush()
     rtl::Reference<::comphelper::AttributeList> pAttribs = new 
::comphelper::AttributeList;
 
     pAttribs->AddAttribute(
-        "xmlns:accel", ATTRIBUTE_TYPE_CDATA,
+        "xmlns:accel",
         "http://openoffice.org/2001/accel";);
     pAttribs->AddAttribute(
-        "xmlns:xlink", ATTRIBUTE_TYPE_CDATA, "http://www.w3.org/1999/xlink";);
+        "xmlns:xlink", "http://www.w3.org/1999/xlink";);
 
     // generate xml
     xExtendedCFG->startDocument();
@@ -96,20 +96,20 @@ void 
AcceleratorConfigurationWriter::impl_ts_writeKeyCommandPair(const css::awt:
     OUString sKey = KeyMapping::get().mapCodeToIdentifier(aKey.KeyCode);
     // TODO check if key is empty!
 
-    pAttribs->AddAttribute("accel:code", ATTRIBUTE_TYPE_CDATA, sKey    );
-    pAttribs->AddAttribute("xlink:href", ATTRIBUTE_TYPE_CDATA, sCommand);
+    pAttribs->AddAttribute("accel:code", sKey    );
+    pAttribs->AddAttribute("xlink:href", sCommand);
 
     if ((aKey.Modifiers & css::awt::KeyModifier::SHIFT) == 
css::awt::KeyModifier::SHIFT)
-        pAttribs->AddAttribute("accel:shift", ATTRIBUTE_TYPE_CDATA, "true");
+        pAttribs->AddAttribute("accel:shift", "true");
 
     if ((aKey.Modifiers & css::awt::KeyModifier::MOD1) == 
css::awt::KeyModifier::MOD1)
-        pAttribs->AddAttribute("accel:mod1", ATTRIBUTE_TYPE_CDATA, "true");
+        pAttribs->AddAttribute("accel:mod1", "true");
 
     if ((aKey.Modifiers & css::awt::KeyModifier::MOD2) == 
css::awt::KeyModifier::MOD2)
-        pAttribs->AddAttribute("accel:mod2", ATTRIBUTE_TYPE_CDATA, "true");
+        pAttribs->AddAttribute("accel:mod2", "true");
 
     if ((aKey.Modifiers & css::awt::KeyModifier::MOD3) == 
css::awt::KeyModifier::MOD3)
-        pAttribs->AddAttribute("accel:mod3", ATTRIBUTE_TYPE_CDATA, "true");
+        pAttribs->AddAttribute("accel:mod3", "true");
 
     xConfig->ignorableWhitespace(OUString());
     xConfig->startElement(AL_ELEMENT_ITEM, pAttribs);
diff --git a/framework/source/xml/imagesdocumenthandler.cxx 
b/framework/source/xml/imagesdocumenthandler.cxx
index ebdd5366f240..962c0a8bbd0e 100644
--- a/framework/source/xml/imagesdocumenthandler.cxx
+++ b/framework/source/xml/imagesdocumenthandler.cxx
@@ -48,7 +48,6 @@ constexpr OUStringLiteral ELEMENT_NS_ENTRY = u"image:entry";
 #define ATTRIBUTE_MASKMODE              "maskmode"
 #define ATTRIBUTE_HIGHCONTRASTURL       "highcontrasturl"
 #define ATTRIBUTE_HIGHCONTRASTMASKURL   "highcontrastmaskurl"
-constexpr OUStringLiteral ATTRIBUTE_TYPE_CDATA = u"CDATA";
 
 constexpr OUStringLiteral ATTRIBUTE_XMLNS_IMAGE = u"xmlns:image";
 constexpr OUStringLiteral ATTRIBUTE_XMLNS_XLINK = u"xmlns:xlink";
@@ -288,7 +287,6 @@ OWriteImagesDocumentHandler::OWriteImagesDocumentHandler(
     m_xWriteDocumentHandler( rWriteDocumentHandler )
 {
     m_xEmptyList = new ::comphelper::AttributeList;
-    m_aAttributeType        = ATTRIBUTE_TYPE_CDATA;
     m_aXMLImageNS           = XMLNS_IMAGE_PREFIX;
     m_aAttributeXlinkType   = ATTRIBUTE_XLINK_TYPE;
     m_aAttributeValueSimple = ATTRIBUTE_XLINK_TYPE_VALUE;
@@ -313,11 +311,9 @@ void OWriteImagesDocumentHandler::WriteImagesDocument()
     rtl::Reference<::comphelper::AttributeList> pList = new 
::comphelper::AttributeList;
 
     pList->AddAttribute( ATTRIBUTE_XMLNS_IMAGE,
-                         m_aAttributeType,
                          XMLNS_IMAGE );
 
     pList->AddAttribute( ATTRIBUTE_XMLNS_XLINK,
-                         m_aAttributeType,
                          XMLNS_XLINK );
 
     m_xWriteDocumentHandler->startElement( ELEMENT_NS_IMAGESCONTAINER, pList );
@@ -339,7 +335,6 @@ void OWriteImagesDocumentHandler::WriteImageList( const 
ImageItemDescriptorList*
 
     // save required attributes
     pList->AddAttribute( m_aAttributeXlinkType,
-                         m_aAttributeType,
                          m_aAttributeValueSimple );
 
     m_xWriteDocumentHandler->startElement( ELEMENT_NS_IMAGES, pList );
@@ -357,7 +352,6 @@ void OWriteImagesDocumentHandler::WriteImage( const 
ImageItemDescriptor* pImage
     rtl::Reference<::comphelper::AttributeList> pList = new 
::comphelper::AttributeList;
 
     pList->AddAttribute( m_aXMLImageNS + ATTRIBUTE_COMMAND,
-                         m_aAttributeType,
                          pImage->aCommandURL );
 
     m_xWriteDocumentHandler->startElement( ELEMENT_NS_ENTRY, pList );
diff --git a/include/comphelper/attributelist.hxx 
b/include/comphelper/attributelist.hxx
index 0309ab60855e..35f9de82b590 100644
--- a/include/comphelper/attributelist.hxx
+++ b/include/comphelper/attributelist.hxx
@@ -22,7 +22,6 @@
 
 #include <sal/config.h>
 
-#include <memory>
 #include <vector>
 
 #include <com/sun/star/util/XCloneable.hpp>
@@ -33,32 +32,35 @@
 namespace comphelper
 {
 
-struct TagAttribute
-{
-    OUString sName;
-    OUString sType;
-    OUString sValue;
-};
-
 class COMPHELPER_DLLPUBLIC AttributeList final :
     public ::cppu::WeakImplHelper<css::xml::sax::XAttributeList, 
css::util::XCloneable>
 {
+    struct TagAttribute
+    {
+        OUString sName;
+        OUString sValue;
+    };
     std::vector<TagAttribute> mAttributes;
 public:
     AttributeList();
-    AttributeList(const AttributeList &r);
+    AttributeList(const AttributeList &r) = default;
+    AttributeList(const css::uno::Reference<css::xml::sax::XAttributeList>& 
rAttrList);
+    AttributeList(AttributeList&&) = delete;
 
     virtual ~AttributeList() override;
 
     // methods that are not contained in any interface
-    void AddAttribute(const OUString &sName , const OUString &sType , const 
OUString &sValue)
-    {
-        mAttributes.push_back({sName, sType, sValue});
-    }
+    void AddAttribute(const OUString &sName, const OUString &sValue);
     void Clear()
     {
         mAttributes.clear();
     }
+    void RemoveAttribute(const OUString& sName);
+    void AppendAttributeList(const css::uno::Reference< 
css::xml::sax::XAttributeList >&);
+    void SetValueByIndex(sal_Int16 i, const OUString& rValue);
+    void RemoveAttributeByIndex(sal_Int16 i);
+    void RenameAttributeByIndex(sal_Int16 i, const OUString& rNewName);
+    sal_Int16 GetIndexByName(const OUString& rName) const;
 
     // css::xml::sax::XAttributeList
     virtual sal_Int16 SAL_CALL getLength() override
@@ -69,11 +71,8 @@ public:
     {
         return mAttributes[i].sName;
     }
-    virtual OUString SAL_CALL getTypeByIndex(sal_Int16 i) override
-    {
-        return mAttributes[i].sType;
-    }
-    virtual OUString SAL_CALL getTypeByName(const OUString& aName) override;
+    virtual OUString SAL_CALL getTypeByIndex(sal_Int16) override { return 
"CDATA"; }
+    virtual OUString SAL_CALL getTypeByName(const OUString&) override { return 
"CDATA"; }
     virtual OUString SAL_CALL getValueByIndex(sal_Int16 i) override
     {
         return mAttributes[i].sValue;
diff --git a/include/xmloff/attrlist.hxx b/include/xmloff/attrlist.hxx
deleted file mode 100644
index 1261dd5c2ac9..000000000000
--- a/include/xmloff/attrlist.hxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_XMLOFF_ATTRLIST_HXX
-#define INCLUDED_XMLOFF_ATTRLIST_HXX
-
-#include <sal/config.h>
-#include <xmloff/dllapi.h>
-#include <com/sun/star/util/XCloneable.hpp>
-#include <com/sun/star/xml/sax/XAttributeList.hpp>
-
-#include <comphelper/servicehelper.hxx>
-#include <cppuhelper/implbase.hxx>
-#include <vector>
-
-class XMLOFF_DLLPUBLIC SvXMLAttributeList final : public 
::cppu::WeakImplHelper<
-        css::xml::sax::XAttributeList,
-        css::util::XCloneable>
-{
-    struct SvXMLTagAttribute_Impl
-    {
-        OUString sName;
-        OUString sValue;
-    };
-    std::vector<SvXMLTagAttribute_Impl> vecAttribute;
-public:
-    SvXMLAttributeList();
-    SvXMLAttributeList( const SvXMLAttributeList& );
-    SvXMLAttributeList( const css::uno::Reference<
-        css::xml::sax::XAttributeList> & rAttrList );
-    virtual ~SvXMLAttributeList() override;
-
-    // css::xml::sax::XAttributeList
-    virtual sal_Int16 SAL_CALL getLength() override;
-    virtual OUString SAL_CALL getNameByIndex(sal_Int16 i) override;
-    virtual OUString SAL_CALL getTypeByIndex(sal_Int16 i) override;
-    virtual OUString SAL_CALL getTypeByName(const OUString& aName) override;
-    virtual OUString SAL_CALL getValueByIndex(sal_Int16 i) override;
-    virtual OUString SAL_CALL getValueByName(const OUString& aName) override;
-
-    // css::util::XCloneable
-    virtual css::uno::Reference< css::util::XCloneable > SAL_CALL 
createClone() override;
-
-    // methods that are not contained in any interface
-    void AddAttribute( const OUString &sName , const OUString &sValue );
-    void Clear();
-    void RemoveAttribute( const OUString& sName );
-    void AppendAttributeList( const css::uno::Reference< 
css::xml::sax::XAttributeList > & );
-    void SetValueByIndex( sal_Int16 i, const OUString& rValue );
-    void RemoveAttributeByIndex( sal_Int16 i );
-    void RenameAttributeByIndex( sal_Int16 i, const OUString& rNewName );
-    sal_Int16 GetIndexByName( const OUString& rName ) const;
-};
-
-
-#endif // INCLUDED_XMLOFF_ATTRLIST_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/xmloff/shapeexport.hxx b/include/xmloff/shapeexport.hxx
index 8398bb937837..34abaf37547e 100644
--- a/include/xmloff/shapeexport.hxx
+++ b/include/xmloff/shapeexport.hxx
@@ -41,7 +41,7 @@ namespace com::sun::star::drawing { class XShape; }
 namespace com::sun::star::drawing { class XShapes; }
 
 class XMLTableExport;
-class SvXMLAttributeList;
+namespace comphelper { class AttributeList; }
 class XMLPropertyHandlerFactory;
 
 // shape export features are bits used for the nFeature
@@ -203,11 +203,11 @@ private:
     SAL_DLLPRIVATE void ImpExportPolygonShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XmlShapeType eShapeType, XMLShapeExportFlags 
nFeatures = SEF_DEFAULT, css::awt::Point* pRefPoint = nullptr );
     SAL_DLLPRIVATE void ImpExportTextBoxShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XmlShapeType eShapeType, XMLShapeExportFlags 
nFeatures = SEF_DEFAULT, css::awt::Point* pRefPoint = nullptr );
     SAL_DLLPRIVATE void ImpExportGraphicObjectShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XmlShapeType eShapeType, XMLShapeExportFlags 
nFeatures = SEF_DEFAULT, css::awt::Point* pRefPoint = nullptr );
-    SAL_DLLPRIVATE void ImpExportChartShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XmlShapeType eShapeType, XMLShapeExportFlags 
nFeatures = SEF_DEFAULT, css::awt::Point* pRefPoint = nullptr, 
SvXMLAttributeList* pAttrList = nullptr );
+    SAL_DLLPRIVATE void ImpExportChartShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XmlShapeType eShapeType, XMLShapeExportFlags 
nFeatures = SEF_DEFAULT, css::awt::Point* pRefPoint = nullptr, 
comphelper::AttributeList* pAttrList = nullptr );
     SAL_DLLPRIVATE void ImpExportControlShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XMLShapeExportFlags nFeatures = SEF_DEFAULT,  
css::awt::Point* pRefPoint = nullptr );
     SAL_DLLPRIVATE void ImpExportConnectorShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XMLShapeExportFlags nFeatures = SEF_DEFAULT, 
css::awt::Point* pRefPoint = nullptr );
     SAL_DLLPRIVATE void ImpExportMeasureShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XMLShapeExportFlags nFeatures = SEF_DEFAULT,  
css::awt::Point const * pRefPoint = nullptr );
-    SAL_DLLPRIVATE void ImpExportOLE2Shape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XmlShapeType eShapeType, XMLShapeExportFlags 
nFeatures = SEF_DEFAULT, css::awt::Point* pRefPoint = nullptr, 
SvXMLAttributeList* pAttrList = nullptr );
+    SAL_DLLPRIVATE void ImpExportOLE2Shape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XmlShapeType eShapeType, XMLShapeExportFlags 
nFeatures = SEF_DEFAULT, css::awt::Point* pRefPoint = nullptr, 
comphelper::AttributeList* pAttrList = nullptr );
     SAL_DLLPRIVATE void ImpExportPageShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XmlShapeType eShapeType, XMLShapeExportFlags 
nFeatures = SEF_DEFAULT, css::awt::Point* pRefPoint = nullptr );
     SAL_DLLPRIVATE void ImpExportCaptionShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XMLShapeExportFlags nFeatures = SEF_DEFAULT, 
css::awt::Point* pRefPoint = nullptr );
     SAL_DLLPRIVATE void ImpExport3DShape(const css::uno::Reference< 
css::drawing::XShape >& xShape, XmlShapeType eShapeType );
@@ -231,7 +231,7 @@ public:
         const css::uno::Reference < css::drawing::XShape >& xShape,
         XMLShapeExportFlags nFeatures = SEF_DEFAULT,
         css::awt::Point* pRefPoint = nullptr,
-        SvXMLAttributeList* pAttrList = nullptr
+        comphelper::AttributeList* pAttrList = nullptr
         );
 
     // This method collects all automatic styles for the shapes inside the 
given XShapes collection
diff --git a/include/xmloff/xmlaustp.hxx b/include/xmloff/xmlaustp.hxx
index a77e3fe0a570..bc21450eef65 100644
--- a/include/xmloff/xmlaustp.hxx
+++ b/include/xmloff/xmlaustp.hxx
@@ -30,7 +30,7 @@
 class SvXMLExportPropertyMapper;
 class SvXMLNamespaceMap;
 class SvXMLAutoStylePoolP_Impl;
-class SvXMLAttributeList;
+namespace comphelper { class AttributeList; }
 class SvXMLExport;
 class SvXMLUnitConverter;
 struct XMLPropertyState;
@@ -56,7 +56,7 @@ class XMLOFF_DLLPUBLIC SvXMLAutoStylePoolP : public 
salhelper::SimpleReferenceOb
 protected:
 
     virtual void exportStyleAttributes(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             XmlStyleFamily nFamily,
             const ::std::vector< XMLPropertyState >& rProperties,
             const SvXMLExportPropertyMapper& rPropExp,
diff --git a/include/xmloff/xmlexp.hxx b/include/xmloff/xmlexp.hxx
index 818f524ad545..8fd763438e81 100644
--- a/include/xmloff/xmlexp.hxx
+++ b/include/xmloff/xmlexp.hxx
@@ -25,7 +25,6 @@
 #include <sal/types.h>
 
 #include <rtl/ustring.hxx>
-#include <xmloff/attrlist.hxx>
 #include <xmloff/txtparae.hxx>
 #include <xmloff/formlayerexport.hxx>
 #include <xmloff/xmlnumfe.hxx>
@@ -45,6 +44,7 @@
 #include <unotools/securityoptions.hxx>
 
 #include <xmloff/XMLPageExport.hxx>
+#include <comphelper/attributelist.hxx>
 #include <comphelper/servicehelper.hxx>
 #include <cppuhelper/implbase.hxx>
 #include <tools/fldunit.hxx>
@@ -129,7 +129,7 @@ class XMLOFF_DLLPUBLIC SvXMLExport : public 
cppu::WeakImplHelper<
     css::uno::Reference< css::beans::XPropertySet > mxExportInfo;
     css::uno::Reference< css::lang::XEventListener > mxEventListener;
 
-    rtl::Reference<SvXMLAttributeList>          mxAttrList;        // a common 
attribute list
+    rtl::Reference<comphelper::AttributeList> mxAttrList;        // a common 
attribute list
 
     OUString     msOrigFileName; // the original URL
     OUString     msFilterName;
@@ -371,7 +371,7 @@ public:
                                   css::xml::sax::XAttributeList >& xAttrList );
 
     // Get common attribute list as implementation or interface.
-    SvXMLAttributeList &GetAttrList() { return *mxAttrList; }
+    comphelper::AttributeList &GetAttrList() { return *mxAttrList; }
     css::uno::Reference< css::xml::sax::XAttributeList > GetXAttrList() const 
{ return mxAttrList; }
 
     // Get document handler. This methods are not const, because the
diff --git a/include/xmloff/xmlexppr.hxx b/include/xmloff/xmlexppr.hxx
index a968d70e247d..53f6c558257d 100644
--- a/include/xmloff/xmlexppr.hxx
+++ b/include/xmloff/xmlexppr.hxx
@@ -48,7 +48,7 @@ namespace o3tl
 }
 
 class SvXMLUnitConverter;
-class SvXMLAttributeList;
+namespace comphelper { class AttributeList; }
 class SvXMLNamespaceMap;
 class SvXMLExport;
 
@@ -79,14 +79,14 @@ protected:
 
     /** fills the given attribute list with the items in the given set */
     void _exportXML( sal_uInt16 nPropType, sal_uInt16& rPropTypeFlags,
-                     SvXMLAttributeList& rAttrList,
+                     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;
 
-    void _exportXML( SvXMLAttributeList& rAttrList,
+    void _exportXML( comphelper::AttributeList& rAttrList,
                      const XMLPropertyState& rProperty,
                      const SvXMLUnitConverter& rUnitConverter,
                      const SvXMLNamespaceMap& rNamespaceMap,
@@ -169,7 +169,7 @@ public:
     /** this method is called for every item that has the
         MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
     virtual void handleSpecialItem(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             const XMLPropertyState& rProperty,
             const SvXMLUnitConverter& rUnitConverter,
             const SvXMLNamespaceMap& rNamespaceMap,
diff --git a/lotuswordpro/source/filter/xfilter/xfsaxattrlist.cxx 
b/lotuswordpro/source/filter/xfilter/xfsaxattrlist.cxx
index aa175d8490ff..7c87d33404ea 100644
--- a/lotuswordpro/source/filter/xfilter/xfsaxattrlist.cxx
+++ b/lotuswordpro/source/filter/xfilter/xfsaxattrlist.cxx
@@ -58,10 +58,10 @@
  * Document object of the xml filter framework.
  ************************************************************************/
 #include "xfsaxattrlist.hxx"
-#include <xmloff/attrlist.hxx>
+#include <comphelper/attributelist.hxx>
 
 XFSaxAttrList::XFSaxAttrList()
-    : m_xSvAttrList(new SvXMLAttributeList())
+    : m_xSvAttrList(new comphelper::AttributeList())
 {
 }
 
diff --git a/lotuswordpro/source/filter/xfilter/xfsaxattrlist.hxx 
b/lotuswordpro/source/filter/xfilter/xfsaxattrlist.hxx
index 4a727727d353..81e820d80d1e 100644
--- a/lotuswordpro/source/filter/xfilter/xfsaxattrlist.hxx
+++ b/lotuswordpro/source/filter/xfilter/xfsaxattrlist.hxx
@@ -60,9 +60,17 @@
 #ifndef INCLUDED_LOTUSWORDPRO_SOURCE_FILTER_XFILTER_XFSAXATTRLIST_HXX
 #define INCLUDED_LOTUSWORDPRO_SOURCE_FILTER_XFILTER_XFSAXATTRLIST_HXX
 
+#include <sal/config.h>
+
+#include <com/sun/star/xml/sax/XAttributeList.hpp>
+
 #include <xfilter/ixfattrlist.hxx>
 #include <rtl/ref.hxx>
-#include <xmloff/attrlist.hxx>
+
+namespace comphelper
+{
+class AttributeList;
+}
 
 class XFSaxAttrList : public IXFAttrList
 {
@@ -82,7 +90,7 @@ public:
     friend class XFSaxStream;
 
 private:
-    rtl::Reference<SvXMLAttributeList> m_xSvAttrList;
+    rtl::Reference<comphelper::AttributeList> m_xSvAttrList;
 };
 
 #endif //XFSAXATTRLIST_INC
diff --git a/package/source/manifest/ManifestDefines.hxx 
b/package/source/manifest/ManifestDefines.hxx
index b5006f2d1c08..f491e4cb4cf4 100644
--- a/package/source/manifest/ManifestDefines.hxx
+++ b/package/source/manifest/ManifestDefines.hxx
@@ -28,7 +28,6 @@ inline constexpr OUStringLiteral MANIFEST_NAMESPACE = 
u"http://openoffice.org/20
 inline constexpr OUStringLiteral MANIFEST_OASIS_NAMESPACE = 
u"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0";
 inline constexpr OUStringLiteral MANIFEST_LOEXT_NAMESPACE = 
u"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0";
 inline constexpr OUStringLiteral MANIFEST_DOCTYPE = u"<!DOCTYPE 
manifest:manifest PUBLIC \"-//OpenOffice.org//DTD Manifest 1.0//EN\" 
\"Manifest.dtd\">";
-inline constexpr OUStringLiteral ATTRIBUTE_CDATA = u"CDATA";
 
 inline constexpr OUStringLiteral ELEMENT_FILE_ENTRY = u"manifest:file-entry";
 inline constexpr OUStringLiteral ATTRIBUTE_FULL_PATH  = u"manifest:full-path";
diff --git a/package/source/manifest/ManifestExport.cxx 
b/package/source/manifest/ManifestExport.cxx
index 7e7f22a3adfd..938a33526d3c 100644
--- a/package/source/manifest/ManifestExport.cxx
+++ b/package/source/manifest/ManifestExport.cxx
@@ -141,7 +141,6 @@ ManifestExport::ManifestExport( uno::Reference< 
xml::sax::XDocumentHandler > con
         {
             // oasis format
             pRootAttrList->AddAttribute ( ATTRIBUTE_XMLNS,
-                                        ATTRIBUTE_CDATA,
                                         MANIFEST_OASIS_NAMESPACE );
             bAcceptNonemptyVersion = true;
             if ( aDocVersion.compareTo( ODFVER_012_TEXT ) >= 0 )
@@ -149,10 +148,9 @@ ManifestExport::ManifestExport( uno::Reference< 
xml::sax::XDocumentHandler > con
                 // this is ODF12 or later generation, let encrypted
                 // streams contain start-key-generation entry
                 bStoreStartKeyGeneration = true;
-                pRootAttrList->AddAttribute ( ATTRIBUTE_VERSION, 
ATTRIBUTE_CDATA, aDocVersion );
+                pRootAttrList->AddAttribute ( ATTRIBUTE_VERSION, aDocVersion );
                 // plus gpg4libre extensions - loext NS for that
                 pRootAttrList->AddAttribute ( ATTRIBUTE_XMLNS_LOEXT,
-                                              ATTRIBUTE_CDATA,
                                               MANIFEST_LOEXT_NAMESPACE );
             }
         }
@@ -161,7 +159,6 @@ ManifestExport::ManifestExport( uno::Reference< 
xml::sax::XDocumentHandler > con
             // even if it is no SO6 format the namespace must be specified
             // thus SO6 format is used as default one
             pRootAttrList->AddAttribute ( ATTRIBUTE_XMLNS,
-                                        ATTRIBUTE_CDATA,
                                         MANIFEST_NAMESPACE );
 
             bProvideDTD = true;
@@ -230,7 +227,6 @@ ManifestExport::ManifestExport( uno::Reference< 
xml::sax::XDocumentHandler > con
                     // TODO: the algorithm should rather be configurable
                     pNewAttrList->AddAttribute(
                         isODF13 ? OUString(ATTRIBUTE_ALGORITHM13) : 
OUString(ATTRIBUTE_ALGORITHM),
-                        ATTRIBUTE_CDATA,
                                                  
"http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"; );
                     xHandler->startElement(isODF13 ? 
OUString(ELEMENT_ENCRYPTIONMETHOD13) : OUString(ELEMENT_ENCRYPTIONMETHOD), 
pNewAttrList);
                     xHandler->endElement(isODF13 ? 
OUString(ELEMENT_ENCRYPTIONMETHOD13) : OUString(ELEMENT_ENCRYPTIONMETHOD));
@@ -301,25 +297,25 @@ ManifestExport::ManifestExport( uno::Reference< 
xml::sax::XDocumentHandler > con
             if (rValue.Name == sMediaTypeProperty )
             {
                 rValue.Value >>= aString;
-                pAttrList->AddAttribute ( ATTRIBUTE_MEDIA_TYPE, 
ATTRIBUTE_CDATA, aString );
+                pAttrList->AddAttribute ( ATTRIBUTE_MEDIA_TYPE, aString );
             }
             else if (rValue.Name == sVersionProperty )
             {
                 rValue.Value >>= aString;
                 // the version is stored only if it is not empty
                 if ( bAcceptNonemptyVersion && !aString.isEmpty() )
-                    pAttrList->AddAttribute ( ATTRIBUTE_VERSION, 
ATTRIBUTE_CDATA, aString );
+                    pAttrList->AddAttribute ( ATTRIBUTE_VERSION, aString );
             }
             else if (rValue.Name == sFullPathProperty )
             {
                 rValue.Value >>= aString;
-                pAttrList->AddAttribute ( ATTRIBUTE_FULL_PATH, 
ATTRIBUTE_CDATA, aString );
+                pAttrList->AddAttribute ( ATTRIBUTE_FULL_PATH, aString );
             }
             else if (rValue.Name == sSizeProperty )
             {
                 sal_Int64 nSize = 0;
                 rValue.Value >>= nSize;
-                pAttrList->AddAttribute ( ATTRIBUTE_SIZE, ATTRIBUTE_CDATA, 
OUString::number( nSize ) );
+                pAttrList->AddAttribute ( ATTRIBUTE_SIZE, OUString::number( 
nSize ) );
             }
             else if (rValue.Name == sInitialisationVectorProperty )
                 pVector = &rValue.Value;
@@ -361,10 +357,10 @@ ManifestExport::ManifestExport( uno::Reference< 
xml::sax::XDocumentHandler > con
             else
                 throw uno::RuntimeException( THROW_WHERE "Unexpected digest 
algorithm is provided!" );
 
-            pNewAttrList->AddAttribute ( ATTRIBUTE_CHECKSUM_TYPE, 
ATTRIBUTE_CDATA, sChecksumType );
+            pNewAttrList->AddAttribute ( ATTRIBUTE_CHECKSUM_TYPE, 
sChecksumType );
             *pDigest >>= aSequence;
             ::comphelper::Base64::encode(aBuffer, aSequence);
-            pNewAttrList->AddAttribute ( ATTRIBUTE_CHECKSUM, ATTRIBUTE_CDATA, 
aBuffer.makeStringAndClear() );
+            pNewAttrList->AddAttribute ( ATTRIBUTE_CHECKSUM, 
aBuffer.makeStringAndClear() );
 
             xHandler->startElement( ELEMENT_ENCRYPTION_DATA , pNewAttrList);
 
@@ -392,11 +388,11 @@ ManifestExport::ManifestExport( uno::Reference< 
xml::sax::XDocumentHandler > con
             else
                 throw uno::RuntimeException( THROW_WHERE "Unexpected 
encryption algorithm is provided!" );
 
-            pNewAttrList->AddAttribute ( ATTRIBUTE_ALGORITHM_NAME, 
ATTRIBUTE_CDATA, sEncAlgName );
+            pNewAttrList->AddAttribute ( ATTRIBUTE_ALGORITHM_NAME, sEncAlgName 
);
 
             *pVector >>= aSequence;
             ::comphelper::Base64::encode(aBuffer, aSequence);
-            pNewAttrList->AddAttribute ( ATTRIBUTE_INITIALISATION_VECTOR, 
ATTRIBUTE_CDATA, aBuffer.makeStringAndClear() );
+            pNewAttrList->AddAttribute ( ATTRIBUTE_INITIALISATION_VECTOR, 
aBuffer.makeStringAndClear() );
 
             xHandler->ignorableWhitespace ( sWhiteSpace );
             xHandler->startElement( ELEMENT_ALGORITHM , pNewAttrList);
@@ -427,8 +423,8 @@ ManifestExport::ManifestExport( uno::Reference< 
xml::sax::XDocumentHandler > con
                 else
                     throw uno::RuntimeException( THROW_WHERE "Unexpected start 
key algorithm is provided!" );
 
-                pNewAttrList->AddAttribute ( 
ATTRIBUTE_START_KEY_GENERATION_NAME, ATTRIBUTE_CDATA, sStartKeyAlg );
-                pNewAttrList->AddAttribute ( ATTRIBUTE_KEY_SIZE, 
ATTRIBUTE_CDATA, sStartKeySize );
+                pNewAttrList->AddAttribute ( 
ATTRIBUTE_START_KEY_GENERATION_NAME, sStartKeyAlg );
+                pNewAttrList->AddAttribute ( ATTRIBUTE_KEY_SIZE, sStartKeySize 
);
 
                 xHandler->ignorableWhitespace ( sWhiteSpace );
                 xHandler->startElement( ELEMENT_START_KEY_GENERATION , 
pNewAttrList);
@@ -442,7 +438,6 @@ ManifestExport::ManifestExport( uno::Reference< 
xml::sax::XDocumentHandler > con
             if (pKeyInfoProperty)
             {
                 pNewAttrList->AddAttribute(ATTRIBUTE_KEY_DERIVATION_NAME,
-                                           ATTRIBUTE_CDATA,
                                            sPGP_Name);
                 // no start-key-generation needed, our session key has
                 // max size already
@@ -451,23 +446,22 @@ ManifestExport::ManifestExport( uno::Reference< 
xml::sax::XDocumentHandler > con
             else
             {
                 pNewAttrList->AddAttribute(ATTRIBUTE_KEY_DERIVATION_NAME,
-                                           ATTRIBUTE_CDATA,
                                            sPBKDF2_Name);
 
                 if (bStoreStartKeyGeneration)
                 {
                     aBuffer.append(nDerivedKeySize);
-                    pNewAttrList->AddAttribute(ATTRIBUTE_KEY_SIZE, 
ATTRIBUTE_CDATA, aBuffer.makeStringAndClear());
+                    pNewAttrList->AddAttribute ( ATTRIBUTE_KEY_SIZE, 
aBuffer.makeStringAndClear() );
                 }
 
                 sal_Int32 nCount = 0;
                 *pIterationCount >>= nCount;
                 aBuffer.append(nCount);
-                pNewAttrList->AddAttribute(ATTRIBUTE_ITERATION_COUNT, 
ATTRIBUTE_CDATA, aBuffer.makeStringAndClear());
+                pNewAttrList->AddAttribute ( ATTRIBUTE_ITERATION_COUNT, 
aBuffer.makeStringAndClear() );
 
                 *pSalt >>= aSequence;
                 ::comphelper::Base64::encode(aBuffer, aSequence);
-                pNewAttrList->AddAttribute(ATTRIBUTE_SALT, ATTRIBUTE_CDATA, 
aBuffer.makeStringAndClear());
+                pNewAttrList->AddAttribute ( ATTRIBUTE_SALT, 
aBuffer.makeStringAndClear() );
             }
 
             xHandler->ignorableWhitespace(sWhiteSpace);
diff --git a/reportdesign/inc/pch/precompiled_rptxml.hxx 
b/reportdesign/inc/pch/precompiled_rptxml.hxx
index 6f130bdce3b8..5879739fa19b 100644
--- a/reportdesign/inc/pch/precompiled_rptxml.hxx
+++ b/reportdesign/inc/pch/precompiled_rptxml.hxx
@@ -93,7 +93,6 @@
 #include <unotools/saveopt.hxx>
 #include <unotools/unotoolsdllapi.h>
 #include <xmloff/ProgressBarHelper.hxx>
-#include <xmloff/attrlist.hxx>
 #include <xmloff/dllapi.h>
 #include <xmloff/families.hxx>
 #include <xmloff/maptype.hxx>
diff --git a/reportdesign/source/filter/xml/xmlAutoStyle.cxx 
b/reportdesign/source/filter/xml/xmlAutoStyle.cxx
index 0e2fbb5a4f78..d292b84bd4be 100644
--- a/reportdesign/source/filter/xml/xmlAutoStyle.cxx
+++ b/reportdesign/source/filter/xml/xmlAutoStyle.cxx
@@ -27,7 +27,7 @@ namespace rptxml
     using namespace ::com::sun::star::xml::sax;
 
 void OXMLAutoStylePoolP::exportStyleAttributes(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             XmlStyleFamily nFamily,
             const ::std::vector< XMLPropertyState >& rProperties,
             const SvXMLExportPropertyMapper& rPropExp
diff --git a/reportdesign/source/filter/xml/xmlAutoStyle.hxx 
b/reportdesign/source/filter/xml/xmlAutoStyle.hxx
index 4f0643878d6a..448ec2362bf3 100644
--- a/reportdesign/source/filter/xml/xmlAutoStyle.hxx
+++ b/reportdesign/source/filter/xml/xmlAutoStyle.hxx
@@ -30,7 +30,7 @@ namespace rptxml
         ORptExport& rORptExport;
 
         virtual void exportStyleAttributes(
-                SvXMLAttributeList& rAttrList,
+                comphelper::AttributeList& rAttrList,
                 XmlStyleFamily nFamily,
                 const ::std::vector< XMLPropertyState >& rProperties,
                 const SvXMLExportPropertyMapper& rPropExp,
diff --git a/reportdesign/source/filter/xml/xmlExport.cxx 
b/reportdesign/source/filter/xml/xmlExport.cxx
index e3bf45249a44..a6be49961a8d 100644
--- a/reportdesign/source/filter/xml/xmlExport.cxx
+++ b/reportdesign/source/filter/xml/xmlExport.cxx
@@ -136,7 +136,7 @@ namespace rptxml
         /** this method is called for every item that has the
         MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
         virtual void handleSpecialItem(
-                SvXMLAttributeList& /*rAttrList*/,
+                comphelper::AttributeList& /*rAttrList*/,
                 const XMLPropertyState& /*rProperty*/,
                 const SvXMLUnitConverter& /*rUnitConverter*/,
                 const SvXMLNamespaceMap& /*rNamespaceMap*/,
@@ -992,7 +992,7 @@ bool ORptExport::exportFormula(enum 
::xmloff::token::XMLTokenEnum eName,const OU
     return bRet;
 }
 
-void ORptExport::exportStyleName(XPropertySet* _xProp,SvXMLAttributeList& 
_rAtt,const OUString& _sName)
+void ORptExport::exportStyleName(XPropertySet* 
_xProp,comphelper::AttributeList& _rAtt,const OUString& _sName)
 {
     Reference<XPropertySet> xFind(_xProp);
     TPropertyStyleMap::const_iterator aFind = m_aAutoStyleNames.find(xFind);
diff --git a/reportdesign/source/filter/xml/xmlExport.hxx 
b/reportdesign/source/filter/xml/xmlExport.hxx
index f82d85aa7e11..130ad0b7788d 100644
--- a/reportdesign/source/filter/xml/xmlExport.hxx
+++ b/reportdesign/source/filter/xml/xmlExport.hxx
@@ -109,7 +109,7 @@ private:
     void                    exportMasterDetailFields(const 
Reference<XReportComponent>& _xReportComponent);
     void                    exportComponent(const Reference<XReportComponent>& 
_xReportComponent);
     void                    exportGroup(const Reference<XReportDefinition>& 
_xReportDefinition,sal_Int32 _nPos,bool _bExportAutoStyle = false);
-    void                    exportStyleName(XPropertySet* 
_xProp,SvXMLAttributeList& _rAtt,const OUString& _sName);
+    void                    exportStyleName(XPropertySet* 
_xProp,comphelper::AttributeList& _rAtt,const OUString& _sName);
     void                    exportSection(const Reference<XSection>& 
_xProp,bool bHeader = false);
     void                    exportContainer(const Reference< XSection>& 
_xSection);
     void                    exportShapes(const Reference< XSection>& 
_xSection,bool _bAddParagraph = true);
diff --git a/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx 
b/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
index 95cc0ffca589..3e9d2582c171 100644
--- a/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
+++ b/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
@@ -23,11 +23,11 @@
 #include <com/sun/star/chart2/data/XDatabaseDataProvider.hpp>
 #include <com/sun/star/chart/XComplexDescriptionAccess.hpp>
 #include <com/sun/star/reflection/ProxyFactory.hpp>
+#include <comphelper/attributelist.hxx>
 #include <comphelper/sequenceashashmap.hxx>
 #include <comphelper/documentconstants.hxx>
 #include <cppuhelper/supportsservice.hxx>
 #include <utility>
-#include <xmloff/attrlist.hxx>
 #include <xmloff/xmltoken.hxx>
 #include <xmloff/xmlement.hxx>
 #include <xmloff/xmluconv.hxx>
@@ -58,7 +58,7 @@ OUString lcl_createAttribute(const 
xmloff::token::XMLTokenEnum& _eNamespace,cons
 
 static void lcl_correctCellAddress(const OUString & _sName, const 
uno::Reference< xml::sax::XAttributeList > & xAttribs)
 {
-    SvXMLAttributeList* pList = 
dynamic_cast<SvXMLAttributeList*>(xAttribs.get());
+    comphelper::AttributeList* pList = 
dynamic_cast<comphelper::AttributeList*>(xAttribs.get());
     OUString sCellAddress = pList->getValueByName(_sName);
     const sal_Int32 nPos = sCellAddress.lastIndexOf('$');
     if ( nPos != -1 )
@@ -122,7 +122,7 @@ void SAL_CALL ExportDocumentHandler::startElement(const 
OUString & _sName, const
     bool bExport = true;
     if ( _sName == "office:chart" )
     {
-        rtl::Reference<SvXMLAttributeList> pList = new SvXMLAttributeList();
+        rtl::Reference<comphelper::AttributeList> pList = new 
comphelper::AttributeList();
         OUStringBuffer sValue;
         static const SvXMLEnumMapEntry<sal_uInt16> aXML_CommandTypeEnumMap[] =
         {
@@ -152,7 +152,7 @@ void SAL_CALL ExportDocumentHandler::startElement(const 
OUString & _sName, const
 
         const OUString sTableCalc = 
lcl_createAttribute(XML_NP_TABLE,XML_CALCULATION_SETTINGS);
         m_xDelegatee->startElement(sTableCalc,nullptr);
-        pList = new SvXMLAttributeList();
+        pList = new comphelper::AttributeList();
         
pList->AddAttribute(lcl_createAttribute(XML_NP_TABLE,XML_DATE_VALUE),"1899-12-30");
 
         const OUString sNullDate = 
lcl_createAttribute(XML_NP_TABLE,XML_NULL_DATE);
@@ -186,7 +186,7 @@ void SAL_CALL ExportDocumentHandler::startElement(const 
OUString & _sName, const
         bExport = false;
     else if ( _sName == "chart:plot-area" )
     {
-        SvXMLAttributeList* pList = 
dynamic_cast<SvXMLAttributeList*>(xAttribs.get());
+        comphelper::AttributeList* pList = 
dynamic_cast<comphelper::AttributeList*>(xAttribs.get());
         pList->RemoveAttribute("table:cell-range-address");
     }
     else if ( _sName == "chart:categories" )
@@ -201,7 +201,7 @@ void SAL_CALL ExportDocumentHandler::startElement(const 
OUString & _sName, const
     }
     else if ( m_bTableRowsStarted && !m_bFirstRowExported && _sName == 
"table:table-cell" )
     {
-        SvXMLAttributeList* pList = 
dynamic_cast<SvXMLAttributeList*>(xAttribs.get());
+        comphelper::AttributeList* pList = 
dynamic_cast<comphelper::AttributeList*>(xAttribs.get());
         static OUString s_sValue(lcl_createAttribute(XML_NP_OFFICE,XML_VALUE));
         pList->RemoveAttribute(s_sValue);
     }
@@ -345,7 +345,7 @@ void ExportDocumentHandler::exportTableRows()
     const OUString sFormulaAttrib( lcl_createAttribute(XML_NP_RPT,XML_FORMULA) 
);
     static constexpr OUStringLiteral s_sFloat = u"float";
 
-    rtl::Reference<SvXMLAttributeList> pCellAtt = new SvXMLAttributeList();
+    rtl::Reference<comphelper::AttributeList> pCellAtt = new 
comphelper::AttributeList();
     pCellAtt->AddAttribute(sValueType, "string");
 
     bool bRemoveString = true;
@@ -370,7 +370,7 @@ void ExportDocumentHandler::exportTableRows()
     for(const auto& rColumn : std::as_const(m_aColumns))
     {
         OUString sFormula = "field:[" + rColumn + "]";
-        rtl::Reference<SvXMLAttributeList> pList = new SvXMLAttributeList();
+        rtl::Reference<comphelper::AttributeList> pList = new 
comphelper::AttributeList();
         pList->AddAttribute(sFormulaAttrib,sFormula);
 
         m_xDelegatee->startElement(sCell,pCellAtt);
diff --git a/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx 
b/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx
index eb3da46309f8..02607a302af3 100644
--- a/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx
+++ b/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx
@@ -26,11 +26,11 @@
 #include <com/sun/star/chart/XComplexDescriptionAccess.hpp>
 #include <com/sun/star/chart/ChartDataRowSource.hpp>
 #include <com/sun/star/reflection/ProxyFactory.hpp>
+#include <comphelper/attributelist.hxx>
 #include <comphelper/sequenceashashmap.hxx>
 #include <comphelper/namedvaluecollection.hxx>
 #include <cppuhelper/supportsservice.hxx>
 #include <utility>
-#include <xmloff/attrlist.hxx>
 #include <xmloff/xmltoken.hxx>
 #include <xmloff/xmlement.hxx>
 #include <xmloff/xmluconv.hxx>
@@ -271,7 +271,7 @@ void SAL_CALL ImportDocumentHandler::startElement(const 
OUString & _sName, const
             }
         }
 
-        rtl::Reference<SvXMLAttributeList> pList = new SvXMLAttributeList();
+        rtl::Reference<comphelper::AttributeList> pList = new 
comphelper::AttributeList();
         xNewAttribs = pList;
         pList->AppendAttributeList(_xAttrList);
         
pList->AddAttribute("table:cell-range-address","local-table.$A$1:.$Z$65536");
diff --git a/sax/source/expatwrap/sax_expat.cxx 
b/sax/source/expatwrap/sax_expat.cxx
index 78b7e2252da0..146a8c4193db 100644
--- a/sax/source/expatwrap/sax_expat.cxx
+++ b/sax/source/expatwrap/sax_expat.cxx
@@ -142,8 +142,6 @@ struct Entity
 };
 
 
-constexpr OUStringLiteral gsCDATA = u"CDATA";
-
 class SaxExpatParser_Impl
 {
 public: // module scope
@@ -711,7 +709,6 @@ void SaxExpatParser_Impl::callbackStartElement( void 
*pvThis ,
         assert(awAttributes[i+1]);
         pImpl->rAttrList->AddAttribute(
             XML_CHAR_TO_OUSTRING( awAttributes[i] ) ,
-            gsCDATA,  // expat doesn't know types
             XML_CHAR_TO_OUSTRING( awAttributes[i+1] ) );
         i +=2;
     }
diff --git a/sax/source/fastparser/legacyfastparser.cxx 
b/sax/source/fastparser/legacyfastparser.cxx
index e4c425bd07d3..62e7b8a57a88 100644
--- a/sax/source/fastparser/legacyfastparser.cxx
+++ b/sax/source/fastparser/legacyfastparser.cxx
@@ -75,7 +75,7 @@ void NamespaceHandler::addNSDeclAttributes( rtl::Reference < 
comphelper::Attribu
             sDecl = "xmlns";
         else
             sDecl = "xmlns:" + rPrefix;
-        rAttrList->AddAttribute( sDecl, "CDATA", rNamespaceURI );
+        rAttrList->AddAttribute( sDecl, rNamespaceURI );
     }
     m_aNamespaceDefines.clear();
 }
@@ -233,7 +233,7 @@ void SAL_CALL CallbackDocumentHandler::startUnknownElement( 
const OUString& /*Na
         if ( !rAttrNamespacePrefix.isEmpty() )
             sAttrName = rAttrNamespacePrefix + aNamespaceSeparator + sAttrName;
 
-        rAttrList->AddAttribute( sAttrName, "CDATA", rAttrValue );
+        rAttrList->AddAttribute( sAttrName, rAttrValue );
     }
 
     const Sequence< xml::Attribute > unknownAttribs = 
Attribs->getUnknownAttributes();
@@ -242,7 +242,7 @@ void SAL_CALL CallbackDocumentHandler::startUnknownElement( 
const OUString& /*Na
         const OUString& rAttrValue = rAttr.Value;
         const OUString& rAttrName = rAttr.Name;
 
-        rAttrList->AddAttribute( rAttrName, "CDATA", rAttrValue );
+        rAttrList->AddAttribute( rAttrName, rAttrValue );
     }
     m_xDocumentHandler->startElement( Name, rAttrList );
 }
diff --git a/sc/source/filter/xml/xmlexprt.cxx 
b/sc/source/filter/xml/xmlexprt.cxx
index e164766fa677..2e35f05367ca 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -3407,7 +3407,7 @@ void ScXMLExport::ExportShape(const uno::Reference < 
drawing::XShape >& xShape,
                                     if ( !sRanges.isEmpty() )
                                     {
                                         bIsChart = true;
-                                        rtl::Reference<SvXMLAttributeList> 
pAttrList = new SvXMLAttributeList();
+                                        
rtl::Reference<comphelper::AttributeList> pAttrList = new 
comphelper::AttributeList();
                                         pAttrList->AddAttribute(
                                             GetNamespaceMap().GetQNameByKey( 
XML_NAMESPACE_DRAW, GetXMLToken( XML_NOTIFY_ON_UPDATE_OF_RANGES ) ), sRanges );
                                         GetShapeExport()->exportShape( xShape, 
SEF_DEFAULT, pPoint, pAttrList.get() );
@@ -3432,7 +3432,7 @@ void ScXMLExport::ExportShape(const uno::Reference < 
drawing::XShape >& xShape,
                                 bIsChart = true;
                                 uno::Sequence< OUString > aRepresentations(
                                     xReceiver->getUsedRangeRepresentations());
-                                rtl::Reference<SvXMLAttributeList> pAttrList;
+                                rtl::Reference<comphelper::AttributeList> 
pAttrList;
                                 try
                                 {
                                     if (aRepresentations.hasElements())
@@ -3442,7 +3442,7 @@ void ScXMLExport::ExportShape(const uno::Reference < 
drawing::XShape >& xShape,
                                         // load (when the chart is not yet 
loaded)
                                         uno::Reference< 
chart2::data::XRangeXMLConversion > xRangeConverter( 
xChartDoc->getDataProvider(), uno::UNO_QUERY );
                                         sRanges = lcl_RangeSequenceToString( 
aRepresentations, xRangeConverter );
-                                        pAttrList = new SvXMLAttributeList();
+                                        pAttrList = new 
comphelper::AttributeList();
                                         pAttrList->AddAttribute(
                                             GetNamespaceMap().GetQNameByKey( 
XML_NAMESPACE_DRAW, GetXMLToken(XML_NOTIFY_ON_UPDATE_OF_RANGES) ), sRanges );
                                     }
diff --git a/sc/source/filter/xml/xmlstyle.cxx 
b/sc/source/filter/xml/xmlstyle.cxx
index 2c4993778870..f434432c7671 100644
--- a/sc/source/filter/xml/xmlstyle.cxx
+++ b/sc/source/filter/xml/xmlstyle.cxx
@@ -511,7 +511,7 @@ void ScXMLCellExportPropertyMapper::ContextFilter(
 
 /** this method is called for every item that has the 
MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
 void ScXMLCellExportPropertyMapper::handleSpecialItem(
-            SvXMLAttributeList& /* rAttrList */,
+            comphelper::AttributeList& /* rAttrList */,
             const XMLPropertyState& /* rProperty */,
             const SvXMLUnitConverter& /* rUnitConverter */,
             const SvXMLNamespaceMap& /* rNamespaceMap */,
@@ -575,7 +575,7 @@ 
ScXMLColumnExportPropertyMapper::~ScXMLColumnExportPropertyMapper()
 
 /** this method is called for every item that has the 
MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
 void ScXMLColumnExportPropertyMapper::handleSpecialItem(
-            SvXMLAttributeList& /* rAttrList */,
+            comphelper::AttributeList& /* rAttrList */,
             const XMLPropertyState& /* rProperty */,
             const SvXMLUnitConverter& /* rUnitConverter */,
             const SvXMLNamespaceMap& /* rNamespaceMap */,
@@ -597,7 +597,7 @@ 
ScXMLTableExportPropertyMapper::~ScXMLTableExportPropertyMapper()
 
 /** this method is called for every item that has the 
MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
 void ScXMLTableExportPropertyMapper::handleSpecialItem(
-            SvXMLAttributeList& /* rAttrList */,
+            comphelper::AttributeList& /* rAttrList */,
             const XMLPropertyState& /* rProperty */,
             const SvXMLUnitConverter& /* rUnitConverter */,
             const SvXMLNamespaceMap& /* rNamespaceMap */,
@@ -608,7 +608,7 @@ void ScXMLTableExportPropertyMapper::handleSpecialItem(
 }
 
 void ScXMLAutoStylePoolP::exportStyleAttributes(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             XmlStyleFamily nFamily,
             const ::std::vector< XMLPropertyState >& rProperties,
             const SvXMLExportPropertyMapper& rPropExp
diff --git a/sc/source/filter/xml/xmlstyle.hxx 
b/sc/source/filter/xml/xmlstyle.hxx
index 4636ff4c4cf6..ed7c569b3862 100644
--- a/sc/source/filter/xml/xmlstyle.hxx
+++ b/sc/source/filter/xml/xmlstyle.hxx
@@ -120,7 +120,7 @@ public:
 
     /** this method is called for every item that has the 
MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
     virtual void handleSpecialItem(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             const XMLPropertyState& rProperty,
             const SvXMLUnitConverter& rUnitConverter,
             const SvXMLNamespaceMap& rNamespaceMap,
@@ -151,7 +151,7 @@ public:
 
     /** this method is called for every item that has the 
MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
     virtual void handleSpecialItem(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             const XMLPropertyState& rProperty,
             const SvXMLUnitConverter& rUnitConverter,
             const SvXMLNamespaceMap& rNamespaceMap,
@@ -169,7 +169,7 @@ public:
 
     /** this method is called for every item that has the 
MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
     virtual void handleSpecialItem(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             const XMLPropertyState& rProperty,
             const SvXMLUnitConverter& rUnitConverter,
             const SvXMLNamespaceMap& rNamespaceMap,
@@ -182,7 +182,7 @@ class ScXMLAutoStylePoolP : public SvXMLAutoStylePoolP
     ScXMLExport& rScXMLExport;
 
     virtual void exportStyleAttributes(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             XmlStyleFamily nFamily,
             const ::std::vector< XMLPropertyState >& rProperties,
             const SvXMLExportPropertyMapper& rPropExp,
diff --git a/sfx2/source/doc/doctemplateslocal.cxx 
b/sfx2/source/doc/doctemplateslocal.cxx
index 5a55df72a45a..fa83d1f4ccf4 100644
--- a/sfx2/source/doc/doctemplateslocal.cxx
+++ b/sfx2/source/doc/doctemplateslocal.cxx
@@ -58,14 +58,12 @@ void DocTemplLocaleHelper::WriteGroupLocalizationSequence( 
const uno::Reference<
 
     xWriterHandler->setOutputStream( xOutStream );
 
-    static const OUStringLiteral aCDATAString( u"CDATA" );
     static const OUStringLiteral aWhiteSpace( u" " );
 
     // write the namespace
     rtl::Reference<::comphelper::AttributeList> pRootAttrList = new 
::comphelper::AttributeList;
     pRootAttrList->AddAttribute(
         "xmlns:groupuinames",
-        aCDATAString,
         "http://openoffice.org/2006/groupuinames"; );
 
     xWriterHandler->startDocument();
@@ -74,8 +72,8 @@ void DocTemplLocaleHelper::WriteGroupLocalizationSequence( 
const uno::Reference<
     for (const auto & i : aSequence)
     {
         rtl::Reference<::comphelper::AttributeList> pAttrList = new 
::comphelper::AttributeList;
-        pAttrList->AddAttribute( g_sNameAttr, aCDATAString, i.First );
-        pAttrList->AddAttribute( g_sUINameAttr, aCDATAString, i.Second );
+        pAttrList->AddAttribute( g_sNameAttr, i.First );
+        pAttrList->AddAttribute( g_sUINameAttr, i.Second );
 
         xWriterHandler->startElement( g_sGroupElement, pAttrList );
         xWriterHandler->ignorableWhitespace( aWhiteSpace );
diff --git a/starmath/source/mathml/mathmlexport.cxx 
b/starmath/source/mathml/mathmlexport.cxx
index 9a2c6cd2db8f..6382ade13a53 100644
--- a/starmath/source/mathml/mathmlexport.cxx
+++ b/starmath/source/mathml/mathmlexport.cxx
@@ -47,7 +47,6 @@
 #include <xmloff/xmlnamespace.hxx>
 #include <xmloff/xmltoken.hxx>
 #include <xmloff/namespacemap.hxx>
-#include <xmloff/attrlist.hxx>
 #include <comphelper/genericpropertyset.hxx>
 #include <comphelper/servicehelper.hxx>
 #include <comphelper/propertysetinfo.hxx>
@@ -394,7 +393,7 @@ ErrCode SmXMLExport::exportDoc(enum XMLTokenEnum eClass)
         addChaffWhenEncryptedStorage();
 
         /*Add xmlns line*/
-        SvXMLAttributeList& rList = GetAttrList();
+        comphelper::AttributeList& rList = GetAttrList();
 
         // make use of a default namespace
         ResetNamespaceMap(); // Math doesn't need namespaces from xmloff, 
since it now uses default namespaces (because that is common with current 
MathML usage in the web)
diff --git a/sw/source/filter/xml/xmlexpit.cxx 
b/sw/source/filter/xml/xmlexpit.cxx
index 3be82886d11a..c912d4c8c58f 100644
--- a/sw/source/filter/xml/xmlexpit.cxx
+++ b/sw/source/filter/xml/xmlexpit.cxx
@@ -26,7 +26,6 @@
 #include <svl/itemset.hxx>
 #include <utility>
 #include <xmloff/xmluconv.hxx>
-#include <xmloff/attrlist.hxx>
 #include <xmloff/namespacemap.hxx>
 #include <xmloff/xmlnamespace.hxx>
 #include <xmloff/prhdlfac.hxx>
@@ -62,7 +61,7 @@ using uno::Any;
 
 // fills the given attribute list with the items in the given set
 void SvXMLExportItemMapper::exportXML( const SvXMLExport& rExport,
-                                SvXMLAttributeList& rAttrList,
+                                comphelper::AttributeList& rAttrList,
                                 const SfxItemSet& rSet,
                                 const SvXMLUnitConverter& rUnitConverter,
                                 const SvXMLNamespaceMap& rNamespaceMap,
@@ -106,7 +105,7 @@ void SvXMLExportItemMapper::exportXML( const SvXMLExport& 
rExport,
 }
 
 void SvXMLExportItemMapper::exportXML(const SvXMLExport&,
-                                 SvXMLAttributeList& rAttrList,
+                                 comphelper::AttributeList& rAttrList,
                                  const SfxPoolItem& rItem,
                                  const SvXMLItemMapEntry& rEntry,
                                  const SvXMLUnitConverter& rUnitConverter,
@@ -319,7 +318,7 @@ void SvXMLExportItemMapper::exportXML( SvXMLExport& rExport,
 
 /** this method is called for every item that has the
     MID_SW_FLAG_SPECIAL_ITEM_EXPORT flag set */
-void SvXMLExportItemMapper::handleSpecialItem( SvXMLAttributeList& 
/*rAttrList*/,
+void SvXMLExportItemMapper::handleSpecialItem( comphelper::AttributeList& 
/*rAttrList*/,
                                     const SvXMLItemMapEntry& /*rEntry*/,
                                     const SfxPoolItem& /*rItem*/,
                                     const SvXMLUnitConverter& 
/*rUnitConverter*/,
diff --git a/sw/source/filter/xml/xmlexpit.hxx 
b/sw/source/filter/xml/xmlexpit.hxx
index 0ca39f024466..b0e10fb0ab86 100644
--- a/sw/source/filter/xml/xmlexpit.hxx
+++ b/sw/source/filter/xml/xmlexpit.hxx
@@ -27,7 +27,7 @@
 class SvXMLUnitConverter;
 class SfxPoolItem;
 class SfxItemSet;
-class SvXMLAttributeList;
+namespace comphelper { class AttributeList; }
 class SvXMLNamespaceMap;
 class SvXMLExport;
 
@@ -38,14 +38,14 @@ class SvXMLExportItemMapper
 protected:
     /** fills the given attribute list with the items in the given set */
     void exportXML( const SvXMLExport& rExport,
-                    SvXMLAttributeList& rAttrList,
+                    comphelper::AttributeList& rAttrList,
                     const SfxItemSet& rSet,
                     const SvXMLUnitConverter& rUnitConverter,
                     const SvXMLNamespaceMap& rNamespaceMap,
                     std::vector<sal_uInt16> *pIndexArray ) const;
 
     void exportXML( const SvXMLExport& rExport,
-                    SvXMLAttributeList& rAttrList,
+                    comphelper::AttributeList& rAttrList,
                     const SfxPoolItem& rItem,
                     const SvXMLItemMapEntry &rEntry,
                     const SvXMLUnitConverter& rUnitConverter,
@@ -70,7 +70,7 @@ public:
 
     /** this method is called for every item that has the
         MID_SW_FLAG_SPECIAL_ITEM_EXPORT flag set */
-    virtual void handleSpecialItem( SvXMLAttributeList& rAttrList,
+    virtual void handleSpecialItem( comphelper::AttributeList& rAttrList,
                                     const SvXMLItemMapEntry& rEntry,
                                     const SfxPoolItem& rItem,
                                     const SvXMLUnitConverter& rUnitConverter,
diff --git a/sw/source/filter/xml/xmlfmte.cxx b/sw/source/filter/xml/xmlfmte.cxx
index f98e4ae3fb28..7dc23bb11b54 100644
--- a/sw/source/filter/xml/xmlfmte.cxx
+++ b/sw/source/filter/xml/xmlfmte.cxx
@@ -19,7 +19,6 @@
 
 #include <com/sun/star/text/XTextDocument.hpp>
 #include <xmloff/xmlnamespace.hxx>
-#include <xmloff/attrlist.hxx>
 #include "xmlexpit.hxx"
 #include <xmloff/namespacemap.hxx>
 #include <xmloff/XMLTextListAutoStylePool.hxx>
@@ -270,7 +269,7 @@ class SwXMLAutoStylePoolP : public SvXMLAutoStylePoolP
 protected:
 
     virtual void exportStyleAttributes(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             XmlStyleFamily nFamily,
             const std::vector< XMLPropertyState >& rProperties,
             const SvXMLExportPropertyMapper& rPropExp
@@ -285,7 +284,7 @@ public:
 }
 
 void SwXMLAutoStylePoolP::exportStyleAttributes(
-            SvXMLAttributeList& rAttrList,
+            comphelper::AttributeList& rAttrList,
             XmlStyleFamily nFamily,
             const std::vector< XMLPropertyState >& rProperties,
             const SvXMLExportPropertyMapper& rPropExp
diff --git a/sw/source/filter/xml/xmliteme.cxx 
b/sw/source/filter/xml/xmliteme.cxx
index a8fbc712ac90..3d19a9d6dc96 100644
--- a/sw/source/filter/xml/xmliteme.cxx
+++ b/sw/source/filter/xml/xmliteme.cxx
@@ -52,7 +52,7 @@ protected:
     static void AddAttribute( sal_uInt16 nPrefix, enum XMLTokenEnum eLName,
                        const OUString& rValue,
                        const SvXMLNamespaceMap& rNamespaceMap,
-                       SvXMLAttributeList& rAttrList );
+                       comphelper::AttributeList& rAttrList );
 
 public:
 
@@ -60,7 +60,7 @@ public:
             SvXMLItemMapEntriesRef rMapEntries,
             SwXMLExport& rExp );
 
-    virtual void handleSpecialItem( SvXMLAttributeList& rAttrList,
+    virtual void handleSpecialItem( comphelper::AttributeList& rAttrList,
                                     const SvXMLItemMapEntry& rEntry,
                                     const SfxPoolItem& rItem,
                                     const SvXMLUnitConverter& rUnitConverter,
@@ -89,7 +89,7 @@ void SwXMLTableItemMapper_Impl::AddAttribute( sal_uInt16 
nPrefix,
         enum XMLTokenEnum eLName,
         const OUString& rValue,
         const SvXMLNamespaceMap& rNamespaceMap,
-        SvXMLAttributeList& rAttrList )
+        comphelper::AttributeList& rAttrList )
 {
     OUString sName( rNamespaceMap.GetQNameByKey( nPrefix,
                                                  GetXMLToken(eLName) ) );
@@ -97,7 +97,7 @@ void SwXMLTableItemMapper_Impl::AddAttribute( sal_uInt16 
nPrefix,
 }
 
 void SwXMLTableItemMapper_Impl::handleSpecialItem(
-        SvXMLAttributeList& rAttrList,
+        comphelper::AttributeList& rAttrList,
         const SvXMLItemMapEntry& rEntry,
         const SfxPoolItem& rItem,
         const SvXMLUnitConverter& rUnitConverter,
diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx 
b/ucb/source/ucp/webdav-curl/CurlSession.cxx
index 25804dbacc4f..7353c8c9fa7e 100644
--- a/ucb/source/ucp/webdav-curl/CurlSession.cxx
+++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx
@@ -1598,7 +1598,7 @@ auto CurlProcessor::PropFind(
     xWriter->setOutputStream(xRequestOutStream);
     xWriter->startDocument();
     rtl::Reference<::comphelper::AttributeList> const pAttrList(new 
::comphelper::AttributeList);
-    pAttrList->AddAttribute("xmlns", "CDATA", "DAV:");
+    pAttrList->AddAttribute("xmlns", "DAV:");
     xWriter->startElement("propfind", pAttrList);
     if (o_pResourceInfos)
     {
@@ -1620,7 +1620,7 @@ auto CurlProcessor::PropFind(
                 SerfPropName name;
                 DAVProperties::createSerfPropName(rName, name);
                 pAttrList->Clear();
-                pAttrList->AddAttribute("xmlns", "CDATA", 
OUString::createFromAscii(name.nspace));
+                pAttrList->AddAttribute("xmlns", 
OUString::createFromAscii(name.nspace));
                 xWriter->startElement(OUString::createFromAscii(name.name), 
pAttrList);
                 xWriter->endElement(OUString::createFromAscii(name.name));
             }
@@ -1738,7 +1738,7 @@ auto CurlSession::PROPPATCH(OUString const& rURIReference,
     xWriter->setOutputStream(xRequestOutStream);
     xWriter->startDocument();
     rtl::Reference<::comphelper::AttributeList> const pAttrList(new 
::comphelper::AttributeList);
-    pAttrList->AddAttribute("xmlns", "CDATA", "DAV:");
+    pAttrList->AddAttribute("xmlns", "DAV:");
     xWriter->startElement("propertyupdate", pAttrList);
     for (ProppatchValue const& rPropValue : rValues)
     {
@@ -1750,7 +1750,7 @@ auto CurlSession::PROPPATCH(OUString const& rURIReference,
         SerfPropName name;
         DAVProperties::createSerfPropName(rPropValue.name, name);
         pAttrList->Clear();
-        pAttrList->AddAttribute("xmlns", "CDATA", 
OUString::createFromAscii(name.nspace));
+        pAttrList->AddAttribute("xmlns", 
OUString::createFromAscii(name.nspace));
         xWriter->startElement(OUString::createFromAscii(name.name), pAttrList);
         if (rPropValue.operation == PROPSET)
         {
@@ -2205,7 +2205,7 @@ auto CurlSession::LOCK(OUString const& rURIReference, 
ucb::Lock /*const*/& rLock
     xWriter->setOutputStream(xRequestOutStream);
     xWriter->startDocument();
     rtl::Reference<::comphelper::AttributeList> const pAttrList(new 
::comphelper::AttributeList);
-    pAttrList->AddAttribute("xmlns", "CDATA", "DAV:");
+    pAttrList->AddAttribute("xmlns", "DAV:");
     xWriter->startElement("lockinfo", pAttrList);
     xWriter->startElement("lockscope", nullptr);
     switch (rLock.Scope)
diff --git a/unoxml/source/dom/element.cxx b/unoxml/source/dom/element.cxx
index 481b071e62e5..757ac1c17de4 100644
--- a/unoxml/source/dom/element.cxx
+++ b/unoxml/source/dom/element.cxx
@@ -58,7 +58,6 @@ namespace DOM
         if (!i_xHandler.is()) throw RuntimeException();
         rtl::Reference<comphelper::AttributeList> pAttrs =
             new comphelper::AttributeList();
-        OUString type = "";
         // add namespace definitions to attributes
         for (xmlNsPtr pNs = m_aNodePtr->nsDef; pNs != nullptr; pNs = 
pNs->next) {
             const xmlChar *pPrefix = pNs->prefix ? pNs->prefix : 
reinterpret_cast<const xmlChar*>("");
@@ -71,7 +70,7 @@ namespace DOM
             OUString val(reinterpret_cast<const char*>(pHref),
                 strlen(reinterpret_cast<const char*>(pHref)),
                 RTL_TEXTENCODING_UTF8);
-            pAttrs->AddAttribute(name, type, val);
+            pAttrs->AddAttribute(name, val);
         }
         // add attributes
         for (xmlAttrPtr pAttr = m_aNodePtr->properties;
@@ -84,7 +83,7 @@ namespace DOM
                 ? pNode->getLocalName()
                 : prefix + ":" + pNode->getLocalName();
             OUString val  = pNode->getNodeValue();
-            pAttrs->AddAttribute(name, type, val);
+            pAttrs->AddAttribute(name, val);
         }
         OUString prefix = getPrefix();
         OUString name = (prefix.isEmpty())
diff --git a/writerperfect/source/common/DocumentHandler.cxx 
b/writerperfect/source/common/DocumentHandler.cxx
index 6b5ffe58ad9e..bfa9bb53a5d2 100644
--- a/writerperfect/source/common/DocumentHandler.cxx
+++ b/writerperfect/source/common/DocumentHandler.cxx
@@ -14,8 +14,7 @@
 #include <com/sun/star/uno/Reference.hxx>
 #include <com/sun/star/xml/sax/XDocumentHandler.hpp>
 #include <com/sun/star/xml/sax/XAttributeList.hpp>
-
-#include <xmloff/attrlist.hxx>
+#include <comphelper/attributelist.hxx>
 #include <xmloff/xmlimp.hxx>
 
 namespace writerperfect
@@ -126,7 +125,7 @@ void DocumentHandler::endDocument() { 
mxHandler->endDocument(); }
 void DocumentHandler::startElement(const char* psName,
                                    const librevenge::RVNGPropertyList& 
xPropList)
 {
-    rtl::Reference<SvXMLAttributeList> pAttrList = new SvXMLAttributeList();
+    rtl::Reference<comphelper::AttributeList> pAttrList = new 
comphelper::AttributeList();
     librevenge::RVNGPropertyList::Iter i(xPropList);
     for (i.rewind(); i.next();)
     {
diff --git a/writerperfect/source/writer/EPUBPackage.cxx 
b/writerperfect/source/writer/EPUBPackage.cxx
index 727a8ed7e3de..c08b60ad70ed 100644
--- a/writerperfect/source/writer/EPUBPackage.cxx
+++ b/writerperfect/source/writer/EPUBPackage.cxx
@@ -18,9 +18,9 @@
 #include <com/sun/star/embed/XHierarchicalStorageAccess.hpp>
 
 #include <sal/log.hxx>
+#include <comphelper/attributelist.hxx>
 #include <comphelper/storagehelper.hxx>
 #include <unotools/mediadescriptor.hxx>
-#include <xmloff/attrlist.hxx>
 
 using namespace com::sun::star;
 
@@ -80,7 +80,7 @@ void EPUBPackage::openElement(const char* pName, const 
librevenge::RVNGPropertyL
 {
     assert(mxOutputWriter.is());
 
-    rtl::Reference<SvXMLAttributeList> pAttributeList(new 
SvXMLAttributeList());
+    rtl::Reference<comphelper::AttributeList> pAttributeList(new 
comphelper::AttributeList());
 
     librevenge::RVNGPropertyList::Iter it(rAttributes);
     for (it.rewind(); it.next();)

... etc. - the rest is truncated

Reply via email to