Files
libreoffice/xmloff/source/transform/Oasis2OOo.cxx
Stephan Bergmann 314f15bff0 Extend loplugin:external to warn about enums
To mitigate the dangers of silently breaking ADL when moving enums into unnamed
namespaces (see the commit message of 206b5b2661
"New loplugin:external"), note all functions that are affected.  (The plan is to
extend loplugin:external further to also warn about classes and class templates,
and the code to identify affected functions already takes that into account, so
some parts of that code are not actually relevant for enums.)

But it appears that none of the functions that are actually affected by the
changes in this commit relied on being found through ADL, so no adaptions were
necessary for them.

(clang::DeclContext::collectAllContexts is non-const, which recursively means
that External's Visit... functions must take non-const Decl*.  Which required
compilerplugins/clang/sharedvisitor/analyzer.cxx to be generalized to support
such Visit... functions with non-const Decl* parameters.)

Change-Id: Ia215291402bf850d43defdab3cff4db5b270d1bd
Reviewed-on: https://gerrit.libreoffice.org/83001
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-11-17 00:28:17 +01:00

1984 lines
85 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 .
*/
#include <comphelper/base64.hxx>
#include <com/sun/star/beans/XPropertySetInfo.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <rtl/ustrbuf.hxx>
#include <sal/log.hxx>
#include <xmloff/nmspmap.hxx>
#include <xmloff/xmlnmspe.hxx>
#include <xmloff/xmltoken.hxx>
#include "DeepTContext.hxx"
#include "MetaTContext.hxx"
#include "DocumentTContext.hxx"
#include "NotesTContext.hxx"
#include "StyleOASISTContext.hxx"
#include "FrameOASISTContext.hxx"
#include "EventOASISTContext.hxx"
#include "DlgOASISTContext.hxx"
#include "ControlOASISTContext.hxx"
#include "FormPropOASISTContext.hxx"
#include "ChartOASISTContext.hxx"
#include "ChartPlotAreaOASISTContext.hxx"
#include "MutableAttrList.hxx"
#include "ElemTransformerAction.hxx"
#include "AttrTransformerAction.hxx"
#include "TransformerActions.hxx"
#include "FamilyType.hxx"
#include "XMLFilterRegistration.hxx"
#include <comphelper/servicehelper.hxx>
#include "Oasis2OOo.hxx"
#include <cppuhelper/supportsservice.hxx>
using namespace ::osl;
using namespace ::xmloff::token;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::xml::sax;
using namespace ::com::sun::star::beans;
namespace {
enum XMLUserDefinedTransformerAction
{
XML_ETACTION_META=XML_ETACTION_USER_DEFINED,
XML_ETACTION_DOCUMENT,
XML_ETACTION_BODY,
XML_ETACTION_NOTES,
XML_ETACTION_TABLE,
XML_ETACTION_STYLE,
XML_ETACTION_STYLE_RENAME,
XML_ETACTION_FRAME,
XML_ETACTION_EVENT,
XML_ETACTION_DLG,
XML_ETACTION_TAB_STOP,
XML_ETACTION_FORM_CONTROL,
XML_ETACTION_FORM_PROPERTY,
XML_ETACTION_CONFIG_ITEM,
XML_ETACTION_TRACKED_CHANGES,
XML_ETACTION_CHART,
XML_ETACTION_CHART_PLOT_AREA
};
}
#define ENTRY3( n, l, a, p1, p2, p3 ) \
{ XML_NAMESPACE_##n, XML_##l, a, p1, p2, p3 }
#define ENTRY3QNQ( n, l, a, n1, l1, p2, n3, l3 ) \
ENTRY3( n, l, a, XMLTransformerActionInit::QNameParam( n1, l1 ), \
p2, XMLTransformerActionInit::QNameParam( n3, l3 ) )
#define ENTRY2( n, l, a, p1, p2 ) \
ENTRY3( n, l, a, p1, p2, 0 )
#define ENTRY2QN( n, l, a, n1, l1, p2 ) \
ENTRY2( n, l, a, XMLTransformerActionInit::QNameParam( n1, l1 ), p2 )
#define ENTRY1( n, l, a, p1 ) \
ENTRY3( n, l, a, p1, 0, 0 )
#define ENTRY1Q( n, l, a, p1, t1 ) \
ENTRY1( n, l, a, XMLTransformerActionInit::QNameParam( p1, t1 ) )
#define ENTRY0( n, l, a ) \
ENTRY3( n, l, a, 0, 0, 0 )
// a macro to put two tokens into one sal_Int32 for the action
// XML_ATACTION_RENAME_ATTRIBUTE
static constexpr sal_Int32 RENAME_ENTRY( XMLTokenEnum f, XMLTokenEnum s )
{
return static_cast< sal_Int32 >(f) | (static_cast< sal_Int32 >(s) << 16);
}
static XMLTransformerActionInit const aActionTable[] =
{
// add office:class from <office:document> and <office:document-content>
ENTRY0( OFFICE, DOCUMENT, XML_ETACTION_DOCUMENT ),
ENTRY0( OFFICE, DOCUMENT_CONTENT, XML_ETACTION_DOCUMENT ),
ENTRY1Q( OOO, AUTO_TEXT_EVENTS, XML_ETACTION_RENAME_ELEM,
XML_NAMESPACE_OFFICE, XML_AUTO_TEXT_EVENTS),
// add <meta:keywords>
ENTRY0( OFFICE, META, XML_ETACTION_META ),
// rename <office:scripts> to <office:script>
ENTRY1Q( OFFICE, SCRIPTS, XML_ETACTION_RENAME_ELEM,
XML_NAMESPACE_OFFICE, XML_SCRIPT ),
// rename <office:script> to <office:script-data> and process attributes
ENTRY2QN( OFFICE, SCRIPT, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
XML_NAMESPACE_OFFICE, XML_SCRIPT_DATA,
OASIS_SCRIPT_ACTIONS ),
// rename <ooo:libraries> to <script:libraries>
ENTRY1Q( OOO, LIBRARIES, XML_ETACTION_RENAME_ELEM,
XML_NAMESPACE_SCRIPT, XML_LIBRARIES ),
// rename <ooo:library-linked> to <script:library-linked> and process attributes
ENTRY2QN( OOO, LIBRARY_LINKED, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
XML_NAMESPACE_SCRIPT, XML_LIBRARY_LINKED,
OASIS_SCRIPT_ACTIONS ),
// rename <ooo:library-embedded> to <script:library-embedded> and process attributes
ENTRY2QN( OOO, LIBRARY_EMBEDDED, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
XML_NAMESPACE_SCRIPT, XML_LIBRARY_EMBEDDED,
OASIS_SCRIPT_ACTIONS ),
// rename <ooo:module> to <script:module> and process attributes
ENTRY2QN( OOO, MODULE, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
XML_NAMESPACE_SCRIPT, XML_MODULE,
OASIS_SCRIPT_ACTIONS ),
// rename <ooo:source-code> to <script:source-code>
ENTRY1Q( OOO, SOURCE_CODE, XML_ETACTION_RENAME_ELEM,
XML_NAMESPACE_SCRIPT, XML_SOURCE_CODE ),
ENTRY0( OFFICE, BODY, XML_ETACTION_BODY ),
// rename <office:font-face-decls> to <office:font-decl>,
// rename <style:font-face> to <style:font-decl>, process attrs
ENTRY1Q( OFFICE, FONT_FACE_DECLS, XML_ETACTION_RENAME_ELEM,
XML_NAMESPACE_OFFICE, XML_FONT_DECLS ),
ENTRY2QN( STYLE, FONT_FACE, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
XML_NAMESPACE_STYLE, XML_FONT_DECL,
OASIS_FONT_FACE_ACTIONS ),
// remove genre element
ENTRY0( OFFICE, TEXT, XML_ETACTION_COPY_CONTENT ),
ENTRY0( OFFICE, DRAWING, XML_ETACTION_COPY_CONTENT ),
ENTRY0( OFFICE, PRESENTATION, XML_ETACTION_COPY_CONTENT ),
ENTRY0( OFFICE, SPREADSHEET, XML_ETACTION_COPY_CONTENT ),
ENTRY0( OFFICE, CHART, XML_ETACTION_COPY_CONTENT ),
ENTRY0( OFFICE, IMAGE, XML_ETACTION_COPY_CONTENT ),
// rename <style:page-layout> to <style:page-master>
// ENTRY1Q( STYLE, PAGE_LAYOUT, RENAME_ELEM,
// XML_NAMESPACE_STYLE, XML_PAGE_MASTER ),
ENTRY1( STYLE, MASTER_PAGE, XML_ETACTION_PROC_ATTRS,
OASIS_MASTER_PAGE_ACTIONS ),
// merge <style:*-properties> into <style:properties> and do other
// styles processing
ENTRY1( STYLE, STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_END ),
ENTRY1( STYLE, DEFAULT_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_END ),
ENTRY2QN( STYLE, PAGE_LAYOUT, XML_ETACTION_STYLE_RENAME,
XML_NAMESPACE_STYLE, XML_PAGE_MASTER,
XML_FAMILY_TYPE_PAGE_LAYOUT ),
ENTRY1( NUMBER, NUMBER_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_DATA ),
ENTRY1( NUMBER, CURRENCY_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_DATA ),
ENTRY1( NUMBER, PERCENTAGE_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_DATA ),
ENTRY1( NUMBER, DATE_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_DATA ),
ENTRY1( NUMBER, TIME_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_DATA ),
ENTRY1( NUMBER, BOOLEAN_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_DATA ),
ENTRY1( NUMBER, TEXT_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_DATA ),
ENTRY1( TEXT, LIST_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_LIST ),
// ENTRY0( TEXT, OUTLINE_STYLE, STYLE ),
ENTRY1( STYLE, HEADER_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_HEADER_FOOTER ),
ENTRY1( STYLE, FOOTER_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_HEADER_FOOTER ),
ENTRY1( TEXT, LIST_LEVEL_STYLE_NUMBER, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_LIST ),
ENTRY1( TEXT, LIST_LEVEL_STYLE_BULLET, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_LIST ),
ENTRY1( TEXT, LIST_LEVEL_STYLE_IMAGE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_LIST ),
ENTRY1( TEXT, OUTLINE_LEVEL_STYLE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_LIST ),
ENTRY1( DRAW, GRADIENT, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_GRADIENT ),
ENTRY1( DRAW, FILL_IMAGE, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_FILL_IMAGE ),
ENTRY2QN( DRAW, OPACITY, XML_ETACTION_STYLE_RENAME,
XML_NAMESPACE_DRAW, XML_TRANSPARENCY,
XML_FAMILY_TYPE_GRADIENT ),
ENTRY1( DRAW, MARKER, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_MARKER ),
ENTRY1( DRAW, HATCH, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_HATCH ),
ENTRY1( DRAW, STROKE_DASH, XML_ETACTION_STYLE,
XML_FAMILY_TYPE_STROKE_DASH ),
// process <text:h/p>: process style-name attributes,
// rename <text:h>'s text:outline-level to text:level,
ENTRY1( TEXT, H, XML_ETACTION_PROC_ATTRS, OASIS_PARA_ACTIONS ),
ENTRY1( TEXT, P, XML_ETACTION_PROC_ATTRS, OASIS_PARA_ACTIONS ),
// process <test:list>'s text:style-name attributes
// rename <text:list> to <text:ordered-list> or <text:unordered-list>
// TODO: All list currently are renamed to <text:ordered-list>
ENTRY2QN( TEXT, LIST, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
XML_NAMESPACE_TEXT, XML_ORDERED_LIST,
OASIS_LIST_STYLE_REF_ACTIONS ),
// rename <text:note*> to <text:footnote*> or <text:endnote*>
ENTRY1( TEXT, NOTES_CONFIGURATION, XML_ETACTION_NOTES,
XML_NOTES_CONFIGURATION),
ENTRY1( TEXT, NOTE, XML_ETACTION_NOTES, XML_NOTE ),
// rename <text:footnote> and <text:endnote> to <text:note>
ENTRY1( TEXT, NOTE_REF, XML_ETACTION_NOTES, XML_NOTE_REF ),
// rename <text:tab> to <text:tab-stop>
ENTRY1Q( TEXT, TAB, XML_ETACTION_RENAME_ELEM,
XML_NAMESPACE_TEXT, XML_TAB_STOP ),
// replace <table:table table:is-sub-table> with <table:sub-table>
ENTRY0( TABLE, TABLE, XML_ETACTION_TABLE ),
// merge frame element
ENTRY0( DRAW, FRAME, XML_ETACTION_FRAME ),
// process events
ENTRY1Q( OFFICE, EVENT_LISTENERS, XML_ETACTION_RENAME_ELEM,
XML_NAMESPACE_OFFICE, XML_EVENTS ),
ENTRY0( SCRIPT, EVENT_LISTENER, XML_ETACTION_EVENT ),
ENTRY0( SCRIPT, EVENT, XML_ETACTION_EVENT ),
ENTRY0( PRESENTATION, EVENT_LISTENER, XML_ETACTION_EVENT ),
// process Basic dialogs
ENTRY0( DLG, STYLE, XML_ETACTION_DLG ),
// process length attributes
ENTRY1( DRAW, RECT, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, LINE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, POLYLINE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, POLYGON, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, PATH, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, CIRCLE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, ELLIPSE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, CONNECTOR, XML_ETACTION_PROC_ATTRS, OASIS_CONNECTOR_ACTIONS ),
ENTRY1( DRAW, CAPTION, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, MEASURE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, CONTROL, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, PAGE_THUMBNAIL, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, G, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
// ENTRY1( DRAW, FRAME, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, TEXT_BOX, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( PRESENTATION, PLACEHOLDER, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, CONTOUR_POLYGON, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, CONTOUR_PATH, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, AREA_RECTANGLE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, AREA_CIRCLE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DRAW, AREA_POLYGON, XML_ETACTION_PROC_ATTRS, OASIS_DRAW_AREA_POLYGON_ACTIONS ),
ENTRY1( DRAW, GLUE_POINT, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DR3D, SCENE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DR3D, CUBE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DR3D, SPHERE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DR3D, EXTRUDE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( DR3D, ROTATE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, TITLE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, SUBTITLE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, FOOTER, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, LEGEND, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, WALL, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, FLOOR, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, AXIS, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, GRID, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, SERIES, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, DATA_POINT, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, MEAN_VALUE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, ERROR_INDICATOR, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, REGRESSION_CURVE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, STOCK_GAIN_MARKER, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, STOCK_LOSS_MARKER, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY1( CHART, STOCK_RANGE_LINE, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
ENTRY0( CHART, CHART, XML_ETACTION_CHART ),
ENTRY0( CHART, PLOT_AREA, XML_ETACTION_CHART_PLOT_AREA ),
ENTRY0( CONFIG, CONFIG_ITEM, XML_ETACTION_CONFIG_ITEM ),
ENTRY1Q( TEXT, TRACKED_CHANGES, XML_ETACTION_TRACKED_CHANGES,
XML_NAMESPACE_TEXT, XML_PROTECTION_KEY ),
ENTRY1Q( TABLE, TRACKED_CHANGES, XML_ETACTION_TRACKED_CHANGES,
XML_NAMESPACE_TABLE, XML_PROTECTION_KEY ),
ENTRY1( TEXT, INDEX_ENTRY_TAB_STOP, XML_ETACTION_PROC_ATTRS,
OASIS_INDEX_ENTRY_TAB_STOP_ACTIONS ),
ENTRY0( STYLE, TAB_STOP, XML_ETACTION_TAB_STOP ),
ENTRY1( STYLE, BACKGROUND_IMAGE, XML_ETACTION_PROC_ATTRS,
OASIS_BACKGROUND_IMAGE_ACTIONS ),
ENTRY1( TEXT, LINENUMBERING_CONFIGURATION, XML_ETACTION_PROC_ATTRS,
OASIS_LINENUMBERING_ACTIONS ),
ENTRY1( STYLE, FOOTNOTE_SEP, XML_ETACTION_PROC_ATTRS,
OASIS_FOOTNOTE_SEP_ACTIONS ),
ENTRY1( STYLE, DROP_CAP, XML_ETACTION_PROC_ATTRS, OASIS_DROP_CAP_ACTIONS ),
ENTRY1( STYLE, COLUMNS, XML_ETACTION_PROC_ATTRS, OASIS_COLUMNS_ACTIONS ),
ENTRY1( STYLE, COLUMN, XML_ETACTION_PROC_ATTRS, OASIS_COLUMNS_ACTIONS ),
// process *:style-name attributes
ENTRY1( STYLE, MAP, XML_ETACTION_PROC_ATTRS, OASIS_MAP_STYLE_REF_ACTIONS ),
ENTRY1( TEXT, SPAN, XML_ETACTION_PROC_ATTRS, OASIS_TEXT_STYLE_REF_ACTIONS ),
ENTRY1( TEXT, A, XML_ETACTION_PROC_ATTRS, OASIS_TEXT_STYLE_REF_ACTIONS ),
ENTRY1( TEXT, RUBY_TEXT, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_STYLE_REF_ACTIONS ),
ENTRY1( TEXT, TABLE_OF_CONTENT_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, ILLUSTRATION_INDEX_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, TABLE_INDEX_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, OBJECT_INDEX_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, USER_INDEX_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, ALPHABETICAL_INDEX_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, BIBLIOGRAPHY_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, INDEX_SOURCE_STYLE, XML_ETACTION_PROC_ATTRS,
OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, INDEX_TITLE_TEMPLATE, XML_ETACTION_PROC_ATTRS,
OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY3QNQ( TEXT, INDEX_ENTRY_CHAPTER,
XML_ETACTION_RENAME_ELEM_PROC_ATTRS_COND,
XML_NAMESPACE_TEXT, XML_INDEX_ENTRY_CHAPTER_NUMBER,
OASIS_TEXT_STYLE_REF_ACTIONS ,
XML_NAMESPACE_TEXT, XML_TABLE_OF_CONTENT_ENTRY_TEMPLATE),
ENTRY1( TEXT, INDEX_ENTRY_TEXT, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, INDEX_ENTRY_PAGE_NUMBER, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, INDEX_ENTRY_SPAN, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, INDEX_ENTRY_BIBLIOGRAPHY, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, INDEX_ENTRY_LINK_START, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( TEXT, INDEX_ENTRY_LINK_END, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
ENTRY1( DRAW, PAGE, XML_ETACTION_PROC_ATTRS,
OASIS_MASTER_PAGE_REF_ACTIONS ), /* generated entry */
// Conversion of attribute <table:style-name> for <table:table-row> and
// <table:table-column> (#i40011#, #i40015#)
ENTRY1( TABLE, TABLE_ROW, XML_ETACTION_PROC_ATTRS,
OASIS_TABLE_STYLE_REF_ACTIONS ),
ENTRY1( TABLE, TABLE_COLUMN, XML_ETACTION_PROC_ATTRS,
OASIS_TABLE_STYLE_REF_ACTIONS ),
// rename office:value-* to *:value-*
ENTRY1( TEXT, VARIABLE_DECL, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_VALUE_TYPE_ACTIONS ), /* generated entry */
ENTRY1( TEXT, VARIABLE_SET, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_VALUE_TYPE_ACTIONS), /* generated entry */
ENTRY1( TEXT, VARIABLE_INPUT, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_VALUE_TYPE_ACTIONS), /* generated entry */
ENTRY1( TEXT, USER_FIELD_DECL, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_VALUE_TYPE_ACTIONS), /* generated entry */
ENTRY1( TEXT, EXPRESSION, XML_ETACTION_PROC_ATTRS,
OASIS_TEXT_VALUE_TYPE_ACTIONS), /* generated entry */
ENTRY1( TEXT, USER_DEFINED, XML_ETACTION_PROC_ATTRS,
OASIS_DATETIME_ACTIONS ), // Add OASIS_TEXT_VALUE_TYPE_ACTIONS if attrs are added to text:user-defined
ENTRY1( TABLE, TABLE_CELL, XML_ETACTION_PROC_ATTRS,
OASIS_TABLE_VALUE_TYPE_ACTIONS), /* generated entry */
ENTRY1( TABLE, COVERED_TABLE_CELL, XML_ETACTION_PROC_ATTRS,
OASIS_TABLE_VALUE_TYPE_ACTIONS), /* generated entry */
ENTRY1( TABLE, CHANGE_TRACK_TABLE_CELL, XML_ETACTION_PROC_ATTRS,
OASIS_TABLE_VALUE_TYPE_ACTIONS), /* generated entry */
// ENTRY1( FORM, PROPERTY, XML_ETACTION_PROC_ATTRS,
// OASIS_VALUE_TYPE_ACTIONS), /* TODO: generated entry */
// ENTRY1( FORM, LIST_PROPERTY, XML_ETACTION_PROC_ATTRS,
// OASIS_VALUE_TYPE_ACTIONS), /* generated entry */
ENTRY1( OFFICE, ANNOTATION, XML_ETACTION_MOVE_ELEMS_TO_ATTRS,
OASIS_ANNOTATION_ACTIONS ), /* generated entry */
ENTRY1( OFFICE, CHANGE_INFO, XML_ETACTION_MOVE_ELEMS_TO_ATTRS,
OASIS_CHANGE_INFO_ACTIONS ), /* generated entry */
ENTRY1( TEXT, DDE_CONNECTION_DECL, XML_ETACTION_PROC_ATTRS,
OASIS_DDE_CONNECTION_DECL_ACTIONS ),
ENTRY0( FORM, TEXT, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, TEXTAREA, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, FIXED_TEXT, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, FILE, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, PASSWORD, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, FORMATTED_TEXT, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, BUTTON, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, IMAGE, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, CHECKBOX, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, RADIO, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, LISTBOX, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, COMBOBOX, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, FRAME, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, HIDDEN, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, IMAGE_FRAME, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, GRID, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, VALUE_RANGE, XML_ETACTION_FORM_CONTROL ),
ENTRY0( FORM, GENERIC_CONTROL, XML_ETACTION_FORM_CONTROL ),
ENTRY1( FORM, COLUMN, XML_ETACTION_PROC_ATTRS,
OASIS_FORM_COLUMN_ACTIONS ),
ENTRY1( FORM, PROPERTY, XML_ETACTION_FORM_PROPERTY, XML_PROPERTY ),
ENTRY1( FORM, LIST_PROPERTY, XML_ETACTION_FORM_PROPERTY,
XML_LIST_PROPERTY ),
ENTRY1( FORM, LIST_VALUE, XML_ETACTION_FORM_PROPERTY, XML_LIST_VALUE ),
// process xlink:href
ENTRY1( META, TEMPLATE, XML_ETACTION_PROC_ATTRS,
OASIS_XLINK_ACTIONS ), /* generated entry */
ENTRY1( META, AUTO_RELOAD, XML_ETACTION_PROC_ATTRS,
OASIS_XLINK_ACTIONS ), /* generated entry */
ENTRY1( TEXT, SECTION_SOURCE, XML_ETACTION_PROC_ATTRS,
OASIS_XLINK_ACTIONS ), /* generated entry */
ENTRY1( TEXT, SCRIPT, XML_ETACTION_PROC_ATTRS,
OASIS_XLINK_ACTIONS ), /* generated entry */
ENTRY1( TEXT, ALPHABETICAL_INDEX_AUTO_MARK_FILE, XML_ETACTION_PROC_ATTRS,
OASIS_XLINK_ACTIONS ), /* generated entry */
ENTRY1( TABLE, TABLE_SOURCE, XML_ETACTION_PROC_ATTRS,
OASIS_XLINK_ACTIONS ), /* generated entry */
ENTRY1( TABLE, CELL_RANGE_SOURCE, XML_ETACTION_PROC_ATTRS,
OASIS_XLINK_ACTIONS ), /* generated entry */
ENTRY1( DRAW, A, XML_ETACTION_PROC_ATTRS,
OASIS_XLINK_ACTIONS ), /* generated entry */
ENTRY1( PRESENTATION, SOUND, XML_ETACTION_PROC_ATTRS,
OASIS_XLINK_ACTIONS ), /* generated entry */
ENTRY1( FORM, FORM, XML_ETACTION_PROC_ATTRS,
OASIS_FORM_ACTIONS ), /* generated entry */
// ENTRY1( SVG, FONT_FACE_URI, XML_ETACTION_PROC_ATTRS,
// OASIS_XLINK_ACTIONS ), /* generated entry */
// ENTRY1( SVG, DEFINITION_SRC, XML_ETACTION_PROC_ATTRS,
// OASIS_XLINK_ACTIONS ), /* generated entry */
ENTRY2QN( CHART, SYMBOL_IMAGE, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
XML_NAMESPACE_STYLE, XML_SYMBOL_IMAGE,
OASIS_BACKGROUND_IMAGE_ACTIONS ),
// OASIS_XLINK_ACTIONS ), /* generated entry */
// events don't have real URIs
// ENTRY1( PRESENTATION, EVENT_LISTENER, XML_ETACTION_PROC_ATTRS,
// OASIS_XLINK_ACTIONS ), /* generated entry */
// ENTRY1( SCRIPT, EVENT_LISTENER, XML_ETACTION_PROC_ATTRS,
// OASIS_XLINK_ACTIONS ), /* generated entry */
// add namespace prefix to name
ENTRY1( CONFIG, CONFIG_ITEM_SET, XML_ETACTION_PROC_ATTRS,
OASIS_CONFIG_ITEM_SET_ACTIONS ),
// add namespace prefix to formula and condition
// text:condition
ENTRY1( TEXT, SECTION, XML_ETACTION_PROC_ATTRS,
OASIS_FORMULA_ACTIONS ), /* generated entry */
// text:formula
ENTRY1( TEXT, SEQUENCE, XML_ETACTION_PROC_ATTRS,
OASIS_FORMULA_ACTIONS ), /* generated entry */
// text:condition
ENTRY1( TEXT, DATABASE_NEXT, XML_ETACTION_PROC_ATTRS,
OASIS_FORMULA_ACTIONS ), /* generated entry */
// text:condition
ENTRY2QN( TEXT, DATABASE_ROW_SELECT, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
XML_NAMESPACE_TEXT, XML_DATABASE_SELECT,
OASIS_FORMULA_ACTIONS ), /* generated entry */
// text:condition
ENTRY1( TEXT, CONDITIONAL_TEXT, XML_ETACTION_PROC_ATTRS,
OASIS_FORMULA_ACTIONS ), /* generated entry */
// text:condition
ENTRY1( TEXT, HIDDEN_TEXT, XML_ETACTION_PROC_ATTRS,
OASIS_FORMULA_ACTIONS ), /* generated entry */
// text:condition
ENTRY1( TEXT, HIDDEN_PARAGRAPH, XML_ETACTION_PROC_ATTRS,
OASIS_FORMULA_ACTIONS ), /* generated entry */
// text:formula
ENTRY1( TEXT, TABLE_FORMULA, XML_ETACTION_PROC_ATTRS,
OASIS_FORMULA_ACTIONS ), /* generated entry */
// process table::content-validation
ENTRY1( TABLE, CONTENT_VALIDATION, XML_ETACTION_PROC_ATTRS,
OASIS_CONTENT_VALIDATION_ACTIONS ),
// rename <table:dependencies> to <table:dependences>
ENTRY1Q( TABLE, DEPENDENCIES, XML_ETACTION_RENAME_ELEM,
XML_NAMESPACE_TABLE, XML_DEPENDENCES ),
ENTRY1Q( TABLE, DEPENDENCY, XML_ETACTION_RENAME_ELEM,
XML_NAMESPACE_TABLE, XML_DEPENDENCE ),
// process table::conversion-mode
ENTRY1( TABLE, CONVERSION_MODE, XML_ETACTION_PROC_ATTRS,
OASIS_DDE_CONV_MODE_ACTIONS ),
// process table::data-pilot-member
ENTRY1( TABLE, DATA_PILOT_MEMBER, XML_ETACTION_PROC_ATTRS,
OASIS_DATAPILOT_MEMBER_ACTIONS ),
// process table::data-pilot-level
ENTRY1( TABLE, DATA_PILOT_LEVEL, XML_ETACTION_PROC_ATTRS,
OASIS_DATAPILOT_LEVEL_ACTIONS ),
// process table::source-service
ENTRY1( TABLE, SOURCE_SERVICE, XML_ETACTION_PROC_ATTRS,
OASIS_SOURCE_SERVICE_ACTIONS ),
// entries for date time change (#i36576#)
ENTRY1( TEXT, DATE, XML_ETACTION_PROC_ATTRS, OASIS_DATETIME_ACTIONS ),
ENTRY1( TEXT, CREATION_DATE, XML_ETACTION_PROC_ATTRS,
OASIS_DATETIME_ACTIONS ),
ENTRY1( TEXT, TIME, XML_ETACTION_PROC_ATTRS, OASIS_DATETIME_ACTIONS ),
ENTRY1( TEXT, CREATION_TIME, XML_ETACTION_PROC_ATTRS,
OASIS_DATETIME_ACTIONS ),
ENTRY1( TEXT, PRINT_TIME, XML_ETACTION_PROC_ATTRS, OASIS_DATETIME_ACTIONS ),
ENTRY1( TEXT, MODIFICATION_TIME, XML_ETACTION_PROC_ATTRS,
OASIS_DATETIME_ACTIONS ),
ENTRY1( TEXT, EDITING_DURATION, XML_ETACTION_PROC_ATTRS,
OASIS_DATETIME_ACTIONS ),
ENTRY1( FORM, TIME, XML_ETACTION_PROC_ATTRS, OASIS_DATETIME_ACTIONS ),
ENTRY1( PRESENTATION, SETTINGS, XML_ETACTION_PROC_ATTRS,
OASIS_DATETIME_ACTIONS ),
// fix <text:alphabatical-index-mark text:main-etry>
ENTRY1( TEXT, ALPHABETICAL_INDEX_MARK, XML_ETACTION_PROC_ATTRS,
OASIS_ALPHABETICAL_INDEX_MARK_ACTIONS ),
ENTRY1( TEXT, ALPHABETICAL_INDEX_MARK_START, XML_ETACTION_PROC_ATTRS,
OASIS_ALPHABETICAL_INDEX_MARK_ACTIONS ),
// fix id strings in old animation elements
ENTRY1( PRESENTATION, DIM, XML_ETACTION_PROC_ATTRS, OASIS_ANIMATION_ACTIONS ),
ENTRY1( PRESENTATION, PLAY, XML_ETACTION_PROC_ATTRS, OASIS_ANIMATION_ACTIONS ),
ENTRY1( PRESENTATION, SHOW_TEXT, XML_ETACTION_PROC_ATTRS, OASIS_ANIMATION_ACTIONS ),
ENTRY1( PRESENTATION, SHOW_SHAPE, XML_ETACTION_PROC_ATTRS, OASIS_ANIMATION_ACTIONS ),
ENTRY1( PRESENTATION, HIDE_TEXT, XML_ETACTION_PROC_ATTRS, OASIS_ANIMATION_ACTIONS ),
ENTRY1( PRESENTATION, HIDE_SHAPE, XML_ETACTION_PROC_ATTRS, OASIS_ANIMATION_ACTIONS ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ETACTION_EOT )
};
// XML_ETACTION_STYLE
static XMLTransformerActionInit const aStyleActionTable[] =
{
ENTRY0( STYLE, FAMILY, XML_ATACTION_STYLE_FAMILY ),
ENTRY1( STYLE, NAME, XML_ATACTION_DECODE_STYLE_NAME,
XML_FAMILY_TYPE_END ),
ENTRY1( STYLE, DISPLAY_NAME, XML_ATACTION_STYLE_DISPLAY_NAME,
XML_FAMILY_TYPE_END ),
ENTRY1( STYLE, PARENT_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_END ),
ENTRY1( STYLE, NEXT_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_END ),
ENTRY1( STYLE, LIST_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_LIST ),
ENTRY1( STYLE, MASTER_PAGE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_MASTER_PAGE ),
ENTRY0( STYLE, DEFAULT_OUTLINE_LEVEL, XML_ATACTION_REMOVE ),
ENTRY1( TEXT, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_TEXT ), // list level styles
ENTRY1( DRAW, NAME, XML_ATACTION_DECODE_STYLE_NAME,
XML_FAMILY_TYPE_END ),
ENTRY1( DRAW, DISPLAY_NAME, XML_ATACTION_STYLE_DISPLAY_NAME,
XML_FAMILY_TYPE_END ),
ENTRY0( DRAW, DISTANCE, XML_ATACTION_IN2INCH ),
ENTRY0( DRAW, DOTS1_LENGTH, XML_ATACTION_IN2INCH ),
ENTRY0( DRAW, DOTS2_LENGTH, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, WIDTH, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, HEIGHT, XML_ATACTION_IN2INCH ),
ENTRY0( DRAW, START, XML_ATACTION_NEG_PERCENT ),
ENTRY0( DRAW, END, XML_ATACTION_NEG_PERCENT ),
ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(true) ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_FRAME_ELEM_ACTIONS
static XMLTransformerActionInit const aFrameActionTable[] =
{
ENTRY0( DRAW, TEXT_BOX, XML_ETACTION_COPY ),
ENTRY0( DRAW, IMAGE, XML_ETACTION_COPY ),
ENTRY0( DRAW, OBJECT, XML_ETACTION_COPY ),
ENTRY0( DRAW, OBJECT_OLE, XML_ETACTION_COPY ),
ENTRY0( DRAW, APPLET, XML_ETACTION_COPY ),
ENTRY0( DRAW, PLUGIN, XML_ETACTION_COPY ),
ENTRY0( DRAW, FLOATING_FRAME, XML_ETACTION_COPY ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_EVENT_ELEM_ACTIONS
static XMLTransformerActionInit const aEventActionTable[] =
{
ENTRY0( XLINK, HREF, XML_ATACTION_HREF ),
ENTRY1( SCRIPT, LANGUAGE, XML_ATACTION_REMOVE_NAMESPACE_PREFIX,
XML_NAMESPACE_OOO ),
ENTRY0( SCRIPT, EVENT_NAME, XML_ATACTION_EVENT_NAME ),
ENTRY0( SCRIPT, MACRO_NAME, XML_ATACTION_MACRO_NAME ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_EVENT_ELEM_ACTIONS
static XMLTransformerActionInit const aDlgActionTable[] =
{
ENTRY0( DLG, BORDER, XML_ATACTION_DLG_BORDER )
};
// action table for OASIS_MASTER_PAGE_ACTIONS
static XMLTransformerActionInit const aMasterPageActionTable[] =
{
ENTRY1( STYLE, NAME, XML_ATACTION_DECODE_STYLE_NAME,
XML_FAMILY_TYPE_MASTER_PAGE ),
ENTRY1( STYLE, DISPLAY_NAME, XML_ATACTION_STYLE_DISPLAY_NAME,
XML_FAMILY_TYPE_MASTER_PAGE ),
ENTRY1( STYLE, NEXT_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_MASTER_PAGE ),
ENTRY1Q( STYLE, PAGE_LAYOUT_NAME, XML_ATACTION_RENAME,
XML_NAMESPACE_STYLE, XML_PAGE_MASTER_NAME ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// action table for OASIS_TEXT_STYLE_REF_ACTIONS
static XMLTransformerActionInit const aTextStyleRefActionTable[] =
{
ENTRY1( TEXT, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_TEXT ),
ENTRY1( TEXT, VISITED_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_TEXT ),
ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(false) ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// action table for OASIS_PARA_STYLE_REF_ACTIONS
static XMLTransformerActionInit const aParaStyleRefActionTable[] =
{
ENTRY1( TEXT, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_PARAGRAPH ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// action table for OASIS_LIST_STYLE_REF_ACTIONS
static XMLTransformerActionInit const aListStyleRefActionTable[] =
{
ENTRY1( TEXT, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_LIST ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// action table for OASIS_MASTER_PAGE_REF_ACTIONS
static XMLTransformerActionInit const aMasterPageRefActionTable[] =
{
ENTRY1( DRAW, MASTER_PAGE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_MASTER_PAGE ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// action table for OASIS_MAP_STYLE_REF_ACTIONS
static XMLTransformerActionInit const aMapStyleRefActionTable[] =
{
ENTRY1( STYLE, APPLY_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_END ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// action table for OASIS_TABLE_STYLE_REF_ACTIONS (#i40011#, #i40015#)
static XMLTransformerActionInit const aTableStyleRefActionTable[] =
{
ENTRY1( TABLE, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_END ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
static XMLTransformerActionInit const aFontFaceActionTable[] =
{
ENTRY1Q( SVG, FONT_FAMILY, XML_ATACTION_RENAME,
XML_NAMESPACE_FO, XML_FONT_FAMILY ),
ENTRY1Q( STYLE, FONT_ADORNMENTS, XML_ATACTION_RENAME,
XML_NAMESPACE_STYLE, XML_FONT_STYLE_NAME ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// action table for OASIS_PARA_ACTIONS
static XMLTransformerActionInit const aParaActionTable[] =
{
ENTRY1( TEXT, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_PARAGRAPH ),
ENTRY1( TEXT, COND_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_PARAGRAPH ),
ENTRY1Q( TEXT, OUTLINE_LEVEL, XML_ATACTION_RENAME,
XML_NAMESPACE_TEXT, XML_LEVEL ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// !!ATTENTION!! If you change something here, please also change
// aConnectorActionTable if appropriate
static XMLTransformerActionInit const aShapeActionTable[] =
{
ENTRY1( DRAW, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_GRAPHIC ),
ENTRY1( DRAW, TEXT_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_PARAGRAPH ),
ENTRY1( PRESENTATION, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_PRESENTATION ),
ENTRY0( SVG, X, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, Y, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, X1, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, Y1, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, X2, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, Y2, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, CX, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, CY, XML_ATACTION_IN2INCH ),
ENTRY0( DRAW, END_X, XML_ATACTION_IN2INCH ),
ENTRY0( DRAW, END_Y, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, R, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, RX, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, RY, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, WIDTH, XML_ATACTION_SVG_WIDTH_HEIGHT_OASIS ),
ENTRY0( SVG, HEIGHT, XML_ATACTION_SVG_WIDTH_HEIGHT_OASIS ),
ENTRY0( FO, MIN_WIDTH, XML_ATACTION_IN2INCH ),
ENTRY0( FO, MIN_HEIGHT, XML_ATACTION_IN2INCH ),
ENTRY0( FO, MAX_WIDTH, XML_ATACTION_IN2INCH ),
ENTRY0( FO, MAX_HEIGHT, XML_ATACTION_IN2INCH ),
ENTRY0( DRAW, CORNER_RADIUS, XML_ATACTION_IN2INCH ),
ENTRY0( DRAW, LINE_SKEW, XML_ATACTION_INS2INCHS ),
ENTRY0( DRAW, CAPTION_POINT_X, XML_ATACTION_IN2INCH ),
ENTRY0( DRAW, CAPTION_POINT_Y, XML_ATACTION_IN2INCH ),
ENTRY0( DR3D, DISTANCE, XML_ATACTION_IN2INCH ),
ENTRY0( DR3D, FOCAL_LENGTH, XML_ATACTION_IN2INCH ),
ENTRY1Q( DRAW, CONTROL, XML_ATACTION_RENAME,
XML_NAMESPACE_FORM, XML_ID ),
ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(true) ),
// needed by chart:legend. The legend needs also the draw actions. As
// there is no merge mechanism, all actions have to be in the same table
ENTRY2( CHART, LEGEND_POSITION, XML_ATACTION_RENAME_ATTRIBUTE,
RENAME_ENTRY( XML_START, XML_LEFT ),
RENAME_ENTRY( XML_END, XML_RIGHT )),
ENTRY0( DRAW, ID, XML_ATACTION_DECODE_ID ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_ANIMATION_ACTIONS
static XMLTransformerActionInit const aAnimationActionTable[] =
{
ENTRY0( DRAW, SHAPE_ID, XML_ATACTION_DECODE_ID ),
ENTRY0( PRESENTATION, DELAY, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( PRESENTATION, PAUSE, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OOO_CONNECTOR_ACTIONS
static XMLTransformerActionInit const aConnectorActionTable[] =
{
ENTRY1( DRAW, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_GRAPHIC ),
ENTRY1( DRAW, TEXT_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_PARAGRAPH ),
ENTRY1( PRESENTATION, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_PRESENTATION ),
ENTRY0( SVG, X1, XML_ATACTION_IN2TWIPS ),
ENTRY0( SVG, Y1, XML_ATACTION_IN2TWIPS ),
ENTRY0( SVG, X2, XML_ATACTION_IN2TWIPS ),
ENTRY0( SVG, Y2, XML_ATACTION_IN2TWIPS ),
ENTRY0( DRAW, END_X, XML_ATACTION_IN2INCH ),
ENTRY0( DRAW, END_Y, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, WIDTH, XML_ATACTION_SVG_WIDTH_HEIGHT_OASIS ),
ENTRY0( SVG, HEIGHT, XML_ATACTION_SVG_WIDTH_HEIGHT_OASIS ),
ENTRY0( FO, MIN_WIDTH, XML_ATACTION_IN2INCH ),
ENTRY0( FO, MIN_HEIGHT, XML_ATACTION_IN2INCH ),
ENTRY0( FO, MAX_WIDTH, XML_ATACTION_IN2INCH ),
ENTRY0( FO, MAX_HEIGHT, XML_ATACTION_IN2INCH ),
ENTRY0( DRAW, LINE_SKEW, XML_ATACTION_INS2INCHS ),
ENTRY1Q( DRAW, CONTROL, XML_ATACTION_RENAME,
XML_NAMESPACE_FORM, XML_ID ),
ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(true) ),
ENTRY0( DRAW, START_SHAPE, XML_ATACTION_DECODE_ID ),
ENTRY0( DRAW, END_SHAPE, XML_ATACTION_DECODE_ID ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_INDEX_ENTRY_TAB_STOP_ACTIONS
static XMLTransformerActionInit const aIndexEntryTabStopActionTable[] =
{
ENTRY0( STYLE, POSITION, XML_ATACTION_IN2INCH ),
ENTRY1( TEXT, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_TEXT ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_TAB_STOP_ACTIONS
static XMLTransformerActionInit const aTabStopActionTable[] =
{
ENTRY0( STYLE, POSITION, XML_ATACTION_IN2INCH ),
ENTRY1Q( STYLE, LEADER_TEXT, XML_ATACTION_RENAME,
XML_NAMESPACE_STYLE, XML_LEADER_CHAR ),
ENTRY0( STYLE, LEADER_STYLE, XML_ATACTION_REMOVE ),
ENTRY0( STYLE, LEADER_TYPE, XML_ATACTION_REMOVE ),
ENTRY0( STYLE, LEADER_WIDTH, XML_ATACTION_REMOVE ),
ENTRY0( STYLE, LEADER_COLOR, XML_ATACTION_REMOVE ),
ENTRY0( STYLE, LEADER_TEXT_STYLE, XML_ATACTION_REMOVE ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_LINENUMBERING_ACTIONS
static XMLTransformerActionInit const aLineNumberingActionTable[] =
{
ENTRY0( TEXT, OFFSET, XML_ATACTION_IN2INCH ),
ENTRY1( TEXT, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_TEXT ),
ENTRY1Q( TEXT, COUNT_IN_TEXT_BOXES , XML_ATACTION_RENAME,
XML_NAMESPACE_TEXT, XML_COUNT_IN_FLOATING_FRAMES),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
static XMLTransformerActionInit const aFootnoteSepActionTable[] =
{
ENTRY0( STYLE, WIDTH, XML_ATACTION_IN2INCH ),
ENTRY0( STYLE, DISTANCE_BEFORE_SEP, XML_ATACTION_IN2INCH ),
ENTRY0( STYLE, DISTANCE_AFTER_SEP, XML_ATACTION_IN2INCH ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_NOTES_ACTIONS (processed by special context)
static XMLTransformerActionInit const aNotesActionTable[] =
{
ENTRY0( TEXT, NOTE_CLASS, XML_ATACTION_STYLE_FAMILY ),
ENTRY1( TEXT, CITATION_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_TEXT ),
ENTRY1( TEXT, CITATION_BODY_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_TEXT ),
ENTRY1( TEXT, DEFAULT_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_PARAGRAPH ),
ENTRY1( TEXT, MASTER_PAGE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_MASTER_PAGE ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_DROP_CAP_ACTIONS
static XMLTransformerActionInit const aDropCapActionTable[] =
{
ENTRY0( STYLE, DISTANCE, XML_ATACTION_IN2INCH ),
ENTRY1( STYLE, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_TEXT ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
static XMLTransformerActionInit const aColumnsActionTable[] =
{
ENTRY0( STYLE, COLUMN_GAP, XML_ATACTION_IN2INCH ),
ENTRY0( STYLE, SPACE_BEFORE, XML_ATACTION_REMOVE ),
ENTRY0( STYLE, SPACE_AFTER, XML_ATACTION_REMOVE ),
ENTRY1Q( FO, START_INDENT, XML_ATACTION_RENAME_IN2INCH,
XML_NAMESPACE_FO, XML_MARGIN_LEFT ),
ENTRY1Q( FO, END_INDENT, XML_ATACTION_RENAME_IN2INCH,
XML_NAMESPACE_FO, XML_MARGIN_RIGHT ),
ENTRY0( STYLE, WIDTH, XML_ATACTION_IN2INCH ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_TEXT_VALUE_TYPE_ACTIONS
static XMLTransformerActionInit const aTextValueTypeActionTable[] =
{
ENTRY1Q( OFFICE, VALUE_TYPE, XML_ATACTION_RENAME,
XML_NAMESPACE_TEXT, XML_VALUE_TYPE ),
ENTRY1Q( OFFICE, VALUE, XML_ATACTION_RENAME,
XML_NAMESPACE_TEXT, XML_VALUE ),
ENTRY1Q( OFFICE, CURRENCY, XML_ATACTION_RENAME,
XML_NAMESPACE_TEXT, XML_CURRENCY ),
ENTRY1Q( OFFICE, DATE_VALUE, XML_ATACTION_RENAME_RNG2ISO_DATETIME,
XML_NAMESPACE_TEXT, XML_DATE_VALUE ),
ENTRY1Q( OFFICE, TIME_VALUE, XML_ATACTION_RENAME_RNG2ISO_DATETIME,
XML_NAMESPACE_TEXT, XML_TIME_VALUE ),
ENTRY1Q( OFFICE, BOOLEAN_VALUE, XML_ATACTION_RENAME,
XML_NAMESPACE_TEXT, XML_BOOLEAN_VALUE ),
ENTRY1Q( OFFICE, STRING_VALUE, XML_ATACTION_RENAME,
XML_NAMESPACE_TEXT, XML_STRING_VALUE ),
ENTRY0( TEXT, FORMULA, XML_ATACTION_REMOVE_ANY_NAMESPACE_PREFIX ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_TABLE_VALUE_TYPE_ACTIONS
static XMLTransformerActionInit const aTableValueTypeActionTable[] =
{
ENTRY1Q( OFFICE, VALUE_TYPE, XML_ATACTION_RENAME,
XML_NAMESPACE_TABLE, XML_VALUE_TYPE ),
ENTRY1Q( OFFICE, VALUE, XML_ATACTION_RENAME,
XML_NAMESPACE_TABLE, XML_VALUE ),
ENTRY1Q( OFFICE, CURRENCY, XML_ATACTION_RENAME,
XML_NAMESPACE_TABLE, XML_CURRENCY ),
ENTRY1Q( OFFICE, DATE_VALUE, XML_ATACTION_RENAME_RNG2ISO_DATETIME,
XML_NAMESPACE_TABLE, XML_DATE_VALUE ),
ENTRY1Q( OFFICE, TIME_VALUE, XML_ATACTION_RENAME_RNG2ISO_DATETIME,
XML_NAMESPACE_TABLE, XML_TIME_VALUE ),
ENTRY1Q( OFFICE, BOOLEAN_VALUE, XML_ATACTION_RENAME,
XML_NAMESPACE_TABLE, XML_BOOLEAN_VALUE ),
ENTRY1Q( OFFICE, STRING_VALUE, XML_ATACTION_RENAME,
XML_NAMESPACE_TABLE, XML_STRING_VALUE ),
ENTRY1( TABLE, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_TABLE_CELL ),
ENTRY0( TABLE, FORMULA, XML_ATACTION_REMOVE_ANY_NAMESPACE_PREFIX ),
ENTRY1Q( TABLE, CONTENT_VALIDATION_NAME, XML_ATACTION_RENAME,
XML_NAMESPACE_TABLE, XML_VALIDATION_NAME ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// action table for OASIS_ANNOTATION_ACTIONS
static XMLTransformerActionInit const aAnnotationActionTable[] =
{
ENTRY1Q( DC, CREATOR, XML_ETACTION_MOVE_TO_ATTR,
XML_NAMESPACE_OFFICE, XML_AUTHOR ),
ENTRY1Q( DC, DATE, XML_ETACTION_MOVE_TO_ATTR_RNG2ISO_DATETIME,
XML_NAMESPACE_OFFICE, XML_CREATE_DATE ),
ENTRY1Q( META, DATE_STRING, XML_ETACTION_MOVE_TO_ATTR,
XML_NAMESPACE_OFFICE, XML_CREATE_DATE_STRING ),
ENTRY0( TEXT, P, XML_ETACTION_EXTRACT_CHARACTERS ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ETACTION_EOT )
};
// action table for OASIS_CHANGE_INFO_ACTIONS
static XMLTransformerActionInit const aChangeInfoActionTable[] =
{
ENTRY1Q( DC, CREATOR, XML_ETACTION_MOVE_TO_ATTR,
XML_NAMESPACE_OFFICE, XML_CHG_AUTHOR ),
ENTRY1Q( DC, DATE, XML_ETACTION_MOVE_TO_ATTR_RNG2ISO_DATETIME,
XML_NAMESPACE_OFFICE, XML_CHG_DATE_TIME ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ETACTION_EOT )
};
// OASIS_BACKGROUND_IMAGE_ACTIONS
static XMLTransformerActionInit const aBackgroundImageActionTable[] =
{
ENTRY1Q( DRAW, OPACITY, XML_ATACTION_RENAME_NEG_PERCENT,
XML_NAMESPACE_DRAW, XML_TRANSPARENCY ),
ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(true) ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_DDE_CONNECTION_DECL
static XMLTransformerActionInit const aDDEConnectionDeclActionTable[] =
{
ENTRY1Q( OFFICE, NAME, XML_ATACTION_RENAME,
XML_NAMESPACE_TEXT, XML_NAME ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_FORM_CONTROL_ACTIONS
static XMLTransformerActionInit const aFormControlActionTable[] =
{
ENTRY0( FORM, NAME, XML_ATACTION_MOVE_TO_ELEM ),
ENTRY2QN( FORM, CONTROL_IMPLEMENTATION,
XML_ATACTION_RENAME_REMOVE_NAMESPACE_PREFIX,
XML_NAMESPACE_FORM, XML_SERVICE_NAME,
XML_NAMESPACE_OOO ),
ENTRY0( FORM, ID, XML_ATACTION_MOVE_TO_ELEM ),
ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(false) ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_FORM_COLUMN_ACTIONS
static XMLTransformerActionInit const aFormColumnActionTable[] =
{
ENTRY1Q( FORM, TEXT_STYLE_NAME, XML_ATACTION_RENAME_DECODE_STYLE_NAME_REF,
XML_NAMESPACE_FORM, XML_COLUMN_STYLE_NAME ),
ENTRY2QN( FORM, CONTROL_IMPLEMENTATION,
XML_ATACTION_RENAME_REMOVE_NAMESPACE_PREFIX,
XML_NAMESPACE_FORM, XML_SERVICE_NAME,
XML_NAMESPACE_OOO ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_FORM_PROP_ACTIONS
static XMLTransformerActionInit const aFormPropActionTable[] =
{
ENTRY1Q( OFFICE, VALUE_TYPE, XML_ATACTION_RENAME,
XML_NAMESPACE_FORM, XML_PROPERTY_TYPE ),
ENTRY0( OFFICE, VALUE, XML_ATACTION_REMOVE ),
ENTRY0( OFFICE, STRING_VALUE, XML_ATACTION_REMOVE ),
ENTRY0( OFFICE, BOOLEAN_VALUE, XML_ATACTION_REMOVE ),
ENTRY0( OFFICE, DATE_VALUE, XML_ATACTION_REMOVE ),
ENTRY0( OFFICE, TIME_VALUE, XML_ATACTION_REMOVE ),
ENTRY0( OFFICE, CURRENCY, XML_ATACTION_REMOVE ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_XLINK_ACTIONS
static XMLTransformerActionInit const aXLinkActionTable[] =
{
ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(false) ),
ENTRY0( TABLE, REFRESH_DELAY, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_CONFIG_ITEM_SET_ACTIONS
static XMLTransformerActionInit const aConfigItemSetActionTable[] =
{
ENTRY1( CONFIG, NAME, XML_ATACTION_REMOVE_NAMESPACE_PREFIX,
XML_NAMESPACE_OOO ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_FORMULA_ACTIONS
static XMLTransformerActionInit const aFormulaActionTable[] =
{
ENTRY0( TEXT, CONDITION, XML_ATACTION_REMOVE_ANY_NAMESPACE_PREFIX ),
ENTRY0( TEXT, FORMULA, XML_ATACTION_REMOVE_ANY_NAMESPACE_PREFIX ),
ENTRY0( TABLE, CONDITION, XML_ATACTION_REMOVE_ANY_NAMESPACE_PREFIX ),
ENTRY0( TABLE, FORMULA, XML_ATACTION_REMOVE_ANY_NAMESPACE_PREFIX ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_CONTENT_VALIDATION_ACTIONS
static XMLTransformerActionInit const aContentValidationActionTable[] =
{
ENTRY0( TABLE, CONDITION, XML_ATACTION_REMOVE_ANY_NAMESPACE_PREFIX ),
ENTRY0( TABLE, DISPLAY_LIST, XML_ATACTION_REMOVE ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_DDE_CONV_MODE_ACTIONS
static XMLTransformerActionInit const aDDEConvModeActionTable[] =
{
ENTRY1Q( TABLE, KEEP_TEXT, XML_ATACTION_RENAME,
XML_NAMESPACE_TABLE, XML_LET_TEXT ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_DATAPILOT_MEMBER_ACTIONS
static XMLTransformerActionInit const aDataPilotMemberActionTable[] =
{
ENTRY1Q( TABLE, SHOW_DETAILS, XML_ATACTION_RENAME,
XML_NAMESPACE_TABLE, XML_DISPLAY_DETAILS ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_DATAPILOT_LEVEL_ACTIONS
static XMLTransformerActionInit const aDataPilotLevelActionTable[] =
{
ENTRY1Q( TABLE, SHOW_EMPTY, XML_ATACTION_RENAME,
XML_NAMESPACE_TABLE, XML_DISPLAY_EMPTY ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_SOURCE_SERVICE_ACTIONS
static XMLTransformerActionInit const aSourceServiceActionTable[] =
{
ENTRY1Q( TABLE, USER_NAME, XML_ATACTION_RENAME,
XML_NAMESPACE_TABLE, XML_USERNAME ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_CHART_ACTIONS
static XMLTransformerActionInit const aChartActionTable[] =
{
ENTRY0( CHART, CLASS, XML_ATACTION_REMOVE_ANY_NAMESPACE_PREFIX ),
ENTRY1( DRAW, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
XML_FAMILY_TYPE_GRAPHIC ),
ENTRY0( SVG, WIDTH, XML_ATACTION_IN2INCH ),
ENTRY0( SVG, HEIGHT, XML_ATACTION_IN2INCH ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_FORM_ACTIONS
static XMLTransformerActionInit const aFormActionTable[] =
{
ENTRY2QN( FORM, CONTROL_IMPLEMENTATION,
XML_ATACTION_RENAME_REMOVE_NAMESPACE_PREFIX,
XML_NAMESPACE_FORM, XML_SERVICE_NAME,
XML_NAMESPACE_OOO ),
ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(false) ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_ALPHABETICAL_INDEX_MARK_ACTIONS
static XMLTransformerActionInit const aAlphabeticalIndexMarkActionTable[] =
{
ENTRY1Q( TEXT, MAIN_ENTRY, XML_ATACTION_RENAME,
XML_NAMESPACE_TEXT, XML_MAIN_ETRY ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_DRAW_AREA_POLYGON_ACTIONS (to be added to OASIS_SHAPE_ACTIONS)
static XMLTransformerActionInit const aDrawAreaPolygonActionTable[] =
{
ENTRY1Q( DRAW, POINTS, XML_ATACTION_RENAME,
XML_NAMESPACE_SVG, XML_POINTS ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_SCRIPT_ACTIONS
static XMLTransformerActionInit const aScriptActionTable[] =
{
ENTRY1( SCRIPT, LANGUAGE, XML_ATACTION_REMOVE_NAMESPACE_PREFIX, XML_NAMESPACE_OOO ),
ENTRY1Q( OOO, NAME, XML_ATACTION_RENAME, XML_NAMESPACE_SCRIPT, XML_NAME ),
ENTRY1Q( OOO, READONLY, XML_ATACTION_RENAME, XML_NAMESPACE_SCRIPT, XML_READONLY ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
// OASIS_DATETIME_ACTIONS
static XMLTransformerActionInit const aDateTimeActionTable[] =
{
ENTRY0( TEXT, DATE_VALUE, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( TEXT, TIME_VALUE, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( TEXT, DATE_ADJUST, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( TEXT, TIME_ADJUST, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( TEXT, DURATION, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( OFFICE, DATE_VALUE, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( OFFICE, TIME_VALUE, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( FORM, VALUE, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( FORM, CURRENT_VALUE, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( TABLE, DATE_START, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( TABLE, DATE_END, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( TABLE, REFRESH_DELAY, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( PRESENTATION, DELAY, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( PRESENTATION, PAUSE, XML_ATACTION_RNG2ISO_DATETIME ),
ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
};
static XMLTokenEnum const aTokenMap[] =
{
XML_NONE, XML_SOLID, XML_DOTTED, XML_DASH, XML_LONG_DASH, XML_DOT_DASH,
XML_DOT_DOT_DASH, XML_WAVE, XML_SMALL_WAVE, XML_TOKEN_END
};
class XMLTableTransformerContext_Impl : public XMLTransformerContext
{
OUString m_aElemQName;
public:
XMLTableTransformerContext_Impl( XMLTransformerBase& rTransformer,
const OUString& rQName );
virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
virtual void EndElement() override;
};
XMLTableTransformerContext_Impl::XMLTableTransformerContext_Impl(
XMLTransformerBase& rImp,
const OUString& rQName ) :
XMLTransformerContext( rImp, rQName ),
m_aElemQName( rQName )
{
}
void XMLTableTransformerContext_Impl::StartElement(
const Reference< XAttributeList >& rAttrList )
{
Reference< XAttributeList > xAttrList( rAttrList );
XMLMutableAttributeList *pMutableAttrList = nullptr;
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for( sal_Int16 i=0; i < nAttrCount; i++ )
{
const OUString& rAttrName = xAttrList->getNameByIndex( i );
OUString aLocalName;
sal_uInt16 nPrefix =
GetTransformer().GetNamespaceMap().GetKeyByAttrName( rAttrName,
&aLocalName );
if( XML_NAMESPACE_TABLE == nPrefix )
{
if ( IsXMLToken( aLocalName, XML_IS_SUB_TABLE ) )
{
const OUString& rValue = xAttrList->getValueByIndex( i );
if( IsXMLToken( rValue, XML_TRUE ) )
{
m_aElemQName = GetTransformer().GetNamespaceMap().GetQNameByKey(
XML_NAMESPACE_TABLE,
::xmloff::token::GetXMLToken( XML_SUB_TABLE ) );
if ( !pMutableAttrList )
{
pMutableAttrList =
new XMLMutableAttributeList( xAttrList );
xAttrList = pMutableAttrList;
}
pMutableAttrList->RemoveAttributeByIndex( i );
}
// #i50521# - no break here for safety reason.
}
// Convert attribute table:style-name for <table:table> (#i40011#, #i40015#)
else if ( IsXMLToken( aLocalName, XML_STYLE_NAME ) )
{
const OUString& rValue = xAttrList->getValueByIndex( i );
OUString aAttrValue( rValue );
if( XMLTransformerBase::DecodeStyleName(aAttrValue) )
{
if ( !pMutableAttrList )
{
pMutableAttrList =
new XMLMutableAttributeList( xAttrList );
xAttrList = pMutableAttrList;
}
pMutableAttrList->SetValueByIndex( i, aAttrValue );
}
}
else if( IsXMLToken( aLocalName, XML_PRINT ) )
{
if ( !pMutableAttrList )
{
pMutableAttrList =
new XMLMutableAttributeList( xAttrList );
xAttrList = pMutableAttrList;
}
pMutableAttrList->RemoveAttributeByIndex( i );
}
}
}
GetTransformer().GetDocHandler()->startElement( m_aElemQName, xAttrList );
}
void XMLTableTransformerContext_Impl::EndElement()
{
GetTransformer().GetDocHandler()->endElement( m_aElemQName );
}
class XMLBodyOASISTransformerContext_Impl : public XMLTransformerContext
{
bool m_bFirstChild;
public:
XMLBodyOASISTransformerContext_Impl( XMLTransformerBase& rTransformer,
const OUString& rQName );
virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
virtual rtl::Reference<XMLTransformerContext> CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const OUString& rQName,
const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
virtual void EndElement() override;
};
XMLBodyOASISTransformerContext_Impl::XMLBodyOASISTransformerContext_Impl(
XMLTransformerBase& rImp,
const OUString& rQName ) :
XMLTransformerContext( rImp, rQName ),
m_bFirstChild( false )
{
}
void XMLBodyOASISTransformerContext_Impl::StartElement(
const Reference< XAttributeList >& )
{
}
rtl::Reference<XMLTransformerContext> XMLBodyOASISTransformerContext_Impl::CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const OUString& rQName,
const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList )
{
if (!m_bFirstChild)
{
m_bFirstChild = true;
XMLTransformerContext::StartElement(xAttrList);
}
return XMLTransformerContext::CreateChildContext(nPrefix, rLocalName, rQName, xAttrList);
}
void XMLBodyOASISTransformerContext_Impl::EndElement()
{
if (!m_bFirstChild)
XMLTransformerContext::StartElement(Reference< XAttributeList >());
XMLTransformerContext::EndElement();
}
class XMLTabStopOASISTContext_Impl : public XMLPersElemContentTContext
{
public:
XMLTabStopOASISTContext_Impl( XMLTransformerBase& rTransformer,
const OUString& rQName );
virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
};
XMLTabStopOASISTContext_Impl::XMLTabStopOASISTContext_Impl(
XMLTransformerBase& rImp,
const OUString& rQName ) :
XMLPersElemContentTContext( rImp, rQName )
{
}
void XMLTabStopOASISTContext_Impl::StartElement(
const Reference< XAttributeList >& rAttrList )
{
XMLTransformerActions *pActions =
GetTransformer().GetUserDefinedActions( OASIS_TAB_STOP_ACTIONS );
SAL_WARN_IF( nullptr == pActions, "xmloff.transform", "got no actions" );
sal_Unicode cStyleLeaderChar = 0;
sal_Int16 nLeaderText = -1;
Reference< XAttributeList > xAttrList( rAttrList );
XMLMutableAttributeList *pMutableAttrList = nullptr;
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for( sal_Int16 i=0; i < nAttrCount; i++ )
{
const OUString& rAttrName = xAttrList->getNameByIndex( i );
OUString aLocalName;
sal_uInt16 nPrefix =
GetTransformer().GetNamespaceMap().GetKeyByAttrName( rAttrName,
&aLocalName );
XMLTransformerActions::key_type aKey( nPrefix, aLocalName );
XMLTransformerActions::const_iterator aIter =
pActions->find( aKey );
if( aIter != pActions->end() )
{
if( !pMutableAttrList )
{
pMutableAttrList =
new XMLMutableAttributeList( xAttrList );
xAttrList = pMutableAttrList;
}
const OUString& rAttrValue = xAttrList->getValueByIndex( i );
switch( (*aIter).second.m_nActionType )
{
case XML_ATACTION_REMOVE:
if( IsXMLToken( aLocalName, XML_LEADER_STYLE ) )
{
if( IsXMLToken( rAttrValue, XML_NONE ) )
cStyleLeaderChar = ' ';
else if( IsXMLToken( rAttrValue, XML_DOTTED ) )
cStyleLeaderChar = '.';
else
cStyleLeaderChar = 0;
pMutableAttrList->RemoveAttributeByIndex( i );
--i;
--nAttrCount;
}
break;
case XML_ATACTION_RENAME:
{
OUString aNewAttrQName(
GetTransformer().GetNamespaceMap().GetQNameByKey(
(*aIter).second.GetQNamePrefixFromParam1(),
::xmloff::token::GetXMLToken(
(*aIter).second.GetQNameTokenFromParam1()) ) );
pMutableAttrList->RenameAttributeByIndex( i,
aNewAttrQName );
}
if( IsXMLToken( aLocalName, XML_LEADER_TEXT ) )
{
if( rAttrValue.getLength() > 1 )
{
OUString aAttrValue( rAttrValue.copy( 0, 1 ) );
pMutableAttrList->SetValueByIndex( i, aAttrValue );
nLeaderText = i;
}
}
break;
case XML_ATACTION_IN2INCH:
{
OUString aAttrValue( rAttrValue );
if( XMLTransformerBase::ReplaceSingleInWithInch(
aAttrValue ) )
pMutableAttrList->SetValueByIndex( i, aAttrValue );
}
break;
default:
SAL_WARN( "xmloff.transform", "unknown action" );
break;
}
}
}
if( cStyleLeaderChar && ' ' != cStyleLeaderChar )
{
if( nLeaderText != -1 )
{
OUString aNewAttrQName(
GetTransformer().GetNamespaceMap().GetQNameByKey(
XML_NAMESPACE_STYLE,
::xmloff::token::GetXMLToken( XML_LEADER_CHAR ) ) );
pMutableAttrList->AddAttribute( aNewAttrQName,
OUString( cStyleLeaderChar ) );
}
}
else
{
if( nLeaderText != -1 )
pMutableAttrList->RemoveAttributeByIndex( nLeaderText );
}
XMLPersElemContentTContext::StartElement( xAttrList );
}
class XMLConfigItemTContext_Impl : public XMLTransformerContext
{
OUString m_aContent;
bool m_bIsRedlineProtectionKey;
bool m_bIsCursorX;
bool m_bIsCursorY;
public:
XMLConfigItemTContext_Impl( XMLTransformerBase& rTransformer,
const OUString& rQName );
virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
virtual void EndElement() override;
virtual void Characters( const OUString& rChars ) override;
};
XMLConfigItemTContext_Impl::XMLConfigItemTContext_Impl(
XMLTransformerBase& rImp,
const OUString& rQName ) :
XMLTransformerContext( rImp, rQName ),
m_bIsRedlineProtectionKey( false ),
m_bIsCursorX( false ),
m_bIsCursorY( false )
{
}
void XMLConfigItemTContext_Impl::StartElement(
const Reference< XAttributeList >& rAttrList )
{
sal_Int16 nAttrCount = rAttrList.is() ? rAttrList->getLength() : 0;
for( sal_Int16 i=0; i < nAttrCount; i++ )
{
const OUString& rAttrName = rAttrList->getNameByIndex( i );
OUString aLocalName;
sal_uInt16 nPrefix =
GetTransformer().GetNamespaceMap().GetKeyByAttrName( rAttrName,
&aLocalName );
if( XML_NAMESPACE_CONFIG == nPrefix )
{
if ( IsXMLToken( aLocalName, XML_NAME ) )
{
const OUString& rValue = rAttrList->getValueByIndex( i );
if( rValue == "RedlineProtectionKey" )
m_bIsRedlineProtectionKey = true;
else if( rValue == "CursorPositionX" )
m_bIsCursorX = true;
else if( rValue == "CursorPositionY" )
m_bIsCursorY = true;
break;
}
}
}
XMLTransformerContext::StartElement( rAttrList );
}
void XMLConfigItemTContext_Impl::Characters( const OUString& rChars )
{
OUString sChars(rChars);
if (m_bIsRedlineProtectionKey)
m_aContent += rChars;
else if (m_bIsCursorX || m_bIsCursorY)
{
sal_Int32 nPos = rChars.toInt32();
if (m_bIsCursorX && nPos > 255)
nPos = 255;
else if (m_bIsCursorY && nPos > 31999)
nPos = 31999;
sChars = OUString::number(nPos);
}
XMLTransformerContext::Characters( sChars );
}
void XMLConfigItemTContext_Impl::EndElement()
{
if( m_bIsRedlineProtectionKey )
{
const Reference< XPropertySet > rPropSet =
GetTransformer().GetPropertySet();
if( rPropSet.is() )
{
OUString aPropName("RedlineProtectionKey");
Reference< XPropertySetInfo > xPropSetInfo(
rPropSet->getPropertySetInfo() );
if( xPropSetInfo.is() &&
xPropSetInfo->hasPropertyByName( aPropName ) )
{
Sequence < sal_Int8 > aKey;
::comphelper::Base64::decode( aKey, m_aContent );
rPropSet->setPropertyValue( aPropName, makeAny( aKey ) );
}
}
}
XMLTransformerContext::EndElement();
}
class XMLTrackedChangesOASISTContext_Impl : public XMLTransformerContext
{
OUString const m_aAttrQName;
public:
XMLTrackedChangesOASISTContext_Impl( XMLTransformerBase& rTransformer,
const OUString& rQName,
sal_uInt16 nPrefix,
XMLTokenEnum eToken );
virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
};
XMLTrackedChangesOASISTContext_Impl::XMLTrackedChangesOASISTContext_Impl(
XMLTransformerBase& rImp,
const OUString& rQName,
sal_uInt16 nPrefix,
XMLTokenEnum eToken ) :
XMLTransformerContext( rImp, rQName ),
m_aAttrQName( rImp.GetNamespaceMap().GetQNameByKey( nPrefix,
GetXMLToken(eToken)) )
{
}
void XMLTrackedChangesOASISTContext_Impl::StartElement(
const Reference< XAttributeList >& rAttrList )
{
Reference< XAttributeList > xAttrList( rAttrList );
const Reference< XPropertySet > rPropSet =
GetTransformer().GetPropertySet();
if( rPropSet.is() )
{
OUString aPropName("RedlineProtectionKey");
Reference< XPropertySetInfo > xPropSetInfo(
rPropSet->getPropertySetInfo() );
if( xPropSetInfo.is() &&
xPropSetInfo->hasPropertyByName( aPropName ) )
{
Any aAny = rPropSet->getPropertyValue( aPropName);
Sequence < sal_Int8 > aKey;
aAny >>= aKey;
if( aKey.hasElements() )
{
OUStringBuffer aBuffer;
::comphelper::Base64::encode( aBuffer, aKey );
XMLMutableAttributeList *pMutableAttrList =
new XMLMutableAttributeList( xAttrList );
xAttrList = pMutableAttrList;
pMutableAttrList->AddAttribute( m_aAttrQName,
aBuffer.makeStringAndClear() );
}
}
}
XMLTransformerContext::StartElement( xAttrList );
}
XMLTransformerContext *Oasis2OOoTransformer::CreateUserDefinedContext(
const TransformerAction_Impl& rAction,
const OUString& rQName,
bool bPersistent )
{
switch( rAction.m_nActionType )
{
case XML_ETACTION_META:
return new XMLMetaTransformerContext( *this, rQName );
case XML_ETACTION_DOCUMENT:
return new XMLDocumentTransformerContext( *this, rQName );
case XML_ETACTION_BODY:
return new XMLBodyOASISTransformerContext_Impl( *this, rQName );
case XML_ETACTION_NOTES:
return new XMLNotesTransformerContext( *this, rQName,
static_cast< XMLTokenEnum>( rAction.m_nParam1 ), bPersistent );
case XML_ETACTION_TABLE:
return new XMLTableTransformerContext_Impl( *this, rQName );
case XML_ETACTION_STYLE:
return new XMLStyleOASISTContext( *this, rQName, bPersistent );
case XML_ETACTION_STYLE_RENAME:
return new XMLStyleOASISTContext( *this, rQName,
rAction.GetQNamePrefixFromParam1(),
rAction.GetQNameTokenFromParam1(), bPersistent );
case XML_ETACTION_FRAME:
return new XMLFrameOASISTransformerContext( *this, rQName );
case XML_ETACTION_EVENT:
return new XMLEventOASISTransformerContext( *this, rQName );
case XML_ETACTION_DLG:
return new XMLDlgOASISTransformerContext( *this, rQName );
case XML_ETACTION_TAB_STOP:
return new XMLTabStopOASISTContext_Impl( *this, rQName );
case XML_ETACTION_FORM_CONTROL:
{
const XMLTransformerContext *pCurrent = GetCurrentContext();
return new XMLControlOASISTransformerContext( *this, rQName,
pCurrent && pCurrent->HasQName( XML_NAMESPACE_FORM,
XML_FORM ) );
}
case XML_ETACTION_FORM_PROPERTY:
return new XMLFormPropOASISTransformerContext( *this, rQName,
static_cast< XMLTokenEnum >( rAction.m_nParam1 ) );
case XML_ETACTION_CHART:
return new XMLChartOASISTransformerContext( *this, rQName );
case XML_ETACTION_CONFIG_ITEM:
return new XMLConfigItemTContext_Impl( *this, rQName );
case XML_ETACTION_TRACKED_CHANGES:
return new XMLTrackedChangesOASISTContext_Impl( *this, rQName,
rAction.GetQNamePrefixFromParam1(),
rAction.GetQNameTokenFromParam1() );
case XML_ETACTION_CHART_PLOT_AREA:
return new XMLChartPlotAreaOASISTContext( *this, rQName );
default:
SAL_WARN( "xmloff.transform", "no user defined context found!" );
break;
}
// default is copying
return new XMLTransformerContext( *this, rQName );
}
XMLTransformerActions *Oasis2OOoTransformer::GetUserDefinedActions(
sal_uInt16 n )
{
XMLTransformerActions *pActions = nullptr;
if( n < MAX_OASIS_ACTIONS )
{
if( !m_aActions[n] )
{
if( n<MAX_OASIS_PROP_ACTIONS )
{
m_aActions[n].reset(
XMLStyleOASISTContext::CreateTransformerActions( n ) );
}
else switch( n )
{
case OASIS_STYLE_ACTIONS:
m_aActions[OASIS_STYLE_ACTIONS].reset(
new XMLTransformerActions( aStyleActionTable ) );
break;
case OASIS_FONT_FACE_ACTIONS:
m_aActions[OASIS_FONT_FACE_ACTIONS].reset(
new XMLTransformerActions( aFontFaceActionTable ) );
break;
case OASIS_SHAPE_ACTIONS:
m_aActions[OASIS_SHAPE_ACTIONS].reset(
new XMLTransformerActions( aShapeActionTable ) );
break;
case OASIS_CONNECTOR_ACTIONS:
m_aActions[OASIS_CONNECTOR_ACTIONS].reset(
new XMLTransformerActions( aConnectorActionTable ) );
break;
case OASIS_INDEX_ENTRY_TAB_STOP_ACTIONS:
m_aActions[OASIS_INDEX_ENTRY_TAB_STOP_ACTIONS].reset(
new XMLTransformerActions( aIndexEntryTabStopActionTable ) );
break;
case OASIS_TAB_STOP_ACTIONS:
m_aActions[OASIS_TAB_STOP_ACTIONS].reset(
new XMLTransformerActions( aTabStopActionTable ) );
break;
case OASIS_LINENUMBERING_ACTIONS:
m_aActions[OASIS_LINENUMBERING_ACTIONS].reset(
new XMLTransformerActions( aLineNumberingActionTable ) );
break;
case OASIS_FOOTNOTE_SEP_ACTIONS:
m_aActions[OASIS_FOOTNOTE_SEP_ACTIONS].reset(
new XMLTransformerActions( aFootnoteSepActionTable ) );
break;
case OASIS_DROP_CAP_ACTIONS:
m_aActions[OASIS_DROP_CAP_ACTIONS].reset(
new XMLTransformerActions( aDropCapActionTable ) );
break;
case OASIS_COLUMNS_ACTIONS:
m_aActions[OASIS_COLUMNS_ACTIONS].reset(
new XMLTransformerActions( aColumnsActionTable ) );
break;
case OASIS_TEXT_VALUE_TYPE_ACTIONS:
m_aActions[OASIS_TEXT_VALUE_TYPE_ACTIONS].reset(
new XMLTransformerActions( aTextValueTypeActionTable ) );
break;
case OASIS_TABLE_VALUE_TYPE_ACTIONS:
m_aActions[OASIS_TABLE_VALUE_TYPE_ACTIONS].reset(
new XMLTransformerActions( aTableValueTypeActionTable ) );
break;
case OASIS_PARA_ACTIONS:
m_aActions[OASIS_PARA_ACTIONS].reset(
new XMLTransformerActions( aParaActionTable ) );
break;
case OASIS_LIST_STYLE_REF_ACTIONS:
m_aActions[OASIS_LIST_STYLE_REF_ACTIONS].reset(
new XMLTransformerActions( aListStyleRefActionTable ) );
break;
case OASIS_TEXT_STYLE_REF_ACTIONS:
m_aActions[OASIS_TEXT_STYLE_REF_ACTIONS].reset(
new XMLTransformerActions( aTextStyleRefActionTable ) );
break;
case OASIS_PARA_STYLE_REF_ACTIONS:
m_aActions[OASIS_PARA_STYLE_REF_ACTIONS].reset(
new XMLTransformerActions( aParaStyleRefActionTable ) );
break;
case OASIS_MASTER_PAGE_REF_ACTIONS:
m_aActions[OASIS_MASTER_PAGE_REF_ACTIONS].reset(
new XMLTransformerActions( aMasterPageRefActionTable ) );
break;
case OASIS_MAP_STYLE_REF_ACTIONS:
m_aActions[OASIS_MAP_STYLE_REF_ACTIONS].reset(
new XMLTransformerActions( aMapStyleRefActionTable ) );
break;
case OASIS_MASTER_PAGE_ACTIONS:
m_aActions[OASIS_MASTER_PAGE_ACTIONS].reset(
new XMLTransformerActions( aMasterPageActionTable ) );
break;
case OASIS_NOTES_ACTIONS:
m_aActions[OASIS_NOTES_ACTIONS].reset(
new XMLTransformerActions( aNotesActionTable ) );
break;
case OASIS_ANNOTATION_ACTIONS:
m_aActions[OASIS_ANNOTATION_ACTIONS].reset(
new XMLTransformerActions( aAnnotationActionTable ) );
break;
case OASIS_CHANGE_INFO_ACTIONS:
m_aActions[OASIS_CHANGE_INFO_ACTIONS].reset(
new XMLTransformerActions( aChangeInfoActionTable ) );
break;
case OASIS_FRAME_ELEM_ACTIONS:
m_aActions[OASIS_FRAME_ELEM_ACTIONS].reset(
new XMLTransformerActions( aFrameActionTable ) );
break;
case OASIS_BACKGROUND_IMAGE_ACTIONS:
m_aActions[OASIS_BACKGROUND_IMAGE_ACTIONS].reset(
new XMLTransformerActions( aBackgroundImageActionTable ) );
break;
case OASIS_DDE_CONNECTION_DECL_ACTIONS:
m_aActions[OASIS_DDE_CONNECTION_DECL_ACTIONS].reset(
new XMLTransformerActions( aDDEConnectionDeclActionTable ) );
break;
case OASIS_EVENT_ACTIONS:
m_aActions[OASIS_EVENT_ACTIONS].reset(
new XMLTransformerActions( aEventActionTable ) );
break;
case OASIS_DLG_ACTIONS:
m_aActions[OASIS_DLG_ACTIONS].reset(
new XMLTransformerActions( aDlgActionTable ) );
break;
case OASIS_FORM_CONTROL_ACTIONS:
m_aActions[OASIS_FORM_CONTROL_ACTIONS].reset(
new XMLTransformerActions( aFormControlActionTable ) );
break;
case OASIS_FORM_COLUMN_ACTIONS:
m_aActions[OASIS_FORM_COLUMN_ACTIONS].reset(
new XMLTransformerActions( aFormColumnActionTable ) );
break;
case OASIS_FORM_PROP_ACTIONS:
m_aActions[OASIS_FORM_PROP_ACTIONS].reset(
new XMLTransformerActions( aFormPropActionTable ) );
break;
case OASIS_XLINK_ACTIONS:
m_aActions[OASIS_XLINK_ACTIONS].reset(
new XMLTransformerActions( aXLinkActionTable ) );
break;
case OASIS_CONFIG_ITEM_SET_ACTIONS:
m_aActions[OASIS_CONFIG_ITEM_SET_ACTIONS].reset(
new XMLTransformerActions( aConfigItemSetActionTable ) );
break;
case OASIS_FORMULA_ACTIONS:
m_aActions[OASIS_FORMULA_ACTIONS].reset(
new XMLTransformerActions( aFormulaActionTable ) );
break;
case OASIS_CHART_ACTIONS:
m_aActions[OASIS_CHART_ACTIONS].reset(
new XMLTransformerActions( aChartActionTable ) );
break;
case OASIS_FORM_ACTIONS:
m_aActions[OASIS_FORM_ACTIONS].reset(
new XMLTransformerActions( aFormActionTable ) );
break;
case OASIS_ALPHABETICAL_INDEX_MARK_ACTIONS:
m_aActions[OASIS_ALPHABETICAL_INDEX_MARK_ACTIONS].reset(
new XMLTransformerActions(
aAlphabeticalIndexMarkActionTable ) );
break;
case OASIS_CONTENT_VALIDATION_ACTIONS:
m_aActions[OASIS_CONTENT_VALIDATION_ACTIONS].reset(
new XMLTransformerActions( aContentValidationActionTable ) );
break;
case OASIS_DDE_CONV_MODE_ACTIONS:
m_aActions[OASIS_DDE_CONV_MODE_ACTIONS].reset(
new XMLTransformerActions( aDDEConvModeActionTable ) );
break;
case OASIS_DATAPILOT_MEMBER_ACTIONS:
m_aActions[OASIS_DATAPILOT_MEMBER_ACTIONS].reset(
new XMLTransformerActions( aDataPilotMemberActionTable ) );
break;
case OASIS_DATAPILOT_LEVEL_ACTIONS:
m_aActions[OASIS_DATAPILOT_LEVEL_ACTIONS].reset(
new XMLTransformerActions( aDataPilotLevelActionTable ) );
break;
case OASIS_SOURCE_SERVICE_ACTIONS:
m_aActions[OASIS_SOURCE_SERVICE_ACTIONS].reset(
new XMLTransformerActions( aSourceServiceActionTable ) );
break;
case OASIS_DRAW_AREA_POLYGON_ACTIONS:
m_aActions[OASIS_DRAW_AREA_POLYGON_ACTIONS].reset(
new XMLTransformerActions( aShapeActionTable ) );
m_aActions[OASIS_DRAW_AREA_POLYGON_ACTIONS]
->Add( aDrawAreaPolygonActionTable );
break;
case OASIS_SCRIPT_ACTIONS:
m_aActions[OASIS_SCRIPT_ACTIONS].reset(
new XMLTransformerActions( aScriptActionTable ) );
break;
case OASIS_DATETIME_ACTIONS:
m_aActions[OASIS_DATETIME_ACTIONS].reset(
new XMLTransformerActions( aDateTimeActionTable ) );
break;
// Bugdoc with table won't load correctly (#i40011#, #i40015#)
case OASIS_TABLE_STYLE_REF_ACTIONS:
m_aActions[OASIS_TABLE_STYLE_REF_ACTIONS].reset(
new XMLTransformerActions( aTableStyleRefActionTable ) );
break;
case OASIS_ANIMATION_ACTIONS:
m_aActions[OASIS_ANIMATION_ACTIONS].reset(
new XMLTransformerActions( aAnimationActionTable ) );
break;
}
}
pActions = m_aActions[n].get();
}
return pActions;
}
OUString Oasis2OOoTransformer::GetEventName( const OUString& rName,
bool bForm )
{
if( bForm && !m_pFormEventMap )
m_pFormEventMap =
XMLEventOASISTransformerContext::CreateFormEventMap();
if( !m_pEventMap )
m_pEventMap = XMLEventOASISTransformerContext::CreateEventMap();
OUString aMacroName;
sal_uInt16 nPrefix =
GetNamespaceMap().GetKeyByAttrName( rName, &aMacroName );
return XMLEventOASISTransformerContext::GetEventName(
nPrefix, aMacroName, *m_pEventMap,
bForm ? m_pFormEventMap : nullptr );
}
Oasis2OOoTransformer::Oasis2OOoTransformer() throw() :
XMLTransformerBase( aActionTable, aTokenMap ),
m_pEventMap( nullptr ),
m_pFormEventMap( nullptr )
{
GetNamespaceMap().Add( GetXMLToken(XML_NP_OFFICE), GetXMLToken(XML_N_OFFICE), XML_NAMESPACE_OFFICE );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_OFFICE), GetXMLToken(XML_N_OFFICE_OOO), XML_NAMESPACE_OFFICE );
GetNamespaceMap().Add( GetXMLToken(XML_NP_META), GetXMLToken(XML_N_META), XML_NAMESPACE_META );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_META), GetXMLToken(XML_N_META_OOO), XML_NAMESPACE_META );
GetNamespaceMap().Add( GetXMLToken(XML_NP_STYLE), GetXMLToken(XML_N_STYLE), XML_NAMESPACE_STYLE );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_STYLE), GetXMLToken(XML_N_STYLE_OOO), XML_NAMESPACE_STYLE );
GetNamespaceMap().Add( GetXMLToken(XML_NP_NUMBER), GetXMLToken(XML_N_NUMBER), XML_NAMESPACE_NUMBER );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_NUMBER), GetXMLToken(XML_N_NUMBER_OOO), XML_NAMESPACE_NUMBER );
GetNamespaceMap().Add( GetXMLToken(XML_NP_CONFIG), GetXMLToken(XML_N_CONFIG), XML_NAMESPACE_CONFIG );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_CONFIG), GetXMLToken(XML_N_CONFIG_OOO), XML_NAMESPACE_CONFIG );
GetNamespaceMap().Add( GetXMLToken(XML_NP_TEXT), GetXMLToken(XML_N_TEXT), XML_NAMESPACE_TEXT );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_TEXT), GetXMLToken(XML_N_TEXT_OOO), XML_NAMESPACE_TEXT );
GetNamespaceMap().Add( GetXMLToken(XML_NP_TABLE), GetXMLToken(XML_N_TABLE), XML_NAMESPACE_TABLE );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_TABLE), GetXMLToken(XML_N_TABLE_OOO), XML_NAMESPACE_TABLE );
GetNamespaceMap().Add( GetXMLToken(XML_NP_DRAW), GetXMLToken(XML_N_DRAW), XML_NAMESPACE_DRAW );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_DRAW), GetXMLToken(XML_N_DRAW_OOO), XML_NAMESPACE_DRAW );
GetNamespaceMap().Add( GetXMLToken(XML_NP_DR3D), GetXMLToken(XML_N_DR3D), XML_NAMESPACE_DR3D );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_DR3D), GetXMLToken(XML_N_DR3D_OOO), XML_NAMESPACE_DR3D );
GetNamespaceMap().Add( GetXMLToken(XML_NP_PRESENTATION), GetXMLToken(XML_N_PRESENTATION), XML_NAMESPACE_PRESENTATION );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_PRESENTATION), GetXMLToken(XML_N_PRESENTATION_OOO), XML_NAMESPACE_PRESENTATION );
GetNamespaceMap().Add( GetXMLToken(XML_NP_CHART), GetXMLToken(XML_N_CHART), XML_NAMESPACE_CHART );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_CHART), GetXMLToken(XML_N_CHART_OOO), XML_NAMESPACE_CHART );
GetNamespaceMap().Add( GetXMLToken(XML_NP_FORM), GetXMLToken(XML_N_FORM), XML_NAMESPACE_FORM );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_FORM), GetXMLToken(XML_N_FORM_OOO), XML_NAMESPACE_FORM );
GetNamespaceMap().Add( GetXMLToken(XML_NP_SCRIPT), GetXMLToken(XML_N_SCRIPT), XML_NAMESPACE_SCRIPT );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_SCRIPT), GetXMLToken(XML_N_SCRIPT_OOO), XML_NAMESPACE_SCRIPT );
GetNamespaceMap().Add( GetXMLToken(XML_NP_DLG), GetXMLToken(XML_N_DLG), XML_NAMESPACE_DLG );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_DLG), GetXMLToken(XML_N_DLG), XML_NAMESPACE_DLG );
GetNamespaceMap().Add( GetXMLToken(XML_NP_FO), GetXMLToken(XML_N_FO_COMPAT), XML_NAMESPACE_FO );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_FO), GetXMLToken(XML_N_FO), XML_NAMESPACE_FO );
GetNamespaceMap().Add( GetXMLToken(XML_NP_SVG), GetXMLToken(XML_N_SVG_COMPAT), XML_NAMESPACE_SVG );
GetReplaceNamespaceMap().Add( GetXMLToken(XML_NP_SVG), GetXMLToken(XML_N_SVG), XML_NAMESPACE_SVG );
for(auto & rp : m_aActions)
rp.reset();
}
Oasis2OOoTransformer::~Oasis2OOoTransformer() throw()
{
for(auto & rp : m_aActions)
rp.reset();
XMLEventOASISTransformerContext::FlushEventMap( m_pEventMap );
XMLEventOASISTransformerContext::FlushEventMap( m_pFormEventMap );
}
namespace
{
class theOasis2OOoTransformerUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theOasis2OOoTransformerUnoTunnelId> {};
}
const css::uno::Sequence<sal_Int8>& Oasis2OOoTransformer::getUnoTunnelId() throw()
{
return theOasis2OOoTransformerUnoTunnelId::get().getSeq();
}
// XUnoTunnel
sal_Int64 SAL_CALL Oasis2OOoTransformer::getSomething( const Sequence< sal_Int8 >& rId )
{
if( isUnoTunnelId<Oasis2OOoTransformer>(rId) )
{
return reinterpret_cast< sal_Int64 >( this );
}
return sal_Int64(0);
}
// XServiceInfo
OUString SAL_CALL Oasis2OOoTransformer::getImplementationName()
{
return Oasis2OOoTransformer_getImplementationName();
}
sal_Bool SAL_CALL Oasis2OOoTransformer::supportsService( const OUString& ServiceName )
{
return cppu::supportsService(this, ServiceName);
}
Sequence< OUString > SAL_CALL Oasis2OOoTransformer::getSupportedServiceNames( )
{
return { };
}
// Service registration
OUString Oasis2OOoTransformer_getImplementationName() throw()
{
return "com.sun.star.comp.Oasis2OOoTransformer";
}
Sequence< OUString > Oasis2OOoTransformer_getSupportedServiceNames()
throw()
{
return { Oasis2OOoTransformer_getImplementationName() };
}
Reference< XInterface > Oasis2OOoTransformer_createInstance(
const Reference< XMultiServiceFactory > &)
{
SAL_INFO("xmloff.transform", "Creating Oasis2OOoTransformer");
return static_cast<cppu::OWeakObject*>(new Oasis2OOoTransformer);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */