LibreOffice Module xmloff (master)  1
Oasis2OOo.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #include <comphelper/base64.hxx>
21 #include <com/sun/star/beans/XPropertySetInfo.hpp>
22 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
23 #include <com/sun/star/uno/XComponentContext.hpp>
24 #include <rtl/ustrbuf.hxx>
25 #include <sal/log.hxx>
26 #include <xmloff/namespacemap.hxx>
27 #include <xmloff/xmlnamespace.hxx>
28 #include <xmloff/xmltoken.hxx>
29 #include "DeepTContext.hxx"
30 #include "MetaTContext.hxx"
31 #include "DocumentTContext.hxx"
32 #include "NotesTContext.hxx"
33 #include "StyleOASISTContext.hxx"
34 #include "FrameOASISTContext.hxx"
35 #include "EventOASISTContext.hxx"
36 #include "DlgOASISTContext.hxx"
37 #include "ControlOASISTContext.hxx"
39 #include "ChartOASISTContext.hxx"
41 #include "MutableAttrList.hxx"
44 #include "TransformerActions.hxx"
45 #include "FamilyType.hxx"
47 #include "Oasis2OOo.hxx"
49 
50 using namespace ::osl;
51 using namespace ::xmloff::token;
52 using namespace ::com::sun::star::uno;
53 using namespace ::com::sun::star::lang;
54 using namespace ::com::sun::star::xml::sax;
55 using namespace ::com::sun::star::beans;
56 
57 namespace {
58 
60 {
61  XML_ETACTION_META=XML_ETACTION_USER_DEFINED,
62  XML_ETACTION_DOCUMENT,
63  XML_ETACTION_BODY,
64  XML_ETACTION_NOTES,
65  XML_ETACTION_TABLE,
66  XML_ETACTION_STYLE,
67  XML_ETACTION_STYLE_RENAME,
68  XML_ETACTION_FRAME,
69  XML_ETACTION_EVENT,
70  XML_ETACTION_DLG,
71  XML_ETACTION_TAB_STOP,
72  XML_ETACTION_FORM_CONTROL,
73  XML_ETACTION_FORM_PROPERTY,
74  XML_ETACTION_CONFIG_ITEM,
75  XML_ETACTION_TRACKED_CHANGES,
76  XML_ETACTION_CHART,
77  XML_ETACTION_CHART_PLOT_AREA
78 };
79 
80 }
81 
82 #define ENTRY3( n, l, a, p1, p2, p3 ) \
83  { XML_NAMESPACE_##n, XML_##l, a, p1, p2, p3 }
84 #define ENTRY3QNQ( n, l, a, n1, l1, p2, n3, l3 ) \
85  ENTRY3( n, l, a, XMLTransformerActionInit::QNameParam( n1, l1 ), \
86  p2, XMLTransformerActionInit::QNameParam( n3, l3 ) )
87 
88 #define ENTRY2( n, l, a, p1, p2 ) \
89  ENTRY3( n, l, a, p1, p2, 0 )
90 #define ENTRY2QN( n, l, a, n1, l1, p2 ) \
91  ENTRY2( n, l, a, XMLTransformerActionInit::QNameParam( n1, l1 ), p2 )
92 
93 #define ENTRY1( n, l, a, p1 ) \
94  ENTRY3( n, l, a, p1, 0, 0 )
95 #define ENTRY1Q( n, l, a, p1, t1 ) \
96  ENTRY1( n, l, a, XMLTransformerActionInit::QNameParam( p1, t1 ) )
97 
98 #define ENTRY0( n, l, a ) \
99  ENTRY3( n, l, a, 0, 0, 0 )
100 
101 // a macro to put two tokens into one sal_Int32 for the action
102 // XML_ATACTION_RENAME_ATTRIBUTE
103 static constexpr sal_Int32 RENAME_ENTRY( XMLTokenEnum f, XMLTokenEnum s )
104 {
105  return static_cast< sal_Int32 >(f) | (static_cast< sal_Int32 >(s) << 16);
106 }
107 
109 {
110  // add office:class from <office:document> and <office:document-content>
111  ENTRY0( OFFICE, DOCUMENT, XML_ETACTION_DOCUMENT ),
112  ENTRY0( OFFICE, DOCUMENT_CONTENT, XML_ETACTION_DOCUMENT ),
113  ENTRY1Q( OOO, AUTO_TEXT_EVENTS, XML_ETACTION_RENAME_ELEM,
115 
116  // add <meta:keywords>
117  ENTRY0( OFFICE, META, XML_ETACTION_META ),
118 
119  // rename <office:scripts> to <office:script>
122 
123  // rename <office:script> to <office:script-data> and process attributes
127 
128  // rename <ooo:libraries> to <script:libraries>
129  ENTRY1Q( OOO, LIBRARIES, XML_ETACTION_RENAME_ELEM,
131 
132  // rename <ooo:library-linked> to <script:library-linked> and process attributes
133  ENTRY2QN( OOO, LIBRARY_LINKED, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
136 
137  // rename <ooo:library-embedded> to <script:library-embedded> and process attributes
138  ENTRY2QN( OOO, LIBRARY_EMBEDDED, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
141 
142  // rename <ooo:module> to <script:module> and process attributes
146 
147  // rename <ooo:source-code> to <script:source-code>
148  ENTRY1Q( OOO, SOURCE_CODE, XML_ETACTION_RENAME_ELEM,
150 
151  ENTRY0( OFFICE, BODY, XML_ETACTION_BODY ),
152 
153  // rename <office:font-face-decls> to <office:font-decl>,
154  // rename <style:font-face> to <style:font-decl>, process attrs
155  ENTRY1Q( OFFICE, FONT_FACE_DECLS, XML_ETACTION_RENAME_ELEM,
160 
161  // remove genre element
164  ENTRY0( OFFICE, PRESENTATION, XML_ETACTION_COPY_CONTENT ),
165  ENTRY0( OFFICE, SPREADSHEET, XML_ETACTION_COPY_CONTENT ),
168 
169  // rename <style:page-layout> to <style:page-master>
170  // ENTRY1Q( STYLE, PAGE_LAYOUT, RENAME_ELEM,
171  // XML_NAMESPACE_STYLE, XML_PAGE_MASTER ),
174 
175  // merge <style:*-properties> into <style:properties> and do other
176  // styles processing
177  ENTRY1( STYLE, STYLE, XML_ETACTION_STYLE,
179  ENTRY1( STYLE, DEFAULT_STYLE, XML_ETACTION_STYLE,
181  ENTRY2QN( STYLE, PAGE_LAYOUT, XML_ETACTION_STYLE_RENAME,
184  ENTRY1( NUMBER, NUMBER_STYLE, XML_ETACTION_STYLE,
186  ENTRY1( NUMBER, CURRENCY_STYLE, XML_ETACTION_STYLE,
188  ENTRY1( NUMBER, PERCENTAGE_STYLE, XML_ETACTION_STYLE,
190  ENTRY1( NUMBER, DATE_STYLE, XML_ETACTION_STYLE,
192  ENTRY1( NUMBER, TIME_STYLE, XML_ETACTION_STYLE,
194  ENTRY1( NUMBER, BOOLEAN_STYLE, XML_ETACTION_STYLE,
196  ENTRY1( NUMBER, TEXT_STYLE, XML_ETACTION_STYLE,
198  ENTRY1( TEXT, LIST_STYLE, XML_ETACTION_STYLE,
200 // ENTRY0( TEXT, OUTLINE_STYLE, STYLE ),
201 
202  ENTRY1( STYLE, HEADER_STYLE, XML_ETACTION_STYLE,
204  ENTRY1( STYLE, FOOTER_STYLE, XML_ETACTION_STYLE,
206  ENTRY1( TEXT, LIST_LEVEL_STYLE_NUMBER, XML_ETACTION_STYLE,
208  ENTRY1( TEXT, LIST_LEVEL_STYLE_BULLET, XML_ETACTION_STYLE,
210  ENTRY1( TEXT, LIST_LEVEL_STYLE_IMAGE, XML_ETACTION_STYLE,
212  ENTRY1( TEXT, OUTLINE_LEVEL_STYLE, XML_ETACTION_STYLE,
214  ENTRY1( DRAW, GRADIENT, XML_ETACTION_STYLE,
216  ENTRY1( DRAW, FILL_IMAGE, XML_ETACTION_STYLE,
218  ENTRY2QN( DRAW, OPACITY, XML_ETACTION_STYLE_RENAME,
221  ENTRY1( DRAW, MARKER, XML_ETACTION_STYLE,
223  ENTRY1( DRAW, HATCH, XML_ETACTION_STYLE,
225  ENTRY1( DRAW, STROKE_DASH, XML_ETACTION_STYLE,
227 
228  // process <text:h/p>: process style-name attributes,
229  // rename <text:h>'s text:outline-level to text:level,
232 
233  // process <test:list>'s text:style-name attributes
234  // rename <text:list> to <text:ordered-list> or <text:unordered-list>
235  // TODO: All list currently are renamed to <text:ordered-list>
239 
240  // rename <text:note*> to <text:footnote*> or <text:endnote*>
241  ENTRY1( TEXT, NOTES_CONFIGURATION, XML_ETACTION_NOTES,
243  ENTRY1( TEXT, NOTE, XML_ETACTION_NOTES, XML_NOTE ),
244 
245  // rename <text:footnote> and <text:endnote> to <text:note>
246  ENTRY1( TEXT, NOTE_REF, XML_ETACTION_NOTES, XML_NOTE_REF ),
247 
248  // rename <text:tab> to <text:tab-stop>
251 
252  // replace <table:table table:is-sub-table> with <table:sub-table>
253  ENTRY0( TABLE, TABLE, XML_ETACTION_TABLE ),
254 
255  // merge frame element
256  ENTRY0( DRAW, FRAME, XML_ETACTION_FRAME ),
257 
258  // process events
259  ENTRY1Q( OFFICE, EVENT_LISTENERS, XML_ETACTION_RENAME_ELEM,
261  ENTRY0( SCRIPT, EVENT_LISTENER, XML_ETACTION_EVENT ),
262  ENTRY0( SCRIPT, EVENT, XML_ETACTION_EVENT ),
263  ENTRY0( PRESENTATION, EVENT_LISTENER, XML_ETACTION_EVENT ),
264 
265  // process Basic dialogs
266  ENTRY0( DLG, STYLE, XML_ETACTION_DLG ),
267 
268  // process length attributes
282 // ENTRY1( DRAW, FRAME, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
284  ENTRY1( PRESENTATION, PLACEHOLDER, XML_ETACTION_PROC_ATTRS, OASIS_SHAPE_ACTIONS ),
312 
313  ENTRY0( CHART, CHART, XML_ETACTION_CHART ),
314  ENTRY0( CHART, PLOT_AREA, XML_ETACTION_CHART_PLOT_AREA ),
315 
316  ENTRY0( CONFIG, CONFIG_ITEM, XML_ETACTION_CONFIG_ITEM ),
317  ENTRY1Q( TEXT, TRACKED_CHANGES, XML_ETACTION_TRACKED_CHANGES,
319  ENTRY1Q( TABLE, TRACKED_CHANGES, XML_ETACTION_TRACKED_CHANGES,
321 
322  ENTRY1( TEXT, INDEX_ENTRY_TAB_STOP, XML_ETACTION_PROC_ATTRS,
324  ENTRY0( STYLE, TAB_STOP, XML_ETACTION_TAB_STOP ),
325  ENTRY1( STYLE, BACKGROUND_IMAGE, XML_ETACTION_PROC_ATTRS,
327  ENTRY1( TEXT, LINENUMBERING_CONFIGURATION, XML_ETACTION_PROC_ATTRS,
329  ENTRY1( STYLE, FOOTNOTE_SEP, XML_ETACTION_PROC_ATTRS,
334 
335  // process *:style-name attributes
339  ENTRY1( TEXT, RUBY_TEXT, XML_ETACTION_PROC_ATTRS,
341  ENTRY1( TEXT, TABLE_OF_CONTENT_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
342  OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
343  ENTRY1( TEXT, ILLUSTRATION_INDEX_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
344  OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
345  ENTRY1( TEXT, TABLE_INDEX_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
346  OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
347  ENTRY1( TEXT, OBJECT_INDEX_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
348  OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
349  ENTRY1( TEXT, USER_INDEX_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
350  OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
351  ENTRY1( TEXT, ALPHABETICAL_INDEX_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
352  OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
353  ENTRY1( TEXT, BIBLIOGRAPHY_ENTRY_TEMPLATE, XML_ETACTION_PROC_ATTRS,
354  OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
355  ENTRY1( TEXT, INDEX_SOURCE_STYLE, XML_ETACTION_PROC_ATTRS,
356  OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
357  ENTRY1( TEXT, INDEX_TITLE_TEMPLATE, XML_ETACTION_PROC_ATTRS,
358  OASIS_PARA_STYLE_REF_ACTIONS ), /* generated entry */
359  ENTRY3QNQ( TEXT, INDEX_ENTRY_CHAPTER,
364  ENTRY1( TEXT, INDEX_ENTRY_TEXT, XML_ETACTION_PROC_ATTRS,
365  OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
366  ENTRY1( TEXT, INDEX_ENTRY_PAGE_NUMBER, XML_ETACTION_PROC_ATTRS,
367  OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
368  ENTRY1( TEXT, INDEX_ENTRY_SPAN, XML_ETACTION_PROC_ATTRS,
369  OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
370  ENTRY1( TEXT, INDEX_ENTRY_BIBLIOGRAPHY, XML_ETACTION_PROC_ATTRS,
371  OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
372  ENTRY1( TEXT, INDEX_ENTRY_LINK_START, XML_ETACTION_PROC_ATTRS,
373  OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
374  ENTRY1( TEXT, INDEX_ENTRY_LINK_END, XML_ETACTION_PROC_ATTRS,
375  OASIS_TEXT_STYLE_REF_ACTIONS ), /* generated entry */
377  OASIS_MASTER_PAGE_REF_ACTIONS ), /* generated entry */
378  // Conversion of attribute <table:style-name> for <table:table-row> and
379  // <table:table-column> (#i40011#, #i40015#)
384 
385  // rename office:value-* to *:value-*
386  ENTRY1( TEXT, VARIABLE_DECL, XML_ETACTION_PROC_ATTRS,
387  OASIS_TEXT_VALUE_TYPE_ACTIONS ), /* generated entry */
388  ENTRY1( TEXT, VARIABLE_SET, XML_ETACTION_PROC_ATTRS,
389  OASIS_TEXT_VALUE_TYPE_ACTIONS), /* generated entry */
390  ENTRY1( TEXT, VARIABLE_INPUT, XML_ETACTION_PROC_ATTRS,
391  OASIS_TEXT_VALUE_TYPE_ACTIONS), /* generated entry */
392  ENTRY1( TEXT, USER_FIELD_DECL, XML_ETACTION_PROC_ATTRS,
393  OASIS_TEXT_VALUE_TYPE_ACTIONS), /* generated entry */
394  ENTRY1( TEXT, EXPRESSION, XML_ETACTION_PROC_ATTRS,
395  OASIS_TEXT_VALUE_TYPE_ACTIONS), /* generated entry */
396  ENTRY1( TEXT, USER_DEFINED, XML_ETACTION_PROC_ATTRS,
397  OASIS_DATETIME_ACTIONS ), // Add OASIS_TEXT_VALUE_TYPE_ACTIONS if attrs are added to text:user-defined
399  OASIS_TABLE_VALUE_TYPE_ACTIONS), /* generated entry */
400  ENTRY1( TABLE, COVERED_TABLE_CELL, XML_ETACTION_PROC_ATTRS,
401  OASIS_TABLE_VALUE_TYPE_ACTIONS), /* generated entry */
402  ENTRY1( TABLE, CHANGE_TRACK_TABLE_CELL, XML_ETACTION_PROC_ATTRS,
403  OASIS_TABLE_VALUE_TYPE_ACTIONS), /* generated entry */
404 // ENTRY1( FORM, PROPERTY, XML_ETACTION_PROC_ATTRS,
405 // OASIS_VALUE_TYPE_ACTIONS), /* TODO: generated entry */
406 // ENTRY1( FORM, LIST_PROPERTY, XML_ETACTION_PROC_ATTRS,
407 // OASIS_VALUE_TYPE_ACTIONS), /* generated entry */
408 
410  OASIS_ANNOTATION_ACTIONS ), /* generated entry */
412  OASIS_CHANGE_INFO_ACTIONS ), /* generated entry */
413 
414  ENTRY1( TEXT, DDE_CONNECTION_DECL, XML_ETACTION_PROC_ATTRS,
416 
417  ENTRY0( FORM, TEXT, XML_ETACTION_FORM_CONTROL ),
418  ENTRY0( FORM, TEXTAREA, XML_ETACTION_FORM_CONTROL ),
419  ENTRY0( FORM, FIXED_TEXT, XML_ETACTION_FORM_CONTROL ),
420  ENTRY0( FORM, FILE, XML_ETACTION_FORM_CONTROL ),
421  ENTRY0( FORM, PASSWORD, XML_ETACTION_FORM_CONTROL ),
422  ENTRY0( FORM, FORMATTED_TEXT, XML_ETACTION_FORM_CONTROL ),
423  ENTRY0( FORM, BUTTON, XML_ETACTION_FORM_CONTROL ),
424  ENTRY0( FORM, IMAGE, XML_ETACTION_FORM_CONTROL ),
425  ENTRY0( FORM, CHECKBOX, XML_ETACTION_FORM_CONTROL ),
426  ENTRY0( FORM, RADIO, XML_ETACTION_FORM_CONTROL ),
427  ENTRY0( FORM, LISTBOX, XML_ETACTION_FORM_CONTROL ),
428  ENTRY0( FORM, COMBOBOX, XML_ETACTION_FORM_CONTROL ),
429  ENTRY0( FORM, FRAME, XML_ETACTION_FORM_CONTROL ),
430  ENTRY0( FORM, HIDDEN, XML_ETACTION_FORM_CONTROL ),
431  ENTRY0( FORM, IMAGE_FRAME, XML_ETACTION_FORM_CONTROL ),
432  ENTRY0( FORM, GRID, XML_ETACTION_FORM_CONTROL ),
433  ENTRY0( FORM, VALUE_RANGE, XML_ETACTION_FORM_CONTROL ),
434  ENTRY0( FORM, GENERIC_CONTROL, XML_ETACTION_FORM_CONTROL ),
437  ENTRY1( FORM, PROPERTY, XML_ETACTION_FORM_PROPERTY, XML_PROPERTY ),
438  ENTRY1( FORM, LIST_PROPERTY, XML_ETACTION_FORM_PROPERTY,
440  ENTRY1( FORM, LIST_VALUE, XML_ETACTION_FORM_PROPERTY, XML_LIST_VALUE ),
441 
442  // process xlink:href
444  OASIS_XLINK_ACTIONS ), /* generated entry */
445  ENTRY1( META, AUTO_RELOAD, XML_ETACTION_PROC_ATTRS,
446  OASIS_XLINK_ACTIONS ), /* generated entry */
447  ENTRY1( TEXT, SECTION_SOURCE, XML_ETACTION_PROC_ATTRS,
448  OASIS_XLINK_ACTIONS ), /* generated entry */
450  OASIS_XLINK_ACTIONS ), /* generated entry */
451  ENTRY1( TEXT, ALPHABETICAL_INDEX_AUTO_MARK_FILE, XML_ETACTION_PROC_ATTRS,
452  OASIS_XLINK_ACTIONS ), /* generated entry */
453  ENTRY1( TABLE, TABLE_SOURCE, XML_ETACTION_PROC_ATTRS,
454  OASIS_XLINK_ACTIONS ), /* generated entry */
455  ENTRY1( TABLE, CELL_RANGE_SOURCE, XML_ETACTION_PROC_ATTRS,
456  OASIS_XLINK_ACTIONS ), /* generated entry */
458  OASIS_XLINK_ACTIONS ), /* generated entry */
459  ENTRY1( PRESENTATION, SOUND, XML_ETACTION_PROC_ATTRS,
460  OASIS_XLINK_ACTIONS ), /* generated entry */
462  OASIS_FORM_ACTIONS ), /* generated entry */
463 // ENTRY1( SVG, FONT_FACE_URI, XML_ETACTION_PROC_ATTRS,
464 // OASIS_XLINK_ACTIONS ), /* generated entry */
465 // ENTRY1( SVG, DEFINITION_SRC, XML_ETACTION_PROC_ATTRS,
466 // OASIS_XLINK_ACTIONS ), /* generated entry */
470 // OASIS_XLINK_ACTIONS ), /* generated entry */
471 // events don't have real URIs
472 // ENTRY1( PRESENTATION, EVENT_LISTENER, XML_ETACTION_PROC_ATTRS,
473 // OASIS_XLINK_ACTIONS ), /* generated entry */
474 // ENTRY1( SCRIPT, EVENT_LISTENER, XML_ETACTION_PROC_ATTRS,
475 // OASIS_XLINK_ACTIONS ), /* generated entry */
476 
477  // add namespace prefix to name
478  ENTRY1( CONFIG, CONFIG_ITEM_SET, XML_ETACTION_PROC_ATTRS,
480 
481  // add namespace prefix to formula and condition
482  // text:condition
484  OASIS_FORMULA_ACTIONS ), /* generated entry */
485  // text:formula
486  ENTRY1( TEXT, SEQUENCE, XML_ETACTION_PROC_ATTRS,
487  OASIS_FORMULA_ACTIONS ), /* generated entry */
488  // text:condition
489  ENTRY1( TEXT, DATABASE_NEXT, XML_ETACTION_PROC_ATTRS,
490  OASIS_FORMULA_ACTIONS ), /* generated entry */
491  // text:condition
492  ENTRY2QN( TEXT, DATABASE_ROW_SELECT, XML_ETACTION_RENAME_ELEM_PROC_ATTRS,
494  OASIS_FORMULA_ACTIONS ), /* generated entry */
495  // text:condition
496  ENTRY1( TEXT, CONDITIONAL_TEXT, XML_ETACTION_PROC_ATTRS,
497  OASIS_FORMULA_ACTIONS ), /* generated entry */
498  // text:condition
499  ENTRY1( TEXT, HIDDEN_TEXT, XML_ETACTION_PROC_ATTRS,
500  OASIS_FORMULA_ACTIONS ), /* generated entry */
501  // text:condition
502  ENTRY1( TEXT, HIDDEN_PARAGRAPH, XML_ETACTION_PROC_ATTRS,
503  OASIS_FORMULA_ACTIONS ), /* generated entry */
504  // text:formula
505  ENTRY1( TEXT, TABLE_FORMULA, XML_ETACTION_PROC_ATTRS,
506  OASIS_FORMULA_ACTIONS ), /* generated entry */
507 
508  // process table::content-validation
509  ENTRY1( TABLE, CONTENT_VALIDATION, XML_ETACTION_PROC_ATTRS,
511 
512  // rename <table:dependencies> to <table:dependences>
513  ENTRY1Q( TABLE, DEPENDENCIES, XML_ETACTION_RENAME_ELEM,
515  ENTRY1Q( TABLE, DEPENDENCY, XML_ETACTION_RENAME_ELEM,
517 
518  // process table::conversion-mode
519  ENTRY1( TABLE, CONVERSION_MODE, XML_ETACTION_PROC_ATTRS,
521 
522  // process table::data-pilot-member
523  ENTRY1( TABLE, DATA_PILOT_MEMBER, XML_ETACTION_PROC_ATTRS,
525 
526  // process table::data-pilot-level
527  ENTRY1( TABLE, DATA_PILOT_LEVEL, XML_ETACTION_PROC_ATTRS,
529 
530  // process table::source-service
531  ENTRY1( TABLE, SOURCE_SERVICE, XML_ETACTION_PROC_ATTRS,
533 
534  // entries for date time change (#i36576#)
536  ENTRY1( TEXT, CREATION_DATE, XML_ETACTION_PROC_ATTRS,
539  ENTRY1( TEXT, CREATION_TIME, XML_ETACTION_PROC_ATTRS,
542  ENTRY1( TEXT, MODIFICATION_TIME, XML_ETACTION_PROC_ATTRS,
544  ENTRY1( TEXT, EDITING_DURATION, XML_ETACTION_PROC_ATTRS,
547  ENTRY1( PRESENTATION, SETTINGS, XML_ETACTION_PROC_ATTRS,
549 
550  // fix <text:alphabatical-index-mark text:main-etry>
551  ENTRY1( TEXT, ALPHABETICAL_INDEX_MARK, XML_ETACTION_PROC_ATTRS,
553  ENTRY1( TEXT, ALPHABETICAL_INDEX_MARK_START, XML_ETACTION_PROC_ATTRS,
555 
556  // fix id strings in old animation elements
559  ENTRY1( PRESENTATION, SHOW_TEXT, XML_ETACTION_PROC_ATTRS, OASIS_ANIMATION_ACTIONS ),
560  ENTRY1( PRESENTATION, SHOW_SHAPE, XML_ETACTION_PROC_ATTRS, OASIS_ANIMATION_ACTIONS ),
561  ENTRY1( PRESENTATION, HIDE_TEXT, XML_ETACTION_PROC_ATTRS, OASIS_ANIMATION_ACTIONS ),
562  ENTRY1( PRESENTATION, HIDE_SHAPE, XML_ETACTION_PROC_ATTRS, OASIS_ANIMATION_ACTIONS ),
563 
564  ENTRY0( OFFICE, TOKEN_INVALID, XML_ETACTION_EOT )
565 };
566 
567 // XML_ETACTION_STYLE
569 {
575  ENTRY1( STYLE, PARENT_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
581  ENTRY1( STYLE, MASTER_PAGE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
583  ENTRY0( STYLE, DEFAULT_OUTLINE_LEVEL, XML_ATACTION_REMOVE ),
585  XML_FAMILY_TYPE_TEXT ), // list level styles
591  ENTRY0( DRAW, DOTS1_LENGTH, XML_ATACTION_IN2INCH ),
592  ENTRY0( DRAW, DOTS2_LENGTH, XML_ATACTION_IN2INCH ),
597  ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(true) ),
598  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
599 };
600 
601 // OASIS_FRAME_ELEM_ACTIONS
603 {
604  ENTRY0( DRAW, TEXT_BOX, XML_ETACTION_COPY ),
607  ENTRY0( DRAW, OBJECT_OLE, XML_ETACTION_COPY ),
608  ENTRY0( DRAW, APPLET, XML_ETACTION_COPY ),
609  ENTRY0( DRAW, PLUGIN, XML_ETACTION_COPY ),
610  ENTRY0( DRAW, FLOATING_FRAME, XML_ETACTION_COPY ),
611  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
612 };
613 
614 // OASIS_EVENT_ELEM_ACTIONS
616 {
617  ENTRY0( XLINK, HREF, XML_ATACTION_HREF ),
620  ENTRY0( SCRIPT, EVENT_NAME, XML_ATACTION_EVENT_NAME ),
621  ENTRY0( SCRIPT, MACRO_NAME, XML_ATACTION_MACRO_NAME ),
622  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
623 };
624 
625 // OASIS_EVENT_ELEM_ACTIONS
627 {
629 };
630 
631 // action table for OASIS_MASTER_PAGE_ACTIONS
633 {
640  ENTRY1Q( STYLE, PAGE_LAYOUT_NAME, XML_ATACTION_RENAME,
642  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
643 };
644 
645 // action table for OASIS_TEXT_STYLE_REF_ACTIONS
647 {
650  ENTRY1( TEXT, VISITED_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
652  ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(false) ),
653  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
654 };
655 
656 // action table for OASIS_PARA_STYLE_REF_ACTIONS
658 {
661  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
662 };
663 
664 // action table for OASIS_LIST_STYLE_REF_ACTIONS
666 {
669  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
670 };
671 
672 // action table for OASIS_MASTER_PAGE_REF_ACTIONS
674 {
675  ENTRY1( DRAW, MASTER_PAGE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
677  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
678 };
679 
680 // action table for OASIS_MAP_STYLE_REF_ACTIONS
682 {
683  ENTRY1( STYLE, APPLY_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
685  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
686 };
687 
688 // action table for OASIS_TABLE_STYLE_REF_ACTIONS (#i40011#, #i40015#)
690 {
693  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
694 };
695 
697 {
698  ENTRY1Q( SVG, FONT_FAMILY, XML_ATACTION_RENAME,
700  ENTRY1Q( STYLE, FONT_ADORNMENTS, XML_ATACTION_RENAME,
702  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
703 };
704 
705 // action table for OASIS_PARA_ACTIONS
707 {
712  ENTRY1Q( TEXT, OUTLINE_LEVEL, XML_ATACTION_RENAME,
714  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
715 };
716 
717 // !!ATTENTION!! If you change something here, please also change
718 // aConnectorActionTable if appropriate
720 {
725  ENTRY1( PRESENTATION, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
735  ENTRY0( DRAW, END_X, XML_ATACTION_IN2INCH ),
736  ENTRY0( DRAW, END_Y, XML_ATACTION_IN2INCH ),
744  ENTRY0( FO, MAX_WIDTH, XML_ATACTION_IN2INCH ),
745  ENTRY0( FO, MAX_HEIGHT, XML_ATACTION_IN2INCH ),
746  ENTRY0( DRAW, CORNER_RADIUS, XML_ATACTION_IN2INCH ),
747  ENTRY0( DRAW, LINE_SKEW, XML_ATACTION_INS2INCHS ),
748  ENTRY0( DRAW, CAPTION_POINT_X, XML_ATACTION_IN2INCH ),
749  ENTRY0( DRAW, CAPTION_POINT_Y, XML_ATACTION_IN2INCH ),
751  ENTRY0( DR3D, FOCAL_LENGTH, XML_ATACTION_IN2INCH ),
754  ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(true) ),
755 
756  // needed by chart:legend. The legend needs also the draw actions. As
757  // there is no merge mechanism, all actions have to be in the same table
758  ENTRY2( CHART, LEGEND_POSITION, XML_ATACTION_RENAME_ATTRIBUTE,
761 
763 
764  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
765 };
766 
767 // OASIS_ANIMATION_ACTIONS
769 {
770  ENTRY0( DRAW, SHAPE_ID, XML_ATACTION_DECODE_ID ),
771  ENTRY0( PRESENTATION, DELAY, XML_ATACTION_RNG2ISO_DATETIME ),
772  ENTRY0( PRESENTATION, PAUSE, XML_ATACTION_RNG2ISO_DATETIME ),
773 
774  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
775 };
776 
777 // OOO_CONNECTOR_ACTIONS
779 {
784  ENTRY1( PRESENTATION, STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
790  ENTRY0( DRAW, END_X, XML_ATACTION_IN2INCH ),
791  ENTRY0( DRAW, END_Y, XML_ATACTION_IN2INCH ),
796  ENTRY0( FO, MAX_WIDTH, XML_ATACTION_IN2INCH ),
797  ENTRY0( FO, MAX_HEIGHT, XML_ATACTION_IN2INCH ),
798  ENTRY0( DRAW, LINE_SKEW, XML_ATACTION_INS2INCHS ),
801  ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(true) ),
802  ENTRY0( DRAW, START_SHAPE, XML_ATACTION_DECODE_ID ),
803  ENTRY0( DRAW, END_SHAPE, XML_ATACTION_DECODE_ID ),
804 
805  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
806 };
807 
808 // OASIS_INDEX_ENTRY_TAB_STOP_ACTIONS
810 {
814  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
815 };
816 
817 // OASIS_TAB_STOP_ACTIONS
819 {
821  ENTRY1Q( STYLE, LEADER_TEXT, XML_ATACTION_RENAME,
823  ENTRY0( STYLE, LEADER_STYLE, XML_ATACTION_REMOVE ),
824  ENTRY0( STYLE, LEADER_TYPE, XML_ATACTION_REMOVE ),
825  ENTRY0( STYLE, LEADER_WIDTH, XML_ATACTION_REMOVE ),
826  ENTRY0( STYLE, LEADER_COLOR, XML_ATACTION_REMOVE ),
827  ENTRY0( STYLE, LEADER_TEXT_STYLE, XML_ATACTION_REMOVE ),
828  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
829 };
830 
831 // OASIS_LINENUMBERING_ACTIONS
833 {
837  ENTRY1Q( TEXT, COUNT_IN_TEXT_BOXES , XML_ATACTION_RENAME,
839  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
840 };
841 
843 {
845  ENTRY0( STYLE, DISTANCE_BEFORE_SEP, XML_ATACTION_IN2INCH ),
846  ENTRY0( STYLE, DISTANCE_AFTER_SEP, XML_ATACTION_IN2INCH ),
847  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
848 };
849 
850 // OASIS_NOTES_ACTIONS (processed by special context)
852 {
853  ENTRY0( TEXT, NOTE_CLASS, XML_ATACTION_STYLE_FAMILY ),
854  ENTRY1( TEXT, CITATION_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
856  ENTRY1( TEXT, CITATION_BODY_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
858  ENTRY1( TEXT, DEFAULT_STYLE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
860  ENTRY1( TEXT, MASTER_PAGE_NAME, XML_ATACTION_DECODE_STYLE_NAME_REF,
862  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
863 };
864 
865 // OASIS_DROP_CAP_ACTIONS
867 {
871  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
872 };
873 
875 {
876  ENTRY0( STYLE, COLUMN_GAP, XML_ATACTION_IN2INCH ),
877  ENTRY0( STYLE, SPACE_BEFORE, XML_ATACTION_REMOVE ),
878  ENTRY0( STYLE, SPACE_AFTER, XML_ATACTION_REMOVE ),
879  ENTRY1Q( FO, START_INDENT, XML_ATACTION_RENAME_IN2INCH,
881  ENTRY1Q( FO, END_INDENT, XML_ATACTION_RENAME_IN2INCH,
884  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
885 };
886 
887 // OASIS_TEXT_VALUE_TYPE_ACTIONS
889 {
890  ENTRY1Q( OFFICE, VALUE_TYPE, XML_ATACTION_RENAME,
900  ENTRY1Q( OFFICE, BOOLEAN_VALUE, XML_ATACTION_RENAME,
902  ENTRY1Q( OFFICE, STRING_VALUE, XML_ATACTION_RENAME,
905  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
906 };
907 
908 // OASIS_TABLE_VALUE_TYPE_ACTIONS
910 {
911  ENTRY1Q( OFFICE, VALUE_TYPE, XML_ATACTION_RENAME,
921  ENTRY1Q( OFFICE, BOOLEAN_VALUE, XML_ATACTION_RENAME,
923  ENTRY1Q( OFFICE, STRING_VALUE, XML_ATACTION_RENAME,
928  ENTRY1Q( TABLE, CONTENT_VALIDATION_NAME, XML_ATACTION_RENAME,
930  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
931 };
932 
933 // action table for OASIS_ANNOTATION_ACTIONS
935 {
936  ENTRY1Q( DC, CREATOR, XML_ETACTION_MOVE_TO_ATTR,
943  ENTRY0( OFFICE, TOKEN_INVALID, XML_ETACTION_EOT )
944 };
945 
946 // action table for OASIS_CHANGE_INFO_ACTIONS
948 {
949  ENTRY1Q( DC, CREATOR, XML_ETACTION_MOVE_TO_ATTR,
953  ENTRY0( OFFICE, TOKEN_INVALID, XML_ETACTION_EOT )
954 };
955 
956 // OASIS_BACKGROUND_IMAGE_ACTIONS
958 {
961  ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(true) ),
962  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
963 };
964 
965 // OASIS_DDE_CONNECTION_DECL
967 {
970  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
971 };
972 
973 // OASIS_FORM_CONTROL_ACTIONS
975 {
977  ENTRY2QN( FORM, CONTROL_IMPLEMENTATION,
982  ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(false) ),
983  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
984 };
985 
986 // OASIS_FORM_COLUMN_ACTIONS
988 {
991  ENTRY2QN( FORM, CONTROL_IMPLEMENTATION,
995  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
996 };
997 
998 // OASIS_FORM_PROP_ACTIONS
1000 {
1001  ENTRY1Q( OFFICE, VALUE_TYPE, XML_ATACTION_RENAME,
1004  ENTRY0( OFFICE, STRING_VALUE, XML_ATACTION_REMOVE ),
1005  ENTRY0( OFFICE, BOOLEAN_VALUE, XML_ATACTION_REMOVE ),
1006  ENTRY0( OFFICE, DATE_VALUE, XML_ATACTION_REMOVE ),
1007  ENTRY0( OFFICE, TIME_VALUE, XML_ATACTION_REMOVE ),
1009  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1010 };
1011 
1012 // OASIS_XLINK_ACTIONS
1014 {
1015  ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(false) ),
1016  ENTRY0( TABLE, REFRESH_DELAY, XML_ATACTION_RNG2ISO_DATETIME ),
1017  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1018 };
1019 
1020 // OASIS_CONFIG_ITEM_SET_ACTIONS
1022 {
1025  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1026 };
1027 
1028 // OASIS_FORMULA_ACTIONS
1030 {
1035  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1036 };
1037 
1038 // OASIS_CONTENT_VALIDATION_ACTIONS
1040 {
1042  ENTRY0( TABLE, DISPLAY_LIST, XML_ATACTION_REMOVE ),
1043  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1044 };
1045 
1046 // OASIS_DDE_CONV_MODE_ACTIONS
1048 {
1049  ENTRY1Q( TABLE, KEEP_TEXT, XML_ATACTION_RENAME,
1051  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1052 };
1053 
1054 // OASIS_DATAPILOT_MEMBER_ACTIONS
1056 {
1057  ENTRY1Q( TABLE, SHOW_DETAILS, XML_ATACTION_RENAME,
1059  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1060 };
1061 
1062 // OASIS_DATAPILOT_LEVEL_ACTIONS
1064 {
1065  ENTRY1Q( TABLE, SHOW_EMPTY, XML_ATACTION_RENAME,
1067  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1068 };
1069 
1070 // OASIS_SOURCE_SERVICE_ACTIONS
1072 {
1073  ENTRY1Q( TABLE, USER_NAME, XML_ATACTION_RENAME,
1075  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1076 };
1077 
1078 // OASIS_CHART_ACTIONS
1080 {
1086  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1087 };
1088 
1089 // OASIS_FORM_ACTIONS
1091 {
1092  ENTRY2QN( FORM, CONTROL_IMPLEMENTATION,
1096  ENTRY1( XLINK, HREF, XML_ATACTION_URI_OASIS, sal_uInt32(false) ),
1097  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1098 };
1099 
1100 // OASIS_ALPHABETICAL_INDEX_MARK_ACTIONS
1102 {
1103  ENTRY1Q( TEXT, MAIN_ENTRY, XML_ATACTION_RENAME,
1105  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1106 };
1107 
1108 // OASIS_DRAW_AREA_POLYGON_ACTIONS (to be added to OASIS_SHAPE_ACTIONS)
1110 {
1113  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1114 };
1115 
1116 // OASIS_SCRIPT_ACTIONS
1118 {
1122  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1123 };
1124 
1125 // OASIS_DATETIME_ACTIONS
1127 {
1128  ENTRY0( TEXT, DATE_VALUE, XML_ATACTION_RNG2ISO_DATETIME ),
1129  ENTRY0( TEXT, TIME_VALUE, XML_ATACTION_RNG2ISO_DATETIME ),
1130  ENTRY0( TEXT, DATE_ADJUST, XML_ATACTION_RNG2ISO_DATETIME ),
1131  ENTRY0( TEXT, TIME_ADJUST, XML_ATACTION_RNG2ISO_DATETIME ),
1136  ENTRY0( FORM, CURRENT_VALUE, XML_ATACTION_RNG2ISO_DATETIME ),
1137  ENTRY0( TABLE, DATE_START, XML_ATACTION_RNG2ISO_DATETIME ),
1139  ENTRY0( TABLE, REFRESH_DELAY, XML_ATACTION_RNG2ISO_DATETIME ),
1140  ENTRY0( PRESENTATION, DELAY, XML_ATACTION_RNG2ISO_DATETIME ),
1141  ENTRY0( PRESENTATION, PAUSE, XML_ATACTION_RNG2ISO_DATETIME ),
1142  ENTRY0( OFFICE, TOKEN_INVALID, XML_ATACTION_EOT )
1143 };
1144 
1146 {
1149 };
1150 
1151 namespace {
1152 
1153 class XMLTableTransformerContext_Impl : public XMLTransformerContext
1154 {
1155  OUString m_aElemQName;
1156 
1157 public:
1158  XMLTableTransformerContext_Impl( XMLTransformerBase& rTransformer,
1159  const OUString& rQName );
1160 
1161  virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
1162  virtual void EndElement() override;
1163 };
1164 
1165 }
1166 
1167 XMLTableTransformerContext_Impl::XMLTableTransformerContext_Impl(
1168  XMLTransformerBase& rImp,
1169  const OUString& rQName ) :
1170  XMLTransformerContext( rImp, rQName ),
1171  m_aElemQName( rQName )
1172 {
1173 }
1174 
1175 void XMLTableTransformerContext_Impl::StartElement(
1176  const Reference< XAttributeList >& rAttrList )
1177 {
1178  Reference< XAttributeList > xAttrList( rAttrList );
1179 
1180  XMLMutableAttributeList *pMutableAttrList = nullptr;
1181 
1182  sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
1183  for( sal_Int16 i=0; i < nAttrCount; i++ )
1184  {
1185  const OUString& rAttrName = xAttrList->getNameByIndex( i );
1186  OUString aLocalName;
1187  sal_uInt16 nPrefix =
1188  GetTransformer().GetNamespaceMap().GetKeyByAttrName( rAttrName,
1189  &aLocalName );
1190  if( XML_NAMESPACE_TABLE == nPrefix )
1191  {
1192  if ( IsXMLToken( aLocalName, XML_IS_SUB_TABLE ) )
1193  {
1194  const OUString& rValue = xAttrList->getValueByIndex( i );
1195  if( IsXMLToken( rValue, XML_TRUE ) )
1196  {
1197  m_aElemQName = GetTransformer().GetNamespaceMap().GetQNameByKey(
1200  if ( !pMutableAttrList )
1201  {
1202  pMutableAttrList =
1203  new XMLMutableAttributeList( xAttrList );
1204  xAttrList = pMutableAttrList;
1205  }
1206  pMutableAttrList->RemoveAttributeByIndex( i );
1207  }
1208  // #i50521# - no break here for safety reason.
1209  }
1210  // Convert attribute table:style-name for <table:table> (#i40011#, #i40015#)
1211  else if ( IsXMLToken( aLocalName, XML_STYLE_NAME ) )
1212  {
1213  const OUString& rValue = xAttrList->getValueByIndex( i );
1214  OUString aAttrValue( rValue );
1215  if( XMLTransformerBase::DecodeStyleName(aAttrValue) )
1216  {
1217  if ( !pMutableAttrList )
1218  {
1219  pMutableAttrList =
1220  new XMLMutableAttributeList( xAttrList );
1221  xAttrList = pMutableAttrList;
1222  }
1223  pMutableAttrList->SetValueByIndex( i, aAttrValue );
1224  }
1225  }
1226  else if( IsXMLToken( aLocalName, XML_PRINT ) )
1227  {
1228  if ( !pMutableAttrList )
1229  {
1230  pMutableAttrList =
1231  new XMLMutableAttributeList( xAttrList );
1232  xAttrList = pMutableAttrList;
1233  }
1234  pMutableAttrList->RemoveAttributeByIndex( i );
1235  }
1236  }
1237  }
1238 
1239  GetTransformer().GetDocHandler()->startElement( m_aElemQName, xAttrList );
1240 }
1241 
1242 void XMLTableTransformerContext_Impl::EndElement()
1243 {
1244  GetTransformer().GetDocHandler()->endElement( m_aElemQName );
1245 }
1246 
1247 namespace {
1248 
1249 class XMLBodyOASISTransformerContext_Impl : public XMLTransformerContext
1250 {
1251  bool m_bFirstChild;
1252 
1253 public:
1254  XMLBodyOASISTransformerContext_Impl( XMLTransformerBase& rTransformer,
1255  const OUString& rQName );
1256 
1257  virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
1258 
1259  virtual rtl::Reference<XMLTransformerContext> CreateChildContext( sal_uInt16 nPrefix,
1260  const OUString& rLocalName,
1261  const OUString& rQName,
1262  const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
1263  virtual void EndElement() override;
1264 };
1265 
1266 }
1267 
1268 XMLBodyOASISTransformerContext_Impl::XMLBodyOASISTransformerContext_Impl(
1269  XMLTransformerBase& rImp,
1270  const OUString& rQName ) :
1271  XMLTransformerContext( rImp, rQName ),
1272  m_bFirstChild( false )
1273 {
1274 }
1275 
1276 void XMLBodyOASISTransformerContext_Impl::StartElement(
1277  const Reference< XAttributeList >& )
1278 {
1279 }
1280 
1281 rtl::Reference<XMLTransformerContext> XMLBodyOASISTransformerContext_Impl::CreateChildContext( sal_uInt16 nPrefix,
1282  const OUString& rLocalName,
1283  const OUString& rQName,
1284  const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList )
1285 {
1286  if (!m_bFirstChild)
1287  {
1288  m_bFirstChild = true;
1290  }
1291 
1292  return XMLTransformerContext::CreateChildContext(nPrefix, rLocalName, rQName, xAttrList);
1293 }
1294 
1295 void XMLBodyOASISTransformerContext_Impl::EndElement()
1296 {
1297  if (!m_bFirstChild)
1298  XMLTransformerContext::StartElement(Reference< XAttributeList >());
1299 
1301 }
1302 
1303 namespace {
1304 
1305 class XMLTabStopOASISTContext_Impl : public XMLPersElemContentTContext
1306 {
1307 public:
1308  XMLTabStopOASISTContext_Impl( XMLTransformerBase& rTransformer,
1309  const OUString& rQName );
1310 
1311  virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
1312 };
1313 
1314 }
1315 
1316 XMLTabStopOASISTContext_Impl::XMLTabStopOASISTContext_Impl(
1317  XMLTransformerBase& rImp,
1318  const OUString& rQName ) :
1319  XMLPersElemContentTContext( rImp, rQName )
1320 {
1321 }
1322 
1323 void XMLTabStopOASISTContext_Impl::StartElement(
1324  const Reference< XAttributeList >& rAttrList )
1325 {
1326  XMLTransformerActions *pActions =
1327  GetTransformer().GetUserDefinedActions( OASIS_TAB_STOP_ACTIONS );
1328  SAL_WARN_IF( nullptr == pActions, "xmloff.transform", "got no actions" );
1329 
1330  sal_Unicode cStyleLeaderChar = 0;
1331  sal_Int16 nLeaderText = -1;
1332  Reference< XAttributeList > xAttrList( rAttrList );
1333  XMLMutableAttributeList *pMutableAttrList = nullptr;
1334  sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
1335  for( sal_Int16 i=0; i < nAttrCount; i++ )
1336  {
1337  const OUString& rAttrName = xAttrList->getNameByIndex( i );
1338  OUString aLocalName;
1339  sal_uInt16 nPrefix =
1340  GetTransformer().GetNamespaceMap().GetKeyByAttrName( rAttrName,
1341  &aLocalName );
1342  XMLTransformerActions::key_type aKey( nPrefix, aLocalName );
1343  XMLTransformerActions::const_iterator aIter =
1344  pActions->find( aKey );
1345  if( aIter != pActions->end() )
1346  {
1347  if( !pMutableAttrList )
1348  {
1349  pMutableAttrList =
1350  new XMLMutableAttributeList( xAttrList );
1351  xAttrList = pMutableAttrList;
1352  }
1353  const OUString& rAttrValue = xAttrList->getValueByIndex( i );
1354  switch( (*aIter).second.m_nActionType )
1355  {
1356  case XML_ATACTION_REMOVE:
1357  if( IsXMLToken( aLocalName, XML_LEADER_STYLE ) )
1358  {
1359  if( IsXMLToken( rAttrValue, XML_NONE ) )
1360  cStyleLeaderChar = ' ';
1361  else if( IsXMLToken( rAttrValue, XML_DOTTED ) )
1362  cStyleLeaderChar = '.';
1363  else
1364  cStyleLeaderChar = 0;
1365  pMutableAttrList->RemoveAttributeByIndex( i );
1366  --i;
1367  --nAttrCount;
1368  }
1369  break;
1370  case XML_ATACTION_RENAME:
1371  {
1372  OUString aNewAttrQName(
1373  GetTransformer().GetNamespaceMap().GetQNameByKey(
1374  (*aIter).second.GetQNamePrefixFromParam1(),
1376  (*aIter).second.GetQNameTokenFromParam1()) ) );
1377  pMutableAttrList->RenameAttributeByIndex( i,
1378  aNewAttrQName );
1379  }
1380  if( IsXMLToken( aLocalName, XML_LEADER_TEXT ) )
1381  {
1382  if( rAttrValue.getLength() > 1 )
1383  {
1384  OUString aAttrValue( rAttrValue.copy( 0, 1 ) );
1385  pMutableAttrList->SetValueByIndex( i, aAttrValue );
1386  nLeaderText = i;
1387  }
1388  }
1389  break;
1390  case XML_ATACTION_IN2INCH:
1391  {
1392  OUString aAttrValue( rAttrValue );
1394  aAttrValue ) )
1395  pMutableAttrList->SetValueByIndex( i, aAttrValue );
1396  }
1397  break;
1398  default:
1399  SAL_WARN( "xmloff.transform", "unknown action" );
1400  break;
1401  }
1402  }
1403  }
1404 
1405  if( cStyleLeaderChar && ' ' != cStyleLeaderChar )
1406  {
1407  if( nLeaderText != -1 )
1408  {
1409  OUString aNewAttrQName(
1410  GetTransformer().GetNamespaceMap().GetQNameByKey(
1413  pMutableAttrList->AddAttribute( aNewAttrQName,
1414  OUString( cStyleLeaderChar ) );
1415  }
1416  }
1417  else
1418  {
1419  if( nLeaderText != -1 )
1420  pMutableAttrList->RemoveAttributeByIndex( nLeaderText );
1421  }
1422 
1424 }
1425 
1426 namespace {
1427 
1428 class XMLConfigItemTContext_Impl : public XMLTransformerContext
1429 {
1430  OUString m_aContent;
1431  bool m_bIsRedlineProtectionKey;
1432  bool m_bIsCursorX;
1433  bool m_bIsCursorY;
1434 
1435 public:
1436  XMLConfigItemTContext_Impl( XMLTransformerBase& rTransformer,
1437  const OUString& rQName );
1438 
1439  virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
1440  virtual void EndElement() override;
1441 
1442  virtual void Characters( const OUString& rChars ) override;
1443 };
1444 
1445 }
1446 
1447 XMLConfigItemTContext_Impl::XMLConfigItemTContext_Impl(
1448  XMLTransformerBase& rImp,
1449  const OUString& rQName ) :
1450  XMLTransformerContext( rImp, rQName ),
1451  m_bIsRedlineProtectionKey( false ),
1452  m_bIsCursorX( false ),
1453  m_bIsCursorY( false )
1454 {
1455 }
1456 
1457 void XMLConfigItemTContext_Impl::StartElement(
1458  const Reference< XAttributeList >& rAttrList )
1459 {
1460  sal_Int16 nAttrCount = rAttrList.is() ? rAttrList->getLength() : 0;
1461  for( sal_Int16 i=0; i < nAttrCount; i++ )
1462  {
1463  const OUString& rAttrName = rAttrList->getNameByIndex( i );
1464  OUString aLocalName;
1465  sal_uInt16 nPrefix =
1466  GetTransformer().GetNamespaceMap().GetKeyByAttrName( rAttrName,
1467  &aLocalName );
1468  if( XML_NAMESPACE_CONFIG == nPrefix )
1469  {
1470  if ( IsXMLToken( aLocalName, XML_NAME ) )
1471  {
1472  const OUString& rValue = rAttrList->getValueByIndex( i );
1473  if( rValue == "RedlineProtectionKey" )
1474  m_bIsRedlineProtectionKey = true;
1475  else if( rValue == "CursorPositionX" )
1476  m_bIsCursorX = true;
1477  else if( rValue == "CursorPositionY" )
1478  m_bIsCursorY = true;
1479 
1480  break;
1481  }
1482  }
1483  }
1484 
1486 }
1487 
1488 void XMLConfigItemTContext_Impl::Characters( const OUString& rChars )
1489 {
1490  OUString sChars(rChars);
1491  if (m_bIsRedlineProtectionKey)
1492  m_aContent += rChars;
1493  else if (m_bIsCursorX || m_bIsCursorY)
1494  {
1495  sal_Int32 nPos = rChars.toInt32();
1496  if (m_bIsCursorX && nPos > 255)
1497  nPos = 255;
1498  else if (m_bIsCursorY && nPos > 31999)
1499  nPos = 31999;
1500 
1501  sChars = OUString::number(nPos);
1502  }
1503 
1505 }
1506 
1507 void XMLConfigItemTContext_Impl::EndElement()
1508 {
1509 
1510  if( m_bIsRedlineProtectionKey )
1511  {
1512  const Reference< XPropertySet > rPropSet =
1513  GetTransformer().GetPropertySet();
1514  if( rPropSet.is() )
1515  {
1516  OUString aPropName("RedlineProtectionKey");
1517  Reference< XPropertySetInfo > xPropSetInfo(
1518  rPropSet->getPropertySetInfo() );
1519  if( xPropSetInfo.is() &&
1520  xPropSetInfo->hasPropertyByName( aPropName ) )
1521  {
1522  Sequence < sal_Int8 > aKey;
1523  ::comphelper::Base64::decode( aKey, m_aContent );
1524  rPropSet->setPropertyValue( aPropName, makeAny( aKey ) );
1525  }
1526  }
1527  }
1529 }
1530 
1531 namespace {
1532 
1533 class XMLTrackedChangesOASISTContext_Impl : public XMLTransformerContext
1534 {
1535  OUString const m_aAttrQName;
1536 
1537 public:
1538 
1539  XMLTrackedChangesOASISTContext_Impl( XMLTransformerBase& rTransformer,
1540  const OUString& rQName,
1541  sal_uInt16 nPrefix,
1542  XMLTokenEnum eToken );
1543 
1544  virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
1545 };
1546 
1547 }
1548 
1549 XMLTrackedChangesOASISTContext_Impl::XMLTrackedChangesOASISTContext_Impl(
1550  XMLTransformerBase& rImp,
1551  const OUString& rQName,
1552  sal_uInt16 nPrefix,
1553  XMLTokenEnum eToken ) :
1554  XMLTransformerContext( rImp, rQName ),
1555  m_aAttrQName( rImp.GetNamespaceMap().GetQNameByKey( nPrefix,
1556  GetXMLToken(eToken)) )
1557 {
1558 }
1559 
1560 void XMLTrackedChangesOASISTContext_Impl::StartElement(
1561  const Reference< XAttributeList >& rAttrList )
1562 {
1563  Reference< XAttributeList > xAttrList( rAttrList );
1564  const Reference< XPropertySet > rPropSet =
1565  GetTransformer().GetPropertySet();
1566  if( rPropSet.is() )
1567  {
1568  OUString aPropName("RedlineProtectionKey");
1569  Reference< XPropertySetInfo > xPropSetInfo(
1570  rPropSet->getPropertySetInfo() );
1571  if( xPropSetInfo.is() &&
1572  xPropSetInfo->hasPropertyByName( aPropName ) )
1573  {
1574  Any aAny = rPropSet->getPropertyValue( aPropName);
1575  Sequence < sal_Int8 > aKey;
1576  aAny >>= aKey;
1577  if( aKey.hasElements() )
1578  {
1579  OUStringBuffer aBuffer;
1580  ::comphelper::Base64::encode( aBuffer, aKey );
1581  XMLMutableAttributeList *pMutableAttrList =
1582  new XMLMutableAttributeList( xAttrList );
1583  xAttrList = pMutableAttrList;
1584  pMutableAttrList->AddAttribute( m_aAttrQName,
1585  aBuffer.makeStringAndClear() );
1586  }
1587  }
1588  }
1590 }
1591 
1593  const TransformerAction_Impl& rAction,
1594  const OUString& rQName,
1595  bool bPersistent )
1596 {
1597  switch( rAction.m_nActionType )
1598  {
1599  case XML_ETACTION_META:
1600  return new XMLMetaTransformerContext( *this, rQName );
1601  case XML_ETACTION_DOCUMENT:
1602  return new XMLDocumentTransformerContext( *this, rQName );
1603  case XML_ETACTION_BODY:
1604  return new XMLBodyOASISTransformerContext_Impl( *this, rQName );
1605  case XML_ETACTION_NOTES:
1606  return new XMLNotesTransformerContext( *this, rQName,
1607  static_cast< XMLTokenEnum>( rAction.m_nParam1 ), bPersistent );
1608  case XML_ETACTION_TABLE:
1609  return new XMLTableTransformerContext_Impl( *this, rQName );
1610  case XML_ETACTION_STYLE:
1611  return new XMLStyleOASISTContext( *this, rQName, bPersistent );
1612  case XML_ETACTION_STYLE_RENAME:
1613  return new XMLStyleOASISTContext( *this, rQName,
1614  rAction.GetQNamePrefixFromParam1(),
1615  rAction.GetQNameTokenFromParam1(), bPersistent );
1616  case XML_ETACTION_FRAME:
1617  return new XMLFrameOASISTransformerContext( *this, rQName );
1618  case XML_ETACTION_EVENT:
1619  return new XMLEventOASISTransformerContext( *this, rQName );
1620  case XML_ETACTION_DLG:
1621  return new XMLDlgOASISTransformerContext( *this, rQName );
1622  case XML_ETACTION_TAB_STOP:
1623  return new XMLTabStopOASISTContext_Impl( *this, rQName );
1624  case XML_ETACTION_FORM_CONTROL:
1625  {
1626  const XMLTransformerContext *pCurrent = GetCurrentContext();
1627  return new XMLControlOASISTransformerContext( *this, rQName,
1628  pCurrent && pCurrent->HasQName( XML_NAMESPACE_FORM,
1629  XML_FORM ) );
1630  }
1631  case XML_ETACTION_FORM_PROPERTY:
1632  return new XMLFormPropOASISTransformerContext( *this, rQName,
1633  static_cast< XMLTokenEnum >( rAction.m_nParam1 ) );
1634  case XML_ETACTION_CHART:
1635  return new XMLChartOASISTransformerContext( *this, rQName );
1636  case XML_ETACTION_CONFIG_ITEM:
1637  return new XMLConfigItemTContext_Impl( *this, rQName );
1638  case XML_ETACTION_TRACKED_CHANGES:
1639  return new XMLTrackedChangesOASISTContext_Impl( *this, rQName,
1640  rAction.GetQNamePrefixFromParam1(),
1641  rAction.GetQNameTokenFromParam1() );
1642  case XML_ETACTION_CHART_PLOT_AREA:
1643  return new XMLChartPlotAreaOASISTContext( *this, rQName );
1644  default:
1645  SAL_WARN( "xmloff.transform", "no user defined context found!" );
1646  break;
1647  }
1648 
1649  // default is copying
1650  return new XMLTransformerContext( *this, rQName );
1651 }
1652 
1654  sal_uInt16 n )
1655 {
1656  XMLTransformerActions *pActions = nullptr;
1657  if( n < MAX_OASIS_ACTIONS )
1658  {
1659  if( !m_aActions[n] )
1660  {
1661  if( n<MAX_OASIS_PROP_ACTIONS )
1662  {
1663  m_aActions[n].reset(
1665  }
1666  else switch( n )
1667  {
1668  case OASIS_STYLE_ACTIONS:
1670  new XMLTransformerActions( aStyleActionTable ) );
1671  break;
1674  new XMLTransformerActions( aFontFaceActionTable ) );
1675  break;
1676  case OASIS_SHAPE_ACTIONS:
1678  new XMLTransformerActions( aShapeActionTable ) );
1679  break;
1682  new XMLTransformerActions( aConnectorActionTable ) );
1683  break;
1686  new XMLTransformerActions( aIndexEntryTabStopActionTable ) );
1687  break;
1690  new XMLTransformerActions( aTabStopActionTable ) );
1691  break;
1694  new XMLTransformerActions( aLineNumberingActionTable ) );
1695  break;
1698  new XMLTransformerActions( aFootnoteSepActionTable ) );
1699  break;
1702  new XMLTransformerActions( aDropCapActionTable ) );
1703  break;
1704  case OASIS_COLUMNS_ACTIONS:
1706  new XMLTransformerActions( aColumnsActionTable ) );
1707  break;
1710  new XMLTransformerActions( aTextValueTypeActionTable ) );
1711  break;
1714  new XMLTransformerActions( aTableValueTypeActionTable ) );
1715  break;
1716  case OASIS_PARA_ACTIONS:
1718  new XMLTransformerActions( aParaActionTable ) );
1719  break;
1722  new XMLTransformerActions( aListStyleRefActionTable ) );
1723  break;
1726  new XMLTransformerActions( aTextStyleRefActionTable ) );
1727  break;
1730  new XMLTransformerActions( aParaStyleRefActionTable ) );
1731  break;
1734  new XMLTransformerActions( aMasterPageRefActionTable ) );
1735  break;
1738  new XMLTransformerActions( aMapStyleRefActionTable ) );
1739  break;
1742  new XMLTransformerActions( aMasterPageActionTable ) );
1743  break;
1744  case OASIS_NOTES_ACTIONS:
1746  new XMLTransformerActions( aNotesActionTable ) );
1747  break;
1750  new XMLTransformerActions( aAnnotationActionTable ) );
1751  break;
1754  new XMLTransformerActions( aChangeInfoActionTable ) );
1755  break;
1758  new XMLTransformerActions( aFrameActionTable ) );
1759  break;
1762  new XMLTransformerActions( aBackgroundImageActionTable ) );
1763  break;
1766  new XMLTransformerActions( aDDEConnectionDeclActionTable ) );
1767  break;
1768  case OASIS_EVENT_ACTIONS:
1770  new XMLTransformerActions( aEventActionTable ) );
1771  break;
1772  case OASIS_DLG_ACTIONS:
1774  new XMLTransformerActions( aDlgActionTable ) );
1775  break;
1778  new XMLTransformerActions( aFormControlActionTable ) );
1779  break;
1782  new XMLTransformerActions( aFormColumnActionTable ) );
1783  break;
1786  new XMLTransformerActions( aFormPropActionTable ) );
1787  break;
1788  case OASIS_XLINK_ACTIONS:
1790  new XMLTransformerActions( aXLinkActionTable ) );
1791  break;
1794  new XMLTransformerActions( aConfigItemSetActionTable ) );
1795  break;
1796  case OASIS_FORMULA_ACTIONS:
1798  new XMLTransformerActions( aFormulaActionTable ) );
1799  break;
1800  case OASIS_CHART_ACTIONS:
1802  new XMLTransformerActions( aChartActionTable ) );
1803  break;
1804  case OASIS_FORM_ACTIONS:
1806  new XMLTransformerActions( aFormActionTable ) );
1807  break;
1811  aAlphabeticalIndexMarkActionTable ) );
1812  break;
1815  new XMLTransformerActions( aContentValidationActionTable ) );
1816  break;
1819  new XMLTransformerActions( aDDEConvModeActionTable ) );
1820  break;
1823  new XMLTransformerActions( aDataPilotMemberActionTable ) );
1824  break;
1827  new XMLTransformerActions( aDataPilotLevelActionTable ) );
1828  break;
1831  new XMLTransformerActions( aSourceServiceActionTable ) );
1832  break;
1835  new XMLTransformerActions( aShapeActionTable ) );
1837  ->Add( aDrawAreaPolygonActionTable );
1838  break;
1839  case OASIS_SCRIPT_ACTIONS:
1841  new XMLTransformerActions( aScriptActionTable ) );
1842  break;
1845  new XMLTransformerActions( aDateTimeActionTable ) );
1846  break;
1847  // Bugdoc with table won't load correctly (#i40011#, #i40015#)
1850  new XMLTransformerActions( aTableStyleRefActionTable ) );
1851  break;
1854  new XMLTransformerActions( aAnimationActionTable ) );
1855  break;
1856  }
1857  }
1858  pActions = m_aActions[n].get();
1859  }
1860 
1861  return pActions;
1862 }
1863 
1864 OUString Oasis2OOoTransformer::GetEventName( const OUString& rName,
1865  bool bForm )
1866 {
1867  if( bForm && !m_pFormEventMap )
1868  m_pFormEventMap =
1870  if( !m_pEventMap )
1872 
1873  OUString aMacroName;
1874  sal_uInt16 nPrefix =
1875  GetNamespaceMap().GetKeyByAttrName( rName, &aMacroName );
1877  nPrefix, aMacroName, *m_pEventMap,
1878  bForm ? m_pFormEventMap : nullptr );
1879 }
1880 
1882  XMLTransformerBase( aActionTable, aTokenMap ),
1883  m_pEventMap( nullptr ),
1884  m_pFormEventMap( nullptr )
1885 {
1888 
1891 
1894 
1897 
1900 
1903 
1906 
1909 
1912 
1915 
1918 
1921 
1924 
1927 
1930 
1933 
1934  for(auto & rp : m_aActions)
1935  rp.reset();
1936 }
1937 
1939 {
1940  for(auto & rp : m_aActions)
1941  rp.reset();
1944 }
1945 
1946 namespace
1947 {
1948  class theOasis2OOoTransformerUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theOasis2OOoTransformerUnoTunnelId> {};
1949 }
1950 
1951 const css::uno::Sequence<sal_Int8>& Oasis2OOoTransformer::getUnoTunnelId() throw()
1952 {
1953  return theOasis2OOoTransformerUnoTunnelId::get().getSeq();
1954 }
1955 
1956 // XUnoTunnel
1958 {
1959  if( isUnoTunnelId<Oasis2OOoTransformer>(rId) )
1960  {
1961  return reinterpret_cast< sal_Int64 >( this );
1962  }
1963 
1964  return sal_Int64(0);
1965 }
1966 
1967 // XServiceInfo
1969 {
1970  return "com.sun.star.comp.Oasis2OOoTransformer";
1971 }
1972 
1973 sal_Bool SAL_CALL Oasis2OOoTransformer::supportsService( const OUString& ServiceName )
1974 {
1975  return cppu::supportsService(this, ServiceName);
1976 }
1977 
1979 {
1980  return { };
1981 }
1982 
1983 // Service registration
1984 
1985 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
1987  css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any> const&)
1988 {
1989  SAL_INFO("xmloff.transform", "Creating Oasis2OOoTransformer");
1990  return cppu::acquire(new Oasis2OOoTransformer);
1991 }
1992 
1993 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
XMLTransformerActionInit const aAnnotationActionTable[]
Definition: Oasis2OOo.cxx:934
bool IsXMLToken(const OUString &rString, enum XMLTokenEnum eToken)
compare eToken to the string
Definition: xmltoken.cxx:3434
XMLTransformerActionInit const aXLinkActionTable[]
Definition: Oasis2OOo.cxx:1013
XMLTransformerActionInit const aDataPilotLevelActionTable[]
Definition: Oasis2OOo.cxx:1063
XMLTokenEnum const aTokenMap[]
Definition: Oasis2OOo.cxx:1145
XMLTransformerActionInit const aActionTable[]
Definition: Oasis2OOo.cxx:108
constexpr sal_uInt16 XML_NAMESPACE_OFFICE
virtual ~Oasis2OOoTransformer() override
Definition: Oasis2OOo.cxx:1938
#define ENTRY3QNQ(n, l, a, n1, l1, p2, n3, l3)
Definition: Oasis2OOo.cxx:84
XMLTransformerActionInit const aFormPropActionTable[]
Definition: Oasis2OOo.cxx:999
XMLTransformerActionInit const aFootnoteSepActionTable[]
Definition: Oasis2OOo.cxx:842
static XMLTransformerOASISEventMap_Impl * CreateFormEventMap()
constexpr sal_uInt16 XML_NAMESPACE_CHART
constexpr sal_uInt16 XML_NAMESPACE_DR3D
#define ID
constexpr sal_uInt16 XML_NAMESPACE_SCRIPT
#define FRAME
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
Definition: Oasis2OOo.cxx:1973
DIM
#define MIN_WIDTH
XMLTransformerActionInit const aTableStyleRefActionTable[]
Definition: Oasis2OOo.cxx:689
constexpr sal_uInt16 XML_NAMESPACE_OOO
XMLTransformerActionInit const aConfigItemSetActionTable[]
Definition: Oasis2OOo.cxx:1021
DOCUMENT
constexpr sal_uInt16 XML_NAMESPACE_DLG
XMLTransformerActionInit const aScriptActionTable[]
Definition: Oasis2OOo.cxx:1117
XMLTransformerActionInit const aTextValueTypeActionTable[]
Definition: Oasis2OOo.cxx:888
#define HEIGHT
constexpr sal_uInt16 XML_NAMESPACE_NUMBER
XMLTransformerActionInit const aFrameActionTable[]
Definition: Oasis2OOo.cxx:602
#define MIN_HEIGHT
sal_uInt16 GetKeyByAttrName(const OUString &rAttrName, OUString *pPrefix, OUString *pLocalName, OUString *pNamespace) const
XMLTransformerActionInit const aEventActionTable[]
Definition: Oasis2OOo.cxx:615
static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId()
Definition: Oasis2OOo.cxx:1951
XMLTransformerActionInit const aMasterPageActionTable[]
Definition: Oasis2OOo.cxx:632
NAME
const sal_uInt8 A
virtual OUString GetEventName(const OUString &rName, bool bForm=false) override
Definition: Oasis2OOo.cxx:1864
css::uno::Any const & rValue
Definition: ImageStyle.hxx:38
sal_uInt16 sal_Unicode
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * xmloff_Oasis2OOoTransformer_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
Definition: Oasis2OOo.cxx:1986
XMLTransformerActionInit const aStyleActionTable[]
Definition: Oasis2OOo.cxx:568
DATE
#define ENTRY2QN(n, l, a, n1, l1, p2)
Definition: Oasis2OOo.cxx:90
DRAW
#define X
static constexpr sal_Int32 RENAME_ENTRY(XMLTokenEnum f, XMLTokenEnum s)
Definition: Oasis2OOo.cxx:103
XMLUserDefinedTransformerAction
Definition: Oasis2OOo.cxx:59
XMLTransformerActionInit const aFormulaActionTable[]
Definition: Oasis2OOo.cxx:1029
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
XMLTransformerActionInit const aMasterPageRefActionTable[]
Definition: Oasis2OOo.cxx:673
constexpr sal_uInt16 XML_NAMESPACE_FORM
XMLTransformerActionInit const aDDEConvModeActionTable[]
Definition: Oasis2OOo.cxx:1047
XMLTransformerActionInit const aFormControlActionTable[]
Definition: Oasis2OOo.cxx:974
#define RX
SvXMLNamespaceMap & GetNamespaceMap()
XMLTransformerOASISEventMap_Impl * m_pFormEventMap
Definition: Oasis2OOo.hxx:32
XMLTransformerActionInit const aSourceServiceActionTable[]
Definition: Oasis2OOo.cxx:1071
static XMLTransformerActions * CreateTransformerActions(sal_uInt16 nType)
XMLTransformerActionInit const aParaStyleRefActionTable[]
Definition: Oasis2OOo.cxx:657
XMLTransformerActionInit const aShapeActionTable[]
Definition: Oasis2OOo.cxx:719
XMLTransformerActionInit const aAlphabeticalIndexMarkActionTable[]
Definition: Oasis2OOo.cxx:1101
virtual sal_Int16 SAL_CALL getLength() override
static void encode(OUStringBuffer &aStrBuffer, const css::uno::Sequence< sal_Int8 > &aPass)
XMLTransformerActionInit const aParaActionTable[]
Definition: Oasis2OOo.cxx:706
XMLTransformerActionInit const aFormColumnActionTable[]
Definition: Oasis2OOo.cxx:987
constexpr sal_uInt16 XML_NAMESPACE_DRAW
XMLTransformerActionInit const aNotesActionTable[]
Definition: Oasis2OOo.cxx:851
START
XMLTokenEnum
The enumeration of all XML tokens.
Definition: xmltoken.hxx:49
#define ENTRY0(n, l, a)
Definition: Oasis2OOo.cxx:98
#define MAP(name, prefix, token, type, context, version)
constexpr sal_uInt16 XML_NAMESPACE_CONFIG
XMLTransformerActionInit const aChangeInfoActionTable[]
Definition: Oasis2OOo.cxx:947
#define BORDER
END
XMLTransformerActionInit const aLineNumberingActionTable[]
Definition: Oasis2OOo.cxx:832
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Definition: Oasis2OOo.cxx:1978
constexpr sal_uInt16 XML_NAMESPACE_SVG
XMLTransformerActionInit const aDataPilotMemberActionTable[]
Definition: Oasis2OOo.cxx:1055
bool HasQName(sal_uInt16 nPrefix,::xmloff::token::XMLTokenEnum eToken) const
XMLTransformerActionInit const aDDEConnectionDeclActionTable[]
Definition: Oasis2OOo.cxx:966
constexpr sal_uInt16 XML_NAMESPACE_FO
XMLTransformerActionInit const aTableValueTypeActionTable[]
Definition: Oasis2OOo.cxx:909
int i
std::unique_ptr< XMLTransformerActions > m_aActions[MAX_OASIS_ACTIONS]
Definition: Oasis2OOo.hxx:30
void SetValueByIndex(sal_Int16 i, const OUString &rValue)
constexpr sal_uInt16 XML_NAMESPACE_TEXT
XMLTransformerActionInit const aDropCapActionTable[]
Definition: Oasis2OOo.cxx:866
static void decode(css::uno::Sequence< sal_Int8 > &aPass, const OUString &sBuffer)
virtual XMLTransformerContext * CreateUserDefinedContext(const TransformerAction_Impl &rAction, const OUString &rQName, bool bPersistent=false) override
Definition: Oasis2OOo.cxx:1592
XMLTransformerActionInit const aDateTimeActionTable[]
Definition: Oasis2OOo.cxx:1126
void RemoveAttributeByIndex(sal_Int16 i)
NUMBER
PROPERTY
unsigned char sal_Bool
virtual OUString SAL_CALL getImplementationName() override
Definition: Oasis2OOo.cxx:1968
void AddAttribute(const OUString &sName, const OUString &sValue)
void RenameAttributeByIndex(sal_Int16 i, const OUString &rNewName)
XMLTransformerActionInit const aFontFaceActionTable[]
Definition: Oasis2OOo.cxx:696
XMLTransformerActionInit const aListStyleRefActionTable[]
Definition: Oasis2OOo.cxx:665
virtual void Characters(const OUString &rChars)
virtual void StartElement(const css::uno::Reference< css::xml::sax::XAttributeList > &xAttrList) override
XMLTransformerOASISEventMap_Impl * m_pEventMap
Definition: Oasis2OOo.hxx:31
XMLTransformerActionInit const aIndexEntryTabStopActionTable[]
Definition: Oasis2OOo.cxx:809
#define TITLE
XMLTransformerActionInit const aBackgroundImageActionTable[]
Definition: Oasis2OOo.cxx:957
#define Y
static bool ReplaceSingleInWithInch(OUString &rValue)
XMLTransformerActionInit const aMapStyleRefActionTable[]
Definition: Oasis2OOo.cxx:681
virtual void StartElement(const css::uno::Reference< css::xml::sax::XAttributeList > &xAttrList)
#define ENTRY1Q(n, l, a, p1, t1)
Definition: Oasis2OOo.cxx:95
constexpr sal_uInt16 XML_NAMESPACE_PRESENTATION
sal_uInt16 GetQNamePrefixFromParam1() const
XMLTransformerActionInit const aChartActionTable[]
Definition: Oasis2OOo.cxx:1079
std::unique_ptr< char[]> aBuffer
friend class XMLTransformerContext
XMLTransformerActionInit const aDlgActionTable[]
Definition: Oasis2OOo.cxx:626
CONDITION
constexpr sal_uInt16 XML_NAMESPACE_TABLE
virtual XMLTransformerActions * GetUserDefinedActions(sal_uInt16 n) override
Definition: Oasis2OOo.cxx:1653
#define ENTRY1(n, l, a, p1)
Definition: Oasis2OOo.cxx:93
::ucbhelper::Content m_aContent
#define SAL_WARN_IF(condition, area, stream)
const OUString & GetXMLToken(enum XMLTokenEnum eToken)
return the OUString representation for eToken
Definition: xmltoken.cxx:3378
Handling of tokens in XML:
#define SAL_INFO(area, stream)
FORM
LINE
static OUString GetEventName(sal_uInt16 nPrefix, const OUString &rName, XMLTransformerOASISEventMap_Impl &rMap, XMLTransformerOASISEventMap_Impl *pMap2)
#define OFFSET
sal_uInt16 Add(const OUString &rPrefix, const OUString &rName, sal_uInt16 nKey=XML_NAMESPACE_UNKNOWN)
const sal_uInt16 WIDTH
TABLE
const XMLTransformerContext * GetCurrentContext() const
XMLTransformerActionInit const aColumnsActionTable[]
Definition: Oasis2OOo.cxx:874
XMLTransformerActionInit const aConnectorActionTable[]
Definition: Oasis2OOo.cxx:778
#define SAL_WARN(area, stream)
virtual sal_Int64 SAL_CALL getSomething(const css::uno::Sequence< sal_Int8 > &aIdentifier) override
Definition: Oasis2OOo.cxx:1957
#define ENTRY2(n, l, a, p1, p2)
Definition: Oasis2OOo.cxx:88
static bool DecodeStyleName(OUString &rName)
XMLTokenEnum eToken
Definition: xmltoken.cxx:40
constexpr sal_uInt16 XML_NAMESPACE_META
static void FlushEventMap(XMLTransformerOASISEventMap_Impl *p)
XMLTransformerActionInit const aFormActionTable[]
Definition: Oasis2OOo.cxx:1090
virtual OUString SAL_CALL getValueByIndex(sal_Int16 i) override
XMLTransformerActionInit const aTabStopActionTable[]
Definition: Oasis2OOo.cxx:818
HIDDEN
::xmloff::token::XMLTokenEnum GetQNameTokenFromParam1() const
XMLTransformerActionInit const aDrawAreaPolygonActionTable[]
Definition: Oasis2OOo.cxx:1109
XMLTransformerActionInit const aTextStyleRefActionTable[]
Definition: Oasis2OOo.cxx:646
TEXT
FORMULA
constexpr sal_uInt16 XML_NAMESPACE_STYLE
static XMLTransformerOASISEventMap_Impl * CreateEventMap()
virtual rtl::Reference< XMLTransformerContext > CreateChildContext(sal_uInt16 nPrefix, const OUString &rLocalName, const OUString &rQName, const css::uno::Reference< css::xml::sax::XAttributeList > &xAttrList)
sal_uInt16 nPos
XMLTransformerActionInit const aContentValidationActionTable[]
Definition: Oasis2OOo.cxx:1039
const bool READONLY
const sal_uInt8 R
SvXMLNamespaceMap & GetReplaceNamespaceMap()
XMLTransformerActionInit const aAnimationActionTable[]
Definition: Oasis2OOo.cxx:768
css::uno::Any SAL_CALL makeAny(const SharedUNOComponent< INTERFACE, COMPONENT > &value)