[gnumeric] ods: derive the preparse dtd from the regular dtd.



commit d01df7f08388ae1249d22666fd3e8bbe21340de9
Author: Morten Welinder <terra gnome org>
Date:   Thu Jun 18 14:08:00 2015 -0400

    ods: derive the preparse dtd from the regular dtd.
    
    Only one place to edit each time.

 plugins/openoffice/ChangeLog         |    5 +
 plugins/openoffice/openoffice-read.c |  334 ++++++----------------------------
 2 files changed, 60 insertions(+), 279 deletions(-)
---
diff --git a/plugins/openoffice/ChangeLog b/plugins/openoffice/ChangeLog
index 67e0083..e4dc600 100644
--- a/plugins/openoffice/ChangeLog
+++ b/plugins/openoffice/ChangeLog
@@ -1,3 +1,8 @@
+2015-06-18  Morten Welinder  <terra gnome org>
+
+       * openoffice-read.c (go_plugin_init): Derive the preparse dtd from
+       the regular dtd.  (The two were not in sync.)
+
 2015-06-16  Andreas J. Guelzow <aguelzow pyrshep ca>
 
        * openoffice-read.c (_OOParseState): add named_expression_names
diff --git a/plugins/openoffice/openoffice-read.c b/plugins/openoffice/openoffice-read.c
index 6b8129e..44fb7d1 100644
--- a/plugins/openoffice/openoffice-read.c
+++ b/plugins/openoffice/openoffice-read.c
@@ -12225,288 +12225,19 @@ static GsfXMLInNode const opendoc_content_dtd [] =
 GSF_XML_IN_NODE_END
 };
 
-static GsfXMLInNode const opendoc_content_preparse_dtd [] =
+static GsfXMLInNode const opendoc_content_preparse_overrides[] =
 {
-       GSF_XML_IN_NODE_FULL (START, START, -1, NULL, GSF_XML_NO_CONTENT, FALSE, TRUE, NULL, NULL, 0),
-       GSF_XML_IN_NODE (START, OFFICE, OO_NS_OFFICE, "document-content", GSF_XML_NO_CONTENT, NULL, NULL),
-         GSF_XML_IN_NODE (OFFICE, SCRIPT, OO_NS_OFFICE, "scripts", GSF_XML_NO_CONTENT, NULL, NULL),
-         GSF_XML_IN_NODE (OFFICE, OFFICE_FONTS, OO_NS_OFFICE, "font-face-decls", GSF_XML_NO_CONTENT, NULL, 
NULL),
-           GSF_XML_IN_NODE (OFFICE_FONTS, FONT_FACE, OO_NS_STYLE, "font-face", GSF_XML_NO_CONTENT, NULL, 
NULL),
-         GSF_XML_IN_NODE (OFFICE, OFFICE_STYLES, OO_NS_OFFICE, "automatic-styles", GSF_XML_NO_CONTENT, NULL, 
NULL),
-           GSF_XML_IN_NODE (OFFICE_STYLES, STYLE, OO_NS_STYLE, "style", GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE, TABLE_CELL_PROPS, OO_NS_STYLE, "table-cell-properties", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE, TABLE_COL_PROPS, OO_NS_STYLE, "table-column-properties", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE, TABLE_ROW_PROPS, OO_NS_STYLE, "table-row-properties", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE, CHART_PROPS, OO_NS_STYLE, "chart-properties", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (STYLE, TEXT_PROPS, OO_NS_STYLE, "text-properties", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (STYLE, TABLE_PROPS, OO_NS_STYLE, "table-properties", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (STYLE, PARAGRAPH_PROPS, OO_NS_STYLE, "paragraph-properties", 
GSF_XML_NO_CONTENT, NULL, NULL),
-               GSF_XML_IN_NODE (PARAGRAPH_PROPS, PARA_TABS, OO_NS_STYLE,  "tab-stops", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (STYLE, GRAPHIC_PROPS, OO_NS_STYLE, "graphic-properties", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (STYLE, STYLE_MAP, OO_NS_STYLE, "map", GSF_XML_NO_CONTENT, NULL, NULL),
-           GSF_XML_IN_NODE (OFFICE_STYLES, NUMBER_STYLE, OO_NS_NUMBER, "number-style", GSF_XML_NO_CONTENT, 
NULL, NULL),
-#if HAVE_OO_NS_LOCALC_EXT
-              GSF_XML_IN_NODE (NUMBER_STYLE, NUMBER_STYLE_NUMBERFILL_CHARACTER, OO_NS_LOCALC_EXT, 
"fill-character", GSF_XML_NO_CONTENT, NULL, NULL),
-              GSF_XML_IN_NODE (NUMBER_STYLE, LOEXT_TEXT, OO_NS_LOCALC_EXT, "text", GSF_XML_NO_CONTENT, NULL, 
NULL),
-#endif
-             GSF_XML_IN_NODE (NUMBER_STYLE, NUMBER_STYLE_NUMBER, OO_NS_NUMBER,   "number", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (NUMBER_STYLE_NUMBER, NUMBER_EMBEDDED_TEXT, OO_NS_NUMBER, "embedded-text", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (NUMBER_STYLE, NUMBER_STYLE_TEXT, OO_NS_NUMBER,     "text", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (NUMBER_STYLE, NUMBER_STYLE_FRACTION, OO_NS_NUMBER, "fraction", 
GSF_XML_NO_CONTENT,  NULL, NULL),
-             GSF_XML_IN_NODE (NUMBER_STYLE, NUMBER_SCI_STYLE_PROP, OO_NS_NUMBER, "scientific-number", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (NUMBER_STYLE, NUMBER_MAP, OO_NS_STYLE,             "map", GSF_XML_NO_CONTENT, 
NULL, NULL),
-              GSF_XML_IN_NODE (NUMBER_STYLE, NUMBER_TEXT_PROP, OO_NS_STYLE,    "text-properties", 
GSF_XML_NO_CONTENT, NULL, NULL),
-           GSF_XML_IN_NODE (OFFICE_STYLES, DATE_STYLE, OO_NS_NUMBER, "date-style", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_DAY, OO_NS_NUMBER,              "day", GSF_XML_NO_CONTENT,    
  NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_MONTH, OO_NS_NUMBER,            "month", GSF_XML_NO_CONTENT,  
  NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_YEAR, OO_NS_NUMBER,             "year", GSF_XML_NO_CONTENT,   
  NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_ERA, OO_NS_NUMBER,              "era", GSF_XML_NO_CONTENT,    
  NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_DAY_OF_WEEK, OO_NS_NUMBER,      "day-of-week", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_WEEK_OF_YEAR, OO_NS_NUMBER,     "week-of-year", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_QUARTER, OO_NS_NUMBER,          "quarter", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_HOURS, OO_NS_NUMBER,            "hours", GSF_XML_NO_CONTENT,  
  NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_MINUTES, OO_NS_NUMBER,          "minutes", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_SECONDS, OO_NS_NUMBER,          "seconds", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_AM_PM, OO_NS_NUMBER,            "am-pm", GSF_XML_NO_CONTENT,  
  NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_TEXT, OO_NS_NUMBER,             "text", GSF_XML_NO_CONTENT,   
  NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_TEXT_PROP, OO_NS_STYLE,         "text-properties", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (DATE_STYLE, DATE_MAP, OO_NS_STYLE,               "map", GSF_XML_NO_CONTENT, 
NULL, NULL),
-           GSF_XML_IN_NODE (OFFICE_STYLES, TIME_STYLE, OO_NS_NUMBER,   "time-style", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (TIME_STYLE, TIME_HOURS, OO_NS_NUMBER,    "hours", GSF_XML_NO_CONTENT,    NULL, 
NULL),
-             GSF_XML_IN_NODE (TIME_STYLE, TIME_MINUTES, OO_NS_NUMBER,  "minutes", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (TIME_STYLE, TIME_SECONDS, OO_NS_NUMBER,  "seconds", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (TIME_STYLE, TIME_AM_PM, OO_NS_NUMBER,    "am-pm", GSF_XML_NO_CONTENT,    NULL, 
NULL),
-             GSF_XML_IN_NODE (TIME_STYLE, TIME_TEXT, OO_NS_NUMBER,     "text", GSF_XML_NO_CONTENT,     NULL, 
NULL),
-             GSF_XML_IN_NODE (TIME_STYLE, TIME_TEXT_PROP, OO_NS_STYLE, "text-properties", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (TIME_STYLE, TIME_MAP, OO_NS_STYLE,       "map", GSF_XML_NO_CONTENT, NULL, 
NULL),
-           GSF_XML_IN_NODE (OFFICE_STYLES, STYLE_BOOL, OO_NS_NUMBER,   "boolean-style", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_BOOL, BOOL_PROP, OO_NS_NUMBER,     "boolean", GSF_XML_NO_CONTENT, NULL, 
NULL),
-           GSF_XML_IN_NODE (OFFICE_STYLES, STYLE_CURRENCY, OO_NS_NUMBER,       "currency-style", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_CURRENCY, CURRENCY_STYLE, OO_NS_NUMBER,    "number", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_CURRENCY, CURRENCY_STYLE_PROP, OO_NS_STYLE,"properties", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_CURRENCY, CURRENCY_MAP, OO_NS_STYLE,       "map", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_CURRENCY, CURRENCY_SYMBOL, OO_NS_NUMBER,   "currency-symbol", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_CURRENCY, CURRENCY_TEXT, OO_NS_NUMBER,     "text", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_CURRENCY, CURRENCY_TEXT_PROP, OO_NS_STYLE, "text-properties", 
GSF_XML_NO_CONTENT, NULL, NULL),
-           GSF_XML_IN_NODE (OFFICE_STYLES, STYLE_PERCENTAGE, OO_NS_NUMBER, "percentage-style", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_PERCENTAGE, PERCENTAGE_STYLE_PROP, OO_NS_NUMBER,   "number", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_PERCENTAGE, PERCENTAGE_TEXT, OO_NS_NUMBER,         "text", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_PERCENTAGE, PERCENTAGE_MAP, OO_NS_STYLE,           "map", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_PERCENTAGE, PERCENTAGE_TEXT_PROP, OO_NS_STYLE,     "text-properties", 
GSF_XML_NO_CONTENT, NULL, NULL),
-           GSF_XML_IN_NODE (OFFICE_STYLES, STYLE_TEXT, OO_NS_NUMBER,           "text-style", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_TEXT, STYLE_TEXT_CONTENT, OO_NS_NUMBER,    "text-content", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_TEXT, STYLE_TEXT_PROP, OO_NS_NUMBER,       "text", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (STYLE_TEXT, STYLE_TEXT_MAP, OO_NS_STYLE,         "map", GSF_XML_NO_CONTENT, 
NULL, NULL),
-
-       GSF_XML_IN_NODE (OFFICE, OFFICE_BODY, OO_NS_OFFICE, "body", GSF_XML_NO_CONTENT, NULL, NULL),
-         GSF_XML_IN_NODE (OFFICE_BODY, SPREADSHEET, OO_NS_OFFICE, "spreadsheet", GSF_XML_NO_CONTENT, NULL, 
NULL),
-           GSF_XML_IN_NODE (SPREADSHEET, DATA_PILOT_TABLES, OO_NS_TABLE, "data-pilot-tables", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (DATA_PILOT_TABLES, DATA_PILOT_TABLE, OO_NS_TABLE, "data-pilot-table", 
GSF_XML_NO_CONTENT, NULL, NULL),
-               GSF_XML_IN_NODE (DATA_PILOT_TABLE, DPT_SOURCE_CELL_RANGE, OO_NS_TABLE, "source-cell-range", 
GSF_XML_NO_CONTENT, NULL, NULL),
-               GSF_XML_IN_NODE (DATA_PILOT_TABLE, DATA_PILOT_FIELD, OO_NS_TABLE, "data-pilot-field", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (DATA_PILOT_FIELD, DATA_PILOT_LEVEL, OO_NS_TABLE, "data-pilot-level", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (DATA_PILOT_LEVEL, DATA_PILOT_LAYOUT_INFO, OO_NS_TABLE, 
"data-pilot-layout-info", GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (DATA_PILOT_LEVEL, DATA_PILOT_SORT_INFO, OO_NS_TABLE, 
"data-pilot-sort-info", GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (DATA_PILOT_LEVEL, DATA_PILOT_DISPLAY_INFO, OO_NS_TABLE, 
"data-pilot-display-info", GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (DATA_PILOT_LEVEL, DATA_PILOT_MEMBERS, OO_NS_TABLE, "data-pilot-members", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                     GSF_XML_IN_NODE (DATA_PILOT_MEMBERS, DATA_PILOT_MEMBER, OO_NS_TABLE, 
"data-pilot-member", GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (DATA_PILOT_LEVEL, DATA_PILOT_SUBTOTALS, OO_NS_TABLE, 
"data-pilot-subtotals", GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (DATA_PILOT_SUBTOTALS, DATA_PILOT_SUBTOTAL, OO_NS_TABLE, 
"data-pilot-subtotal", GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (DATA_PILOT_FIELD, DATA_PILOT_GROUPS, OO_NS_TABLE, "data-pilot-groups", 
GSF_XML_NO_CONTENT, NULL, NULL),
-           GSF_XML_IN_NODE (SPREADSHEET, CONTENT_VALIDATIONS, OO_NS_TABLE, "content-validations", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (CONTENT_VALIDATIONS, CONTENT_VALIDATION, OO_NS_TABLE, "content-validation", 
GSF_XML_NO_CONTENT, NULL, NULL),
-               GSF_XML_IN_NODE (CONTENT_VALIDATION, ERROR_MESSAGE, OO_NS_TABLE, "error-message", 
GSF_XML_NO_CONTENT, NULL , NULL),
-                   GSF_XML_IN_NODE (ERROR_MESSAGE, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                   GSF_XML_IN_NODE (TEXT_CONTENT, TEXT_S,    OO_NS_TEXT, "s", GSF_XML_NO_CONTENT,  NULL, 
NULL),
-                   GSF_XML_IN_NODE (TEXT_CONTENT, TEXT_LINE_BREAK, OO_NS_TEXT, "line-break", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (TEXT_CONTENT, TEXT_TAB,  OO_NS_TEXT, "tab", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                   GSF_XML_IN_NODE (TEXT_CONTENT, TEXT_SPAN,      OO_NS_TEXT, "span", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                     GSF_XML_IN_NODE (TEXT_SPAN, TEXT_SPAN, OO_NS_TEXT, "span", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd def */
-                     GSF_XML_IN_NODE (TEXT_SPAN, TEXT_S,    OO_NS_TEXT, "s", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd def */
-                     GSF_XML_IN_NODE (TEXT_SPAN, TEXT_LINE_BREAK,    OO_NS_TEXT, "line-break", 
GSF_XML_NO_CONTENT, NULL, NULL),/* 2nd def */
-                     GSF_XML_IN_NODE (TEXT_SPAN, TEXT_TAB, OO_NS_TEXT, "tab", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd def */
-                     GSF_XML_IN_NODE (TEXT_SPAN, TEXT_ADDR, OO_NS_TEXT, "a", GSF_XML_NO_CONTENT, NULL, NULL),
-                       GSF_XML_IN_NODE (TEXT_ADDR, TEXT_S,    OO_NS_TEXT, "s", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd def */
-                       GSF_XML_IN_NODE (TEXT_ADDR, TEXT_TAB, OO_NS_TEXT, "tab", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd def */
-                       GSF_XML_IN_NODE (TEXT_ADDR, TEXT_SPAN, OO_NS_TEXT, "span", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd def */
-               GSF_XML_IN_NODE (CONTENT_VALIDATION, HELP_MESSAGE, OO_NS_TABLE, "help-message", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (HELP_MESSAGE, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd def */
-           GSF_XML_IN_NODE (SPREADSHEET, CALC_SETTINGS, OO_NS_TABLE, "calculation-settings", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (CALC_SETTINGS, ITERATION, OO_NS_TABLE, "iteration", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (CALC_SETTINGS, DATE_CONVENTION, OO_NS_TABLE, "null-date", GSF_XML_NO_CONTENT, 
NULL, NULL),
-           GSF_XML_IN_NODE (SPREADSHEET, CHART, OO_NS_CHART, "chart", GSF_XML_NO_CONTENT, NULL, NULL),
-         GSF_XML_IN_NODE (OFFICE_BODY, OFFICE_CHART, OO_NS_OFFICE, "chart", GSF_XML_NO_CONTENT, NULL, NULL),
-           GSF_XML_IN_NODE (OFFICE_CHART, CHART_CHART, OO_NS_CHART, "chart", GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (CHART_CHART, CHART_TABLE, OO_NS_TABLE, "table", GSF_XML_NO_CONTENT, NULL, 
NULL),
-               GSF_XML_IN_NODE (CHART_TABLE, CHART_TABLE_ROWS, OO_NS_TABLE, "table-rows", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_TABLE_ROWS, CHART_TABLE_ROW, OO_NS_TABLE, "table-row", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (CHART_TABLE_ROW, CHART_TABLE_CELL, OO_NS_TABLE, "table-cell", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                     GSF_XML_IN_NODE (CHART_TABLE_CELL, CHART_CELL_P, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                     GSF_XML_IN_NODE (CHART_TABLE_CELL, CHART_CELL_DRAW_G, OO_NS_DRAW, "g", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                       GSF_XML_IN_NODE (CHART_CELL_DRAW_G, CHART_CELL_SVG_DESC, OO_NS_SVG, "desc", 
GSF_XML_NO_CONTENT, NULL, NULL),
-               GSF_XML_IN_NODE (CHART_TABLE, CHART_TABLE_COLS, OO_NS_TABLE, "table-columns", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_TABLE_COLS, CHART_TABLE_COL, OO_NS_TABLE, "table-column", 
GSF_XML_NO_CONTENT, NULL, NULL),
-               GSF_XML_IN_NODE (CHART_TABLE, CHART_TABLE_HROWS, OO_NS_TABLE, "table-header-rows", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_TABLE_HROWS, CHART_TABLE_HROW, OO_NS_TABLE, "table-header-row", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_TABLE_HROWS, CHART_TABLE_ROW, OO_NS_TABLE, "table-row", 
GSF_XML_NO_CONTENT, NULL, NULL),               /* 2nd Def */
-               GSF_XML_IN_NODE (CHART_TABLE, CHART_TABLE_HCOLS, OO_NS_TABLE, "table-header-columns", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_TABLE_HCOLS, CHART_TABLE_HCOL, OO_NS_TABLE, "table-header-column", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_TABLE_HCOLS, CHART_TABLE_COL, OO_NS_TABLE, "table-column", 
GSF_XML_NO_CONTENT, NULL, NULL),            /* 2nd Def */
-
-             GSF_XML_IN_NODE_FULL (CHART_CHART, CHART_TITLE, OO_NS_CHART, "title", GSF_XML_NO_CONTENT, 
FALSE, FALSE, NULL, NULL, .v_int = 0),
-               GSF_XML_IN_NODE (CHART_TITLE, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd Def */
-             GSF_XML_IN_NODE_FULL (CHART_CHART, CHART_SUBTITLE, OO_NS_CHART, "subtitle", GSF_XML_NO_CONTENT, 
FALSE, FALSE, NULL, NULL, .v_int = 1),
-               GSF_XML_IN_NODE (CHART_SUBTITLE, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd Def */
-             GSF_XML_IN_NODE_FULL (CHART_CHART, CHART_FOOTER, OO_NS_CHART, "footer", GSF_XML_NO_CONTENT, 
FALSE, FALSE, NULL, NULL, .v_int = 2),
-               GSF_XML_IN_NODE (CHART_FOOTER, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd Def */
-             GSF_XML_IN_NODE (CHART_CHART, CHART_LEGEND, OO_NS_CHART, "legend", GSF_XML_NO_CONTENT, NULL, 
NULL),
-               GSF_XML_IN_NODE (CHART_LEGEND, CHART_LEGEND_TITLE, OO_GNUM_NS_EXT, "title", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_LEGEND_TITLE, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, 
NULL, NULL), /* 2nd Def */
-             GSF_XML_IN_NODE (CHART_CHART, CHART_PLOT_AREA, OO_NS_CHART, "plot-area", GSF_XML_NO_CONTENT, 
NULL, NULL),
-               GSF_XML_IN_NODE (CHART_PLOT_AREA, CHART_SERIES, OO_NS_CHART, "series", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_SERIES, SERIES_DOMAIN, OO_NS_CHART, "domain", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_SERIES, SERIES_DATA_PT, OO_NS_CHART, "data-point", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_SERIES, SERIES_DATA_ERR, OO_NS_CHART, "error-indicator", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_SERIES, SERIES_REGRESSION, OO_NS_CHART, "regression-curve", 
GSF_XML_NO_CONTENT,  NULL, NULL),
-                   GSF_XML_IN_NODE (SERIES_REGRESSION, SERIES_REG_EQ, OO_NS_CHART, "equation", 
GSF_XML_NO_CONTENT,  NULL, NULL),
-                   GSF_XML_IN_NODE (SERIES_REGRESSION, SERIES_REG_EQ_GNM, OO_GNUM_NS_EXT, "equation", 
GSF_XML_NO_CONTENT,  NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_SERIES, SERIES_REGRESSION_MULTIPLE, OO_GNUM_NS_EXT, 
"regression-curve", GSF_XML_NO_CONTENT,  NULL, NULL),
-                   GSF_XML_IN_NODE (SERIES_REGRESSION_MULTIPLE, SERIES_REG_EQ, OO_NS_CHART, "equation", 
GSF_XML_NO_CONTENT,  NULL, NULL),/* 2nd Def */
-                   GSF_XML_IN_NODE (SERIES_REGRESSION_MULTIPLE, SERIES_REG_EQ_GNM, OO_GNUM_NS_EXT, 
"equation", GSF_XML_NO_CONTENT,  NULL, NULL), /* 2nd Def */
-                 GSF_XML_IN_NODE (CHART_SERIES, SERIES_DROPLINES, OO_GNUM_NS_EXT, "droplines", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_SERIES, SERIES_SERIESLINES, OO_GNUM_NS_EXT, "serieslines", 
GSF_XML_NO_CONTENT, NULL, NULL),
-               GSF_XML_IN_NODE (CHART_PLOT_AREA, CHART_WALL, OO_NS_CHART, "wall", GSF_XML_NO_CONTENT, NULL, 
NULL),
-               GSF_XML_IN_NODE (CHART_PLOT_AREA, CHART_FLOOR, OO_NS_CHART, "floor", GSF_XML_NO_CONTENT, 
NULL, NULL),
-               GSF_XML_IN_NODE (CHART_PLOT_AREA, CHART_AXIS, OO_NS_CHART, "axis", GSF_XML_NO_CONTENT, NULL, 
NULL),
-               GSF_XML_IN_NODE (CHART_PLOT_AREA, GNM_CHART_AXIS, OO_GNUM_NS_EXT, "axis", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_AXIS, CHART_AXISLINE, OO_GNUM_NS_EXT, "axisline", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (CHART_AXIS, CHART_GRID, OO_NS_CHART, "grid", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                 GSF_XML_IN_NODE (CHART_AXIS, CHART_AXIS_CAT,   OO_NS_CHART, "categories", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE_FULL (CHART_AXIS, CHART_AXIS_TITLE, OO_NS_CHART, "title", 
GSF_XML_NO_CONTENT, FALSE, FALSE, NULL, NULL, .v_int = 3),
-                 GSF_XML_IN_NODE (GNM_CHART_AXIS, GNM_CHART_AXISLINE, OO_GNUM_NS_EXT, "axisline", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (GNM_CHART_AXIS, GNM_CHART_GRID, OO_NS_CHART, "grid", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                 GSF_XML_IN_NODE (GNM_CHART_AXIS, GNM_CHART_AXIS_CAT,   OO_NS_CHART, "categories", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE_FULL (GNM_CHART_AXIS, GNM_CHART_AXIS_TITLE, OO_NS_CHART, "title", 
GSF_XML_NO_CONTENT, FALSE, FALSE, NULL, NULL, .v_int = 3),
-                   GSF_XML_IN_NODE (CHART_AXIS_TITLE, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, 
NULL, NULL),/* 2nd Def */
-               GSF_XML_IN_NODE (CHART_PLOT_AREA, CHART_OOO_COORDINATE_REGION, OO_NS_CHART_OOO, 
"coordinate-region", GSF_XML_NO_CONTENT, NULL, NULL),
-           GSF_XML_IN_NODE (SPREADSHEET, TABLE, OO_NS_TABLE, "table", GSF_XML_NO_CONTENT, 
&odf_preparse_table_start, &odf_preparse_table_end),
-             GSF_XML_IN_NODE (TABLE, SHEET_SELECTIONS, OO_GNUM_NS_EXT, "selections", GSF_XML_NO_CONTENT, 
NULL, NULL),
-               GSF_XML_IN_NODE (SHEET_SELECTIONS, SELECTION, OO_GNUM_NS_EXT, "selection", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (TABLE, TABLE_SOURCE, OO_NS_TABLE, "table-source", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (TABLE, TABLE_SHAPES, OO_NS_TABLE, "shapes", GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (TABLE_SHAPES, DRAW_FRAME, OO_NS_DRAW, "frame", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                 GSF_XML_IN_NODE (TABLE_SHAPES, DRAW_CAPTION, OO_NS_DRAW, "caption", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                   GSF_XML_IN_NODE (DRAW_CAPTION, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL), /* 2nd def */
-                 GSF_XML_IN_NODE (TABLE_SHAPES, DRAW_CUSTOM_SHAPE, OO_NS_DRAW, "custom-shape", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (DRAW_CUSTOM_SHAPE, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, 
NULL, NULL), /* 2nd def */
-                   GSF_XML_IN_NODE (DRAW_CUSTOM_SHAPE, DRAW_ENHANCED_GEOMETRY, OO_NS_DRAW, 
"enhanced-geometry", GSF_XML_NO_CONTENT, NULL, NULL),
-       GSF_XML_IN_NODE (DRAW_ENHANCED_GEOMETRY, DRAW_ENHANCED_GEOMETRY_EQUATION, OO_NS_DRAW, "equation", 
GSF_XML_NO_CONTENT, NULL, NULL),
-       GSF_XML_IN_NODE (DRAW_ENHANCED_GEOMETRY, DRAW_ENHANCED_GEOMETRY_HANDLE, OO_NS_DRAW, "handle", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (TABLE_SHAPES, DRAW_ELLIPSE, OO_NS_DRAW, "ellipse", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                   GSF_XML_IN_NODE (DRAW_ELLIPSE, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL), /* 2nd def */
-                 GSF_XML_IN_NODE (TABLE_SHAPES, DRAW_LINE, OO_NS_DRAW, "line", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                    GSF_XML_IN_NODE (DRAW_LINE, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL), /* 2nd def */
-                 GSF_XML_IN_NODE (TABLE_SHAPES, DRAW_RECT, OO_NS_DRAW, "rect", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                   GSF_XML_IN_NODE (DRAW_RECT, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL), /* 2nd def */
-             GSF_XML_IN_NODE (TABLE, FORMS, OO_NS_OFFICE, "forms", GSF_XML_NO_CONTENT, NULL, NULL),
-               GSF_XML_IN_NODE (FORMS, FORM, OO_NS_FORM, "form", GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (FORM, FORM_PROPERTIES, OO_NS_FORM, "properties", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                   GSF_XML_IN_NODE (FORM_PROPERTIES, FORM_PROPERTY, OO_NS_FORM, "property", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                     GSF_XML_IN_NODE (FORM_PROPERTIES, FORM_LIST_PROPERTY, OO_NS_FORM, "list-property", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (FORM, FORM_BUTTON, OO_NS_FORM, "button", GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (FORM_BUTTON, FORM_PROPERTIES, OO_NS_FORM, "properties", 
GSF_XML_NO_CONTENT, NULL, NULL),                   /* 2nd Def */
-                   GSF_XML_IN_NODE (FORM_BUTTON, BUTTON_OFFICE_EVENT_LISTENERS, OO_NS_OFFICE, 
"event-listeners", GSF_XML_NO_CONTENT, NULL, NULL),
-                     GSF_XML_IN_NODE (BUTTON_OFFICE_EVENT_LISTENERS, BUTTON_EVENT_LISTENER, OO_NS_SCRIPT, 
"event-listener", GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (FORM, FORM_VALUE_RANGE, OO_NS_FORM, "value-range", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                   GSF_XML_IN_NODE (FORM_VALUE_RANGE, FORM_PROPERTIES, OO_NS_FORM, "properties", 
GSF_XML_NO_CONTENT, NULL, NULL),                      /* 2nd Def */
-                 GSF_XML_IN_NODE (FORM, FORM_CHECKBOX, OO_NS_FORM, "checkbox", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                   GSF_XML_IN_NODE (FORM_CHECKBOX, FORM_PROPERTIES, OO_NS_FORM, "properties", 
GSF_XML_NO_CONTENT, NULL, NULL),                 /* 2nd Def */
-                 GSF_XML_IN_NODE (FORM, FORM_RADIO, OO_NS_FORM, "radio", GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (FORM_RADIO, FORM_PROPERTIES, OO_NS_FORM, "properties", 
GSF_XML_NO_CONTENT, NULL, NULL),                    /* 2nd Def */
-                 GSF_XML_IN_NODE (FORM, FORM_LISTBOX, OO_NS_FORM, "listbox", GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (FORM_LISTBOX, FORM_PROPERTIES, OO_NS_FORM, "properties", 
GSF_XML_NO_CONTENT, NULL, NULL),                  /* 2nd Def */
-                 GSF_XML_IN_NODE (FORM, FORM_COMBOBOX, OO_NS_FORM, "combobox", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                   GSF_XML_IN_NODE (FORM_COMBOBOX, FORM_PROPERTIES, OO_NS_FORM, "properties", 
GSF_XML_NO_CONTENT, NULL, NULL),                 /* 2nd Def */
-                 GSF_XML_IN_NODE (FORM, FORM_GENERIC, OO_NS_FORM, "generic-control", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                   GSF_XML_IN_NODE (FORM_GENERIC, FORM_PROPERTIES, OO_NS_FORM, "properties", 
GSF_XML_NO_CONTENT, NULL, NULL),                  /* 2nd Def */
-             GSF_XML_IN_NODE (TABLE, TABLE_ROWS, OO_NS_TABLE, "table-rows", GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (TABLE, TABLE_H_ROWS, OO_NS_TABLE, "table-header-rows", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (TABLE, TABLE_COL, OO_NS_TABLE, "table-column", GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (TABLE, TABLE_COLS, OO_NS_TABLE, "table-columns", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (TABLE, TABLE_H_COLS, OO_NS_TABLE, "table-header-columns", GSF_XML_NO_CONTENT, 
NULL, NULL),
-             GSF_XML_IN_NODE (TABLE_H_COLS, TABLE_COL, OO_NS_TABLE, "table-column", GSF_XML_NO_CONTENT, 
NULL, NULL),    /* 2nd def */
-             GSF_XML_IN_NODE (TABLE_COLS, TABLE_COL, OO_NS_TABLE, "table-column", GSF_XML_NO_CONTENT, NULL, 
NULL),      /* 2nd def */
-             GSF_XML_IN_NODE (TABLE, TABLE_ROW, OO_NS_TABLE, "table-row", GSF_XML_NO_CONTENT, 
&odf_preparse_row_start, &odf_preparse_row_end),
-             GSF_XML_IN_NODE (TABLE, SOFTPAGEBREAK, OO_NS_TEXT, "soft-page-break", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (TABLE_ROWS, TABLE_ROW, OO_NS_TABLE, "table-row", GSF_XML_NO_CONTENT, NULL, 
NULL), /* 2nd def */
-             GSF_XML_IN_NODE (TABLE_H_ROWS, TABLE_ROW, OO_NS_TABLE, "table-row", GSF_XML_NO_CONTENT, NULL, 
NULL), /* 2nd def */
-             GSF_XML_IN_NODE (TABLE_ROWS, SOFTPAGEBREAK, OO_NS_TEXT, "soft-page-break", GSF_XML_NO_CONTENT, 
NULL, NULL), /* 2nd def */
-             GSF_XML_IN_NODE (TABLE_H_ROWS, SOFTPAGEBREAK, OO_NS_TEXT, "soft-page-break", 
GSF_XML_NO_CONTENT, NULL, NULL), /* 2nd def */
-               GSF_XML_IN_NODE (TABLE_ROW, TABLE_CELL, OO_NS_TABLE, "table-cell", GSF_XML_NO_CONTENT, 
&odf_preparse_cell_start, NULL),
-                 GSF_XML_IN_NODE (TABLE_CELL, DETECTIVE, OO_NS_TABLE, "detective", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                   GSF_XML_IN_NODE (DETECTIVE, DETECTIVE_OPERATION, OO_NS_TABLE, "operation", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (TABLE_CELL, DRAW_CUSTOM_SHAPE, OO_NS_DRAW, "custom-shape", 
GSF_XML_NO_CONTENT, NULL, NULL),/* 2nd def */
-                 GSF_XML_IN_NODE (TABLE_CELL, CELL_TEXT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (CELL_TEXT, DRAW_CUSTOM_SHAPE, OO_NS_DRAW, "custom-shape", 
GSF_XML_NO_CONTENT, NULL, NULL),/* 2nd def */
-                   GSF_XML_IN_NODE (CELL_TEXT, TEXT_S,   OO_NS_TEXT, "s", GSF_XML_NO_CONTENT, NULL, NULL),/* 
2nd def */
-                   GSF_XML_IN_NODE (CELL_TEXT, TEXT_ADDR, OO_NS_TEXT, "a", GSF_XML_NO_CONTENT, NULL, NULL), 
/* 2nd def */
-                   GSF_XML_IN_NODE (CELL_TEXT, TEXT_LINE_BREAK, OO_NS_TEXT, "line-break", 
GSF_XML_NO_CONTENT, NULL, NULL),/* 2nd def */
-                   GSF_XML_IN_NODE (CELL_TEXT, TEXT_TAB,  OO_NS_TEXT, "tab", GSF_XML_NO_CONTENT,NULL, NULL 
),/* 2nd def */
-                   GSF_XML_IN_NODE (CELL_TEXT, TEXT_SPAN, OO_NS_TEXT, "span", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd def */
-                 GSF_XML_IN_NODE (TABLE_CELL, CELL_OBJECT, OO_NS_DRAW, "object", GSF_XML_NO_CONTENT, NULL, 
NULL),              /* ignore for now */
-                 GSF_XML_IN_NODE (TABLE_CELL, CELL_GRAPHIC, OO_NS_DRAW, "g", GSF_XML_NO_CONTENT, NULL, 
NULL),                  /* ignore for now */
-                   GSF_XML_IN_NODE (CELL_GRAPHIC, CELL_GRAPHIC, OO_NS_DRAW, "g", GSF_XML_NO_CONTENT, NULL, 
NULL),              /* 2nd def */
-                   GSF_XML_IN_NODE (CELL_GRAPHIC, DRAW_POLYLINE, OO_NS_DRAW, "polyline", GSF_XML_NO_CONTENT, 
NULL, NULL),      /* 2nd def */
-                 GSF_XML_IN_NODE (TABLE_CELL, DRAW_CONTROL, OO_NS_DRAW, "control", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                 GSF_XML_IN_NODE (TABLE_CELL, DRAW_RECT, OO_NS_DRAW, "rect", GSF_XML_NO_CONTENT, NULL, 
NULL), /* 2nd def */
-                 GSF_XML_IN_NODE (TABLE_CELL, DRAW_LINE, OO_NS_DRAW, "line", GSF_XML_NO_CONTENT, NULL, 
NULL), /* 2nd def */
-                 GSF_XML_IN_NODE (TABLE_CELL, DRAW_ELLIPSE, OO_NS_DRAW, "ellipse", GSF_XML_NO_CONTENT, NULL, 
NULL), /* 2nd def */
-                 GSF_XML_IN_NODE (TABLE_CELL, DRAW_FRAME, OO_NS_DRAW, "frame", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd def */
-                   GSF_XML_IN_NODE (DRAW_FRAME, DRAW_OBJECT, OO_NS_DRAW, "object", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                   GSF_XML_IN_NODE (DRAW_OBJECT, DRAW_OBJECT_TEXT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, 
NULL, NULL),
-
-                   GSF_XML_IN_NODE (DRAW_FRAME, DRAW_IMAGE, OO_NS_DRAW, "image", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                     GSF_XML_IN_NODE (DRAW_IMAGE, DRAW_IMAGE_TEXT,OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                   GSF_XML_IN_NODE (DRAW_FRAME, SVG_DESC, OO_NS_SVG, "desc", GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (DRAW_FRAME, DRAW_TEXT_BOX, OO_NS_DRAW, "text-box", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                   GSF_XML_IN_NODE (DRAW_TEXT_BOX, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, NULL, 
NULL), /* 2nd def */
-                 GSF_XML_IN_NODE (TABLE_CELL, CELL_ANNOTATION, OO_NS_OFFICE, "annotation", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (CELL_ANNOTATION, TEXT_CONTENT, OO_NS_TEXT, "p", GSF_XML_NO_CONTENT, 
NULL, NULL),/* 2nd def */
-                   GSF_XML_IN_NODE (CELL_ANNOTATION, CELL_ANNOTATION_AUTHOR, OO_NS_DC, "creator", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (CELL_ANNOTATION, CELL_ANNOTATION_DATE, OO_NS_DC, "date", 
GSF_XML_NO_CONTENT, NULL, NULL),
-
-               GSF_XML_IN_NODE (TABLE_ROW, TABLE_COVERED_CELL, OO_NS_TABLE, "covered-table-cell", 
GSF_XML_NO_CONTENT, &odf_preparse_covered_cell_start, NULL),
-                 GSF_XML_IN_NODE (TABLE_COVERED_CELL, COVERED_CELL_TEXT, OO_NS_TEXT, "p", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                   GSF_XML_IN_NODE (COVERED_CELL_TEXT, COVERED_CELL_TEXT_S,    OO_NS_TEXT, "s", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                 GSF_XML_IN_NODE (TABLE_COVERED_CELL, DRAW_CONTROL, OO_NS_DRAW, "control", 
GSF_XML_NO_CONTENT, NULL, NULL),
-
-             GSF_XML_IN_NODE (TABLE, TABLE_COL_GROUP, OO_NS_TABLE, "table-column-group", GSF_XML_NO_CONTENT, 
NULL, NULL),
-               GSF_XML_IN_NODE (TABLE_COL_GROUP, TABLE_COL_GROUP, OO_NS_TABLE, "table-column-group", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (TABLE_COL_GROUP, TABLE_H_COLS, OO_NS_TABLE, "table-header-columns", 
GSF_XML_NO_CONTENT, NULL, NULL),/* 2nd def */
-               GSF_XML_IN_NODE (TABLE_COL_GROUP, TABLE_COL, OO_NS_TABLE, "table-column", GSF_XML_NO_CONTENT, 
NULL, NULL), /* 2nd def */
-             GSF_XML_IN_NODE (TABLE_ROW_GROUP, TABLE_ROW_GROUP, OO_NS_TABLE, "table-row-group", 
GSF_XML_NO_CONTENT, NULL, NULL),
-           GSF_XML_IN_NODE (TABLE, TABLE_ROW_GROUP,          OO_NS_TABLE, "table-row-group", 
GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (TABLE_ROW_GROUP, TABLE_ROW,          OO_NS_TABLE, "table-row", 
GSF_XML_NO_CONTENT, NULL, NULL), /* 2nd def */
-         GSF_XML_IN_NODE (TABLE, NAMED_EXPRS, OO_NS_TABLE, "named-expressions", GSF_XML_NO_CONTENT, NULL, 
NULL),
-         GSF_XML_IN_NODE (SPREADSHEET, NAMED_EXPRS, OO_NS_TABLE, "named-expressions", GSF_XML_NO_CONTENT, 
NULL, NULL), /* 2nd def */
-           GSF_XML_IN_NODE (NAMED_EXPRS, NAMED_EXPR, OO_NS_TABLE, "named-expression", GSF_XML_NO_CONTENT, 
&oo_named_expr_preparse, NULL),
-           GSF_XML_IN_NODE (NAMED_EXPRS, NAMED_RANGE, OO_NS_TABLE, "named-range", GSF_XML_NO_CONTENT, 
&oo_named_expr_preparse, NULL),
+       GSF_XML_IN_NODE (SPREADSHEET, TABLE, OO_NS_TABLE, "table", GSF_XML_NO_CONTENT, 
&odf_preparse_table_start, &odf_preparse_table_end),
+       GSF_XML_IN_NODE (TABLE, TABLE_ROW, OO_NS_TABLE, "table-row", GSF_XML_NO_CONTENT, 
&odf_preparse_row_start, &odf_preparse_row_end),
+       GSF_XML_IN_NODE (TABLE_ROW, TABLE_CELL, OO_NS_TABLE, "table-cell", GSF_XML_NO_CONTENT, 
&odf_preparse_cell_start, NULL),
+       GSF_XML_IN_NODE (TABLE_ROW, TABLE_COVERED_CELL, OO_NS_TABLE, "covered-table-cell", 
GSF_XML_NO_CONTENT, &odf_preparse_covered_cell_start, NULL),
+       GSF_XML_IN_NODE (NAMED_EXPRS, NAMED_EXPR, OO_NS_TABLE, "named-expression", GSF_XML_NO_CONTENT, 
&oo_named_expr_preparse, NULL),
+       GSF_XML_IN_NODE (NAMED_EXPRS, NAMED_RANGE, OO_NS_TABLE, "named-range", GSF_XML_NO_CONTENT, 
&oo_named_expr_preparse, NULL),
+       GSF_XML_IN_NODE_END
+};
 
-         GSF_XML_IN_NODE (SPREADSHEET, DB_RANGES, OO_NS_TABLE, "database-ranges", GSF_XML_NO_CONTENT, NULL, 
NULL),
-           GSF_XML_IN_NODE (DB_RANGES, DB_RANGE, OO_NS_TABLE, "database-range", GSF_XML_NO_CONTENT, NULL, 
NULL),
-             GSF_XML_IN_NODE (DB_RANGE, FILTER, OO_NS_TABLE, "filter", GSF_XML_NO_CONTENT, NULL, NULL),
-               GSF_XML_IN_NODE (FILTER, FILTER_COND, OO_NS_TABLE, "filter-condition", GSF_XML_NO_CONTENT, 
NULL, NULL),
-               GSF_XML_IN_NODE (FILTER, FILTER_AND, OO_NS_TABLE, "filter-and", GSF_XML_NO_CONTENT, NULL, 
NULL),
-                  GSF_XML_IN_NODE (FILTER_AND, FILTER_OR, OO_NS_TABLE, "filter-or", GSF_XML_NO_CONTENT, 
NULL, NULL),
-                       GSF_XML_IN_NODE (FILTER_OR, FILTER_COND_IGNORE, OO_NS_TABLE, "filter-condition", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                      GSF_XML_IN_NODE (FILTER_OR, FILTER_AND_IGNORE, OO_NS_TABLE, "filter-or", 
GSF_XML_NO_CONTENT, NULL, NULL),
-                  GSF_XML_IN_NODE (FILTER_AND, FILTER_COND, OO_NS_TABLE, "filter-condition", 
GSF_XML_NO_CONTENT, NULL, NULL), /* 2nd def */
-                GSF_XML_IN_NODE (FILTER, FILTER_OR, OO_NS_TABLE, "filter-or", GSF_XML_NO_CONTENT, NULL, 
NULL),/* 2nd def */
-           GSF_XML_IN_NODE (DB_RANGE, TABLE_SORT, OO_NS_TABLE, "sort", GSF_XML_NO_CONTENT, NULL, NULL),
-             GSF_XML_IN_NODE (TABLE_SORT, SORT_BY, OO_NS_TABLE, "sort-by", GSF_XML_NO_CONTENT, NULL, NULL),
+static GsfXMLInNode const *opendoc_content_preparse_dtd;
 
-GSF_XML_IN_NODE_END
-};
 
 static GsfXMLInNode const ooo1_content_preparse_dtd [] = {
 GSF_XML_IN_NODE_FULL (START, START, -1, NULL, GSF_XML_NO_CONTENT, FALSE, TRUE, NULL, NULL, 0),
@@ -14157,10 +13888,53 @@ openoffice_file_probe (G_GNUC_UNUSED GOFileOpener const *fo, GsfInput *input, G_
        return ver != OOO_VER_UNKNOWN;
 }
 
+static char *
+make_node_id (GsfXMLInNode const *node)
+{
+       return g_strconcat (node->id, " -- ", node->parent_id, NULL);
+}
+
+static GsfXMLInNode const *
+create_preparse_dtd (const GsfXMLInNode *orig, const GsfXMLInNode *overrides)
+{
+       int i, N;
+       GHashTable *loc_hash =
+               g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+       GsfXMLInNode *res;
+
+       for (N = 0; orig[N].id != NULL; N++) {
+               g_hash_table_replace (loc_hash, make_node_id (orig + N),
+                                     GINT_TO_POINTER (N));
+
+       }
+
+       res = g_memdup (orig, (N + 1) * sizeof (GsfXMLInNode));
+       for (i = 0; i < N; i++) {
+               res[i].start = NULL;
+               res[i].end = NULL;
+               res[i].has_content = GSF_XML_NO_CONTENT;
+       }
+
+       for (i = 0; overrides[i].id != NULL; i++) {
+               char *id = make_node_id (overrides + i);
+               int loc = GPOINTER_TO_INT (g_hash_table_lookup (loc_hash, id));
+               if (loc)
+                       res[loc] = overrides[i];
+               g_free (id);
+       }
+
+       g_hash_table_destroy (loc_hash);
+
+       return res;
+}
+
 G_MODULE_EXPORT void
 go_plugin_init (G_GNUC_UNUSED GOPlugin *plugin, G_GNUC_UNUSED GOCmdContext *cc)
 {
        magic_transparent = style_color_auto_back ();
+
+       opendoc_content_preparse_dtd =
+               create_preparse_dtd (opendoc_content_dtd, opendoc_content_preparse_overrides);
 }
 
 G_MODULE_EXPORT void
@@ -14168,4 +13942,6 @@ go_plugin_shutdown (G_GNUC_UNUSED GOPlugin *plugin, G_GNUC_UNUSED GOCmdContext *
 {
        style_color_unref (magic_transparent);
        magic_transparent = NULL;
+       g_free ((gpointer)opendoc_content_preparse_dtd);
+       opendoc_content_preparse_dtd = NULL;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]