libreoffice/xmloff/source/text/XMLFootnoteImportContext.hxx
Mike Kaganski 512ef23224 tdf#163974: ignore nested footnotes on ODF import
That is a valid, but unsupported, markup, that is explicitly mentioned
in ODF 1.4 part 3 "Schema" sect. 6.3.4 "<text:note-body>":

  Note: The schema allows for the inclusion of <text:note> elements as
  a descendant of a child of the <text:note-body> element. While this
  may be reasonable for note types, it is not reasonable for footnotes
  and endnotes. Conforming consumers need not support notes inside notes.

(The "reasonable for note types" is obviously an editorial error from the time when ODF 1.1 text "reasonable for some future note types"
was reviewed for ODF 1.2.)

As the ODF also specifies, that a conforming consumer "need not
interpret the semantics of all elements, attributes and attribute values"
(ibid., sect. 2.4 "Consumer"), it is OK to silently drop this data, just
as done for other similar cases.

Change-Id: I0a417981087ebf225565628f14409661058d100d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176906
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2024-11-21 12:47:15 +01:00

74 lines
2.2 KiB
C++

/* -*- 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 .
*/
#pragma once
#include <xmloff/xmlictxt.hxx>
#include <com/sun/star/uno/Reference.h>
namespace com::sun::star {
namespace text {
class XTextCursor;
class XFootnote;
}
namespace xml::sax {
class XAttributeList;
}
}
class XMLTextImportHelper;
/// import footnote elements (<text:footnote>)
class XMLFootnoteImportContext : public SvXMLImportContext
{
/// old document cursor
css::uno::Reference<css::text::XTextCursor> xOldCursor;
/// old list item and block (#89891#)
bool mbListContextPushed;
bool mbIsValid = true;
/// text import helper; holds current XTextCursor (and XText)
XMLTextImportHelper& rHelper;
/// the footnote
css::uno::Reference<css::text::XFootnote> xFootnote;
public:
XMLFootnoteImportContext(
SvXMLImport& rImport,
XMLTextImportHelper& rHlp );
protected:
virtual void SAL_CALL startFastElement(
sal_Int32 nElement,
const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override;
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */