Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/util/odf
diff options
context:
space:
mode:
Diffstat (limited to 'util/odf')
-rw-r--r--util/odf/__init__.py19
-rw-r--r--util/odf/attrconverters.py1490
-rw-r--r--util/odf/draw.py182
-rw-r--r--util/odf/element.py513
-rw-r--r--util/odf/grammar.py8426
-rw-r--r--util/odf/manifest.py41
-rw-r--r--util/odf/meta.py66
-rw-r--r--util/odf/namespaces.py107
-rw-r--r--util/odf/odfmanifest.py115
-rw-r--r--util/odf/office.py104
-rw-r--r--util/odf/opendocument.py656
-rw-r--r--util/odf/style.py148
12 files changed, 11867 insertions, 0 deletions
diff --git a/util/odf/__init__.py b/util/odf/__init__.py
new file mode 100644
index 0000000..17c80e0
--- /dev/null
+++ b/util/odf/__init__.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007 Søren Roug, European Environment Agency
+#
+# This is free software. You may redistribute it under the terms
+# of the Apache license and the GNU General Public License Version
+# 2 or at your option any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+
diff --git a/util/odf/attrconverters.py b/util/odf/attrconverters.py
new file mode 100644
index 0000000..00b08be
--- /dev/null
+++ b/util/odf/attrconverters.py
@@ -0,0 +1,1490 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2006-2012 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+from namespaces import *
+import re, types
+
+pattern_color = re.compile(r'#[0-9a-fA-F]{6}')
+pattern_vector3D = re.compile(r'\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)')
+
+def make_NCName(arg):
+ for c in (':',' '):
+ arg = arg.replace(c,"_%x_" % ord(c))
+ return arg
+
+def cnv_anyURI(attribute, arg, element):
+ return unicode(arg)
+
+def cnv_boolean(attribute, arg, element):
+ """ XML Schema Part 2: Datatypes Second Edition
+ An instance of a datatype that is defined as boolean can have the
+ following legal literals {true, false, 1, 0}
+ """
+ if str(arg).lower() in ("0","false","no"):
+ return "false"
+ if str(arg).lower() in ("1","true","yes"):
+ return "true"
+ raise ValueError, "'%s' not allowed as Boolean value for %s" % (str(arg), attribute)
+
+# Potentially accept color values
+def cnv_color(attribute, arg, element):
+ """ A RGB color in conformance with §5.9.11 of [XSL], that is a RGB color in notation “#rrggbb”, where
+ rr, gg and bb are 8-bit hexadecimal digits.
+ """
+ return str(arg)
+
+def cnv_configtype(attribute, arg, element):
+ if str(arg) not in ("boolean", "short", "int", "long",
+ "double", "string", "datetime", "base64Binary"):
+ raise ValueError, "'%s' not allowed" % str(arg)
+ return str(arg)
+
+def cnv_data_source_has_labels(attribute, arg, element):
+ if str(arg) not in ("none","row","column","both"):
+ raise ValueError, "'%s' not allowed" % str(arg)
+ return str(arg)
+
+# Understand different date formats
+def cnv_date(attribute, arg, element):
+ """ A dateOrDateTime value is either an [xmlschema-2] date value or an [xmlschema-2] dateTime
+ value.
+ """
+ return str(arg)
+
+def cnv_dateTime(attribute, arg, element):
+ """ A dateOrDateTime value is either an [xmlschema-2] date value or an [xmlschema-2] dateTime
+ value.
+ """
+ return str(arg)
+
+def cnv_double(attribute, arg, element):
+ return str(arg)
+
+def cnv_duration(attribute, arg, element):
+ return str(arg)
+
+def cnv_family(attribute, arg, element):
+ """ A style family """
+ if str(arg) not in ("text", "paragraph", "section", "ruby", "table", "table-column", "table-row", "table-cell",
+ "graphic", "presentation", "drawing-page", "chart"):
+ raise ValueError, "'%s' not allowed" % str(arg)
+ return str(arg)
+
+def __save_prefix(attribute, arg, element):
+ prefix = arg.split(':',1)[0]
+ if prefix == arg:
+ return unicode(arg)
+ namespace = element.get_knownns(prefix)
+ if namespace is None:
+ #raise ValueError, "'%s' is an unknown prefix" % str(prefix)
+ return unicode(arg)
+ p = element.get_nsprefix(namespace)
+ return unicode(arg)
+
+def cnv_formula(attribute, arg, element):
+ """ A string containing a formula. Formulas do not have a predefined syntax, but the string should
+ begin with a namespace prefix, followed by a “:” (COLON, U+003A) separator, followed by the text
+ of the formula. The namespace bound to the prefix determines the syntax and semantics of the
+ formula.
+ """
+ return __save_prefix(attribute, arg, element)
+
+def cnv_ID(attribute, arg, element):
+ return str(arg)
+
+def cnv_IDREF(attribute, arg, element):
+ return str(arg)
+
+def cnv_integer(attribute, arg, element):
+ return str(arg)
+
+def cnv_legend_position(attribute, arg, element):
+ if str(arg) not in ("start", "end", "top", "bottom", "top-start", "bottom-start", "top-end", "bottom-end"):
+ raise ValueError, "'%s' not allowed" % str(arg)
+ return str(arg)
+
+pattern_length = re.compile(r'-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))')
+
+def cnv_length(attribute, arg, element):
+ """ A (positive or negative) physical length, consisting of magnitude and unit, in conformance with the
+ Units of Measure defined in §5.9.13 of [XSL].
+ """
+ global pattern_length
+ if not pattern_length.match(arg):
+ raise ValueError, "'%s' is not a valid length" % arg
+ return arg
+
+def cnv_lengthorpercent(attribute, arg, element):
+ failed = False
+ try: return cnv_length(attribute, arg, element)
+ except: failed = True
+ try: return cnv_percent(attribute, arg, element)
+ except: failed = True
+ if failed:
+ raise ValueError, "'%s' is not a valid length or percent" % arg
+ return arg
+
+def cnv_metavaluetype(attribute, arg, element):
+ if str(arg) not in ("float", "date", "time", "boolean", "string"):
+ raise ValueError, "'%s' not allowed" % str(arg)
+ return str(arg)
+
+def cnv_major_minor(attribute, arg, element):
+ if arg not in ('major','minor'):
+ raise ValueError, "'%s' is not either 'minor' or 'major'" % arg
+
+pattern_namespacedToken = re.compile(r'[0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+')
+
+def cnv_namespacedToken(attribute, arg, element):
+ global pattern_namespacedToken
+
+ if not pattern_namespacedToken.match(arg):
+ raise ValueError, "'%s' is not a valid namespaced token" % arg
+ return __save_prefix(attribute, arg, element)
+
+def cnv_NCName(attribute, arg, element):
+ """ NCName is defined in http://www.w3.org/TR/REC-xml-names/#NT-NCName
+ Essentially an XML name minus ':'
+ """
+ if type(arg) in types.StringTypes:
+ return make_NCName(arg)
+ else:
+ return arg.getAttrNS(STYLENS, 'name')
+
+# This function takes either an instance of a style (preferred)
+# or a text string naming the style. If it is a text string, then it must
+# already have been converted to an NCName
+# The text-string argument is mainly for when we build a structure from XML
+def cnv_StyleNameRef(attribute, arg, element):
+ try:
+ return arg.getAttrNS(STYLENS, 'name')
+ except:
+ return arg
+
+# This function takes either an instance of a style (preferred)
+# or a text string naming the style. If it is a text string, then it must
+# already have been converted to an NCName
+# The text-string argument is mainly for when we build a structure from XML
+def cnv_DrawNameRef(attribute, arg, element):
+ try:
+ return arg.getAttrNS(DRAWNS, 'name')
+ except:
+ return arg
+
+# Must accept list of Style objects
+def cnv_NCNames(attribute, arg, element):
+ return ' '.join(arg)
+
+def cnv_nonNegativeInteger(attribute, arg, element):
+ return str(arg)
+
+pattern_percent = re.compile(r'-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%')
+
+def cnv_percent(attribute, arg, element):
+ global pattern_percent
+ if not pattern_percent.match(arg):
+ raise ValueError, "'%s' is not a valid length" % arg
+ return arg
+
+# Real one doesn't allow floating point values
+pattern_points = re.compile(r'-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*')
+#pattern_points = re.compile(r'-?[0-9.]+,-?[0-9.]+([ ]+-?[0-9.]+,-?[0-9.]+)*')
+def cnv_points(attribute, arg, element):
+ global pattern_points
+ if type(arg) in types.StringTypes:
+ if not pattern_points.match(arg):
+ raise ValueError, "x,y are separated by a comma and the points are separated by white spaces"
+ return arg
+ else:
+ try:
+ strarg = ' '.join([ "%d,%d" % p for p in arg])
+ except:
+ raise ValueError, "Points must be string or [(0,0),(1,1)] - not %s" % arg
+ return strarg
+
+def cnv_positiveInteger(attribute, arg, element):
+ return str(arg)
+
+def cnv_string(attribute, arg, element):
+ return unicode(arg)
+
+def cnv_textnoteclass(attribute, arg, element):
+ if str(arg) not in ("footnote", "endnote"):
+ raise ValueError, "'%s' not allowed" % str(arg)
+ return str(arg)
+
+# Understand different time formats
+def cnv_time(attribute, arg, element):
+ return str(arg)
+
+def cnv_token(attribute, arg, element):
+ return str(arg)
+
+pattern_viewbox = re.compile(r'-?[0-9]+([ ]+-?[0-9]+){3}$')
+
+def cnv_viewbox(attribute, arg, element):
+ global pattern_viewbox
+ if not pattern_viewbox.match(arg):
+ raise ValueError, "viewBox must be four integers separated by whitespaces"
+ return arg
+
+def cnv_xlinkshow(attribute, arg, element):
+ if str(arg) not in ("new", "replace", "embed"):
+ raise ValueError, "'%s' not allowed" % str(arg)
+ return str(arg)
+
+
+attrconverters = {
+ ((ANIMNS,u'audio-level'), None): cnv_double,
+ ((ANIMNS,u'color-interpolation'), None): cnv_string,
+ ((ANIMNS,u'color-interpolation-direction'), None): cnv_string,
+ ((ANIMNS,u'command'), None): cnv_string,
+ ((ANIMNS,u'formula'), None): cnv_string,
+ ((ANIMNS,u'id'), None): cnv_ID,
+ ((ANIMNS,u'iterate-interval'), None): cnv_duration,
+ ((ANIMNS,u'iterate-type'), None): cnv_string,
+ ((ANIMNS,u'name'), None): cnv_string,
+ ((ANIMNS,u'sub-item'), None): cnv_string,
+ ((ANIMNS,u'value'), None): cnv_string,
+# ((DBNS,u'type'), None): cnv_namespacedToken,
+ ((CHARTNS,u'attached-axis'), None): cnv_string,
+ ((CHARTNS,u'class'), (CHARTNS,u'grid')): cnv_major_minor,
+ ((CHARTNS,u'class'), None): cnv_namespacedToken,
+ ((CHARTNS,u'column-mapping'), None): cnv_string,
+ ((CHARTNS,u'connect-bars'), None): cnv_boolean,
+ ((CHARTNS,u'data-label-number'), None): cnv_string,
+ ((CHARTNS,u'data-label-symbol'), None): cnv_boolean,
+ ((CHARTNS,u'data-label-text'), None): cnv_boolean,
+ ((CHARTNS,u'data-source-has-labels'), None): cnv_data_source_has_labels,
+ ((CHARTNS,u'deep'), None): cnv_boolean,
+ ((CHARTNS,u'dimension'), None): cnv_string,
+ ((CHARTNS,u'display-label'), None): cnv_boolean,
+ ((CHARTNS,u'error-category'), None): cnv_string,
+ ((CHARTNS,u'error-lower-indicator'), None): cnv_boolean,
+ ((CHARTNS,u'error-lower-limit'), None): cnv_string,
+ ((CHARTNS,u'error-margin'), None): cnv_string,
+ ((CHARTNS,u'error-percentage'), None): cnv_string,
+ ((CHARTNS,u'error-upper-indicator'), None): cnv_boolean,
+ ((CHARTNS,u'error-upper-limit'), None): cnv_string,
+ ((CHARTNS,u'gap-width'), None): cnv_string,
+ ((CHARTNS,u'interpolation'), None): cnv_string,
+ ((CHARTNS,u'interval-major'), None): cnv_string,
+ ((CHARTNS,u'interval-minor-divisor'), None): cnv_string,
+ ((CHARTNS,u'japanese-candle-stick'), None): cnv_boolean,
+ ((CHARTNS,u'label-arrangement'), None): cnv_string,
+ ((CHARTNS,u'label-cell-address'), None): cnv_string,
+ ((CHARTNS,u'legend-align'), None): cnv_string,
+ ((CHARTNS,u'legend-position'), None): cnv_legend_position,
+ ((CHARTNS,u'lines'), None): cnv_boolean,
+ ((CHARTNS,u'link-data-style-to-source'), None): cnv_boolean,
+ ((CHARTNS,u'logarithmic'), None): cnv_boolean,
+ ((CHARTNS,u'maximum'), None): cnv_string,
+ ((CHARTNS,u'mean-value'), None): cnv_boolean,
+ ((CHARTNS,u'minimum'), None): cnv_string,
+ ((CHARTNS,u'name'), None): cnv_string,
+ ((CHARTNS,u'origin'), None): cnv_string,
+ ((CHARTNS,u'overlap'), None): cnv_string,
+ ((CHARTNS,u'percentage'), None): cnv_boolean,
+ ((CHARTNS,u'pie-offset'), None): cnv_string,
+ ((CHARTNS,u'regression-type'), None): cnv_string,
+ ((CHARTNS,u'repeated'), None): cnv_nonNegativeInteger,
+ ((CHARTNS,u'row-mapping'), None): cnv_string,
+ ((CHARTNS,u'scale-text'), None): cnv_boolean,
+ ((CHARTNS,u'series-source'), None): cnv_string,
+ ((CHARTNS,u'solid-type'), None): cnv_string,
+ ((CHARTNS,u'spline-order'), None): cnv_string,
+ ((CHARTNS,u'spline-resolution'), None): cnv_string,
+ ((CHARTNS,u'stacked'), None): cnv_boolean,
+ ((CHARTNS,u'style-name'), None): cnv_StyleNameRef,
+ ((CHARTNS,u'symbol-height'), None): cnv_string,
+ ((CHARTNS,u'symbol-name'), None): cnv_string,
+ ((CHARTNS,u'symbol-type'), None): cnv_string,
+ ((CHARTNS,u'symbol-width'), None): cnv_string,
+ ((CHARTNS,u'text-overlap'), None): cnv_boolean,
+ ((CHARTNS,u'three-dimensional'), None): cnv_boolean,
+ ((CHARTNS,u'tick-marks-major-inner'), None): cnv_boolean,
+ ((CHARTNS,u'tick-marks-major-outer'), None): cnv_boolean,
+ ((CHARTNS,u'tick-marks-minor-inner'), None): cnv_boolean,
+ ((CHARTNS,u'tick-marks-minor-outer'), None): cnv_boolean,
+ ((CHARTNS,u'values-cell-range-address'), None): cnv_string,
+ ((CHARTNS,u'vertical'), None): cnv_boolean,
+ ((CHARTNS,u'visible'), None): cnv_boolean,
+ ((CONFIGNS,u'name'), None): cnv_formula,
+ ((CONFIGNS,u'type'), None): cnv_configtype,
+ ((DR3DNS,u'ambient-color'), None): cnv_string,
+ ((DR3DNS,u'back-scale'), None): cnv_string,
+ ((DR3DNS,u'backface-culling'), None): cnv_string,
+ ((DR3DNS,u'center'), None): cnv_string,
+ ((DR3DNS,u'close-back'), None): cnv_boolean,
+ ((DR3DNS,u'close-front'), None): cnv_boolean,
+ ((DR3DNS,u'depth'), None): cnv_length,
+ ((DR3DNS,u'diffuse-color'), None): cnv_string,
+ ((DR3DNS,u'direction'), None): cnv_string,
+ ((DR3DNS,u'distance'), None): cnv_length,
+ ((DR3DNS,u'edge-rounding'), None): cnv_string,
+ ((DR3DNS,u'edge-rounding-mode'), None): cnv_string,
+ ((DR3DNS,u'emissive-color'), None): cnv_string,
+ ((DR3DNS,u'enabled'), None): cnv_boolean,
+ ((DR3DNS,u'end-angle'), None): cnv_string,
+ ((DR3DNS,u'focal-length'), None): cnv_length,
+ ((DR3DNS,u'horizontal-segments'), None): cnv_string,
+ ((DR3DNS,u'lighting-mode'), None): cnv_boolean,
+ ((DR3DNS,u'max-edge'), None): cnv_string,
+ ((DR3DNS,u'min-edge'), None): cnv_string,
+ ((DR3DNS,u'normals-direction'), None): cnv_string,
+ ((DR3DNS,u'normals-kind'), None): cnv_string,
+ ((DR3DNS,u'projection'), None): cnv_string,
+ ((DR3DNS,u'shade-mode'), None): cnv_string,
+ ((DR3DNS,u'shadow'), None): cnv_string,
+ ((DR3DNS,u'shadow-slant'), None): cnv_nonNegativeInteger,
+ ((DR3DNS,u'shininess'), None): cnv_string,
+ ((DR3DNS,u'size'), None): cnv_string,
+ ((DR3DNS,u'specular'), None): cnv_boolean,
+ ((DR3DNS,u'specular-color'), None): cnv_string,
+ ((DR3DNS,u'texture-filter'), None): cnv_string,
+ ((DR3DNS,u'texture-generation-mode-x'), None): cnv_string,
+ ((DR3DNS,u'texture-generation-mode-y'), None): cnv_string,
+ ((DR3DNS,u'texture-kind'), None): cnv_string,
+ ((DR3DNS,u'texture-mode'), None): cnv_string,
+ ((DR3DNS,u'transform'), None): cnv_string,
+ ((DR3DNS,u'vertical-segments'), None): cnv_string,
+ ((DR3DNS,u'vpn'), None): cnv_string,
+ ((DR3DNS,u'vrp'), None): cnv_string,
+ ((DR3DNS,u'vup'), None): cnv_string,
+ ((DRAWNS,u'align'), None): cnv_string,
+ ((DRAWNS,u'angle'), None): cnv_integer,
+ ((DRAWNS,u'archive'), None): cnv_string,
+ ((DRAWNS,u'auto-grow-height'), None): cnv_boolean,
+ ((DRAWNS,u'auto-grow-width'), None): cnv_boolean,
+ ((DRAWNS,u'background-size'), None): cnv_string,
+ ((DRAWNS,u'blue'), None): cnv_string,
+ ((DRAWNS,u'border'), None): cnv_string,
+ ((DRAWNS,u'caption-angle'), None): cnv_string,
+ ((DRAWNS,u'caption-angle-type'), None): cnv_string,
+ ((DRAWNS,u'caption-escape'), None): cnv_string,
+ ((DRAWNS,u'caption-escape-direction'), None): cnv_string,
+ ((DRAWNS,u'caption-fit-line-length'), None): cnv_boolean,
+ ((DRAWNS,u'caption-gap'), None): cnv_string,
+ ((DRAWNS,u'caption-line-length'), None): cnv_length,
+ ((DRAWNS,u'caption-point-x'), None): cnv_string,
+ ((DRAWNS,u'caption-point-y'), None): cnv_string,
+ ((DRAWNS,u'caption-id'), None): cnv_IDREF,
+ ((DRAWNS,u'caption-type'), None): cnv_string,
+ ((DRAWNS,u'chain-next-name'), None): cnv_string,
+ ((DRAWNS,u'class-id'), None): cnv_string,
+ ((DRAWNS,u'class-names'), None): cnv_NCNames,
+ ((DRAWNS,u'code'), None): cnv_string,
+ ((DRAWNS,u'color'), None): cnv_string,
+ ((DRAWNS,u'color-inversion'), None): cnv_boolean,
+ ((DRAWNS,u'color-mode'), None): cnv_string,
+ ((DRAWNS,u'concave'), None): cnv_string,
+ ((DRAWNS,u'concentric-gradient-fill-allowed'), None): cnv_boolean,
+ ((DRAWNS,u'contrast'), None): cnv_string,
+ ((DRAWNS,u'control'), None): cnv_IDREF,
+ ((DRAWNS,u'copy-of'), None): cnv_string,
+ ((DRAWNS,u'corner-radius'), None): cnv_length,
+ ((DRAWNS,u'corners'), None): cnv_positiveInteger,
+ ((DRAWNS,u'cx'), None): cnv_string,
+ ((DRAWNS,u'cy'), None): cnv_string,
+ ((DRAWNS,u'data'), None): cnv_string,
+ ((DRAWNS,u'decimal-places'), None): cnv_string,
+ ((DRAWNS,u'display'), None): cnv_string,
+ ((DRAWNS,u'display-name'), None): cnv_string,
+ ((DRAWNS,u'distance'), None): cnv_lengthorpercent,
+ ((DRAWNS,u'dots1'), None): cnv_integer,
+ ((DRAWNS,u'dots1-length'), None): cnv_lengthorpercent,
+ ((DRAWNS,u'dots2'), None): cnv_integer,
+ ((DRAWNS,u'dots2-length'), None): cnv_lengthorpercent,
+ ((DRAWNS,u'end-angle'), None): cnv_double,
+ ((DRAWNS,u'end'), None): cnv_string,
+ ((DRAWNS,u'end-color'), None): cnv_string,
+ ((DRAWNS,u'end-glue-point'), None): cnv_nonNegativeInteger,
+ ((DRAWNS,u'end-guide'), None): cnv_length,
+ ((DRAWNS,u'end-intensity'), None): cnv_string,
+ ((DRAWNS,u'end-line-spacing-horizontal'), None): cnv_string,
+ ((DRAWNS,u'end-line-spacing-vertical'), None): cnv_string,
+ ((DRAWNS,u'end-shape'), None): cnv_IDREF,
+ ((DRAWNS,u'engine'), None): cnv_namespacedToken,
+ ((DRAWNS,u'enhanced-path'), None): cnv_string,
+ ((DRAWNS,u'escape-direction'), None): cnv_string,
+ ((DRAWNS,u'extrusion-allowed'), None): cnv_boolean,
+ ((DRAWNS,u'extrusion-brightness'), None): cnv_string,
+ ((DRAWNS,u'extrusion'), None): cnv_boolean,
+ ((DRAWNS,u'extrusion-color'), None): cnv_boolean,
+ ((DRAWNS,u'extrusion-depth'), None): cnv_double,
+ ((DRAWNS,u'extrusion-diffusion'), None): cnv_string,
+ ((DRAWNS,u'extrusion-first-light-direction'), None): cnv_string,
+ ((DRAWNS,u'extrusion-first-light-harsh'), None): cnv_boolean,
+ ((DRAWNS,u'extrusion-first-light-level'), None): cnv_string,
+ ((DRAWNS,u'extrusion-light-face'), None): cnv_boolean,
+ ((DRAWNS,u'extrusion-metal'), None): cnv_boolean,
+ ((DRAWNS,u'extrusion-number-of-line-segments'), None): cnv_integer,
+ ((DRAWNS,u'extrusion-origin'), None): cnv_double,
+ ((DRAWNS,u'extrusion-rotation-angle'), None): cnv_double,
+ ((DRAWNS,u'extrusion-rotation-center'), None): cnv_string,
+ ((DRAWNS,u'extrusion-second-light-direction'), None): cnv_string,
+ ((DRAWNS,u'extrusion-second-light-harsh'), None): cnv_boolean,
+ ((DRAWNS,u'extrusion-second-light-level'), None): cnv_string,
+ ((DRAWNS,u'extrusion-shininess'), None): cnv_string,
+ ((DRAWNS,u'extrusion-skew'), None): cnv_double,
+ ((DRAWNS,u'extrusion-specularity'), None): cnv_string,
+ ((DRAWNS,u'extrusion-viewpoint'), None): cnv_string,
+ ((DRAWNS,u'fill'), None): cnv_string,
+ ((DRAWNS,u'fill-color'), None): cnv_string,
+ ((DRAWNS,u'fill-gradient-name'), None): cnv_string,
+ ((DRAWNS,u'fill-hatch-name'), None): cnv_string,
+ ((DRAWNS,u'fill-hatch-solid'), None): cnv_boolean,
+ ((DRAWNS,u'fill-image-height'), None): cnv_lengthorpercent,
+ ((DRAWNS,u'fill-image-name'), None): cnv_DrawNameRef,
+ ((DRAWNS,u'fill-image-ref-point'), None): cnv_string,
+ ((DRAWNS,u'fill-image-ref-point-x'), None): cnv_string,
+ ((DRAWNS,u'fill-image-ref-point-y'), None): cnv_string,
+ ((DRAWNS,u'fill-image-width'), None): cnv_lengthorpercent,
+ ((DRAWNS,u'filter-name'), None): cnv_string,
+ ((DRAWNS,u'fit-to-contour'), None): cnv_boolean,
+ ((DRAWNS,u'fit-to-size'), None): cnv_string, # ODF 1.2 says boolean
+ ((DRAWNS,u'formula'), None): cnv_string,
+ ((DRAWNS,u'frame-display-border'), None): cnv_boolean,
+ ((DRAWNS,u'frame-display-scrollbar'), None): cnv_boolean,
+ ((DRAWNS,u'frame-margin-horizontal'), None): cnv_string,
+ ((DRAWNS,u'frame-margin-vertical'), None): cnv_string,
+ ((DRAWNS,u'frame-name'), None): cnv_string,
+ ((DRAWNS,u'gamma'), None): cnv_string,
+ ((DRAWNS,u'glue-point-leaving-directions'), None): cnv_string,
+ ((DRAWNS,u'glue-point-type'), None): cnv_string,
+ ((DRAWNS,u'glue-points'), None): cnv_string,
+ ((DRAWNS,u'gradient-step-count'), None): cnv_string,
+ ((DRAWNS,u'green'), None): cnv_string,
+ ((DRAWNS,u'guide-distance'), None): cnv_string,
+ ((DRAWNS,u'guide-overhang'), None): cnv_length,
+ ((DRAWNS,u'handle-mirror-horizontal'), None): cnv_boolean,
+ ((DRAWNS,u'handle-mirror-vertical'), None): cnv_boolean,
+ ((DRAWNS,u'handle-polar'), None): cnv_string,
+ ((DRAWNS,u'handle-position'), None): cnv_string,
+ ((DRAWNS,u'handle-radius-range-maximum'), None): cnv_string,
+ ((DRAWNS,u'handle-radius-range-minimum'), None): cnv_string,
+ ((DRAWNS,u'handle-range-x-maximum'), None): cnv_string,
+ ((DRAWNS,u'handle-range-x-minimum'), None): cnv_string,
+ ((DRAWNS,u'handle-range-y-maximum'), None): cnv_string,
+ ((DRAWNS,u'handle-range-y-minimum'), None): cnv_string,
+ ((DRAWNS,u'handle-switched'), None): cnv_boolean,
+# ((DRAWNS,u'id'), None): cnv_ID,
+# ((DRAWNS,u'id'), None): cnv_nonNegativeInteger, # ?? line 6581 in RNG
+ ((DRAWNS,u'id'), None): cnv_string,
+ ((DRAWNS,u'image-opacity'), None): cnv_string,
+ ((DRAWNS,u'kind'), None): cnv_string,
+ ((DRAWNS,u'layer'), None): cnv_string,
+ ((DRAWNS,u'line-distance'), None): cnv_string,
+ ((DRAWNS,u'line-skew'), None): cnv_string,
+ ((DRAWNS,u'luminance'), None): cnv_string,
+ ((DRAWNS,u'marker-end-center'), None): cnv_boolean,
+ ((DRAWNS,u'marker-end'), None): cnv_string,
+ ((DRAWNS,u'marker-end-width'), None): cnv_length,
+ ((DRAWNS,u'marker-start-center'), None): cnv_boolean,
+ ((DRAWNS,u'marker-start'), None): cnv_string,
+ ((DRAWNS,u'marker-start-width'), None): cnv_length,
+ ((DRAWNS,u'master-page-name'), None): cnv_StyleNameRef,
+ ((DRAWNS,u'may-script'), None): cnv_boolean,
+ ((DRAWNS,u'measure-align'), None): cnv_string,
+ ((DRAWNS,u'measure-vertical-align'), None): cnv_string,
+ ((DRAWNS,u'mime-type'), None): cnv_string,
+ ((DRAWNS,u'mirror-horizontal'), None): cnv_boolean,
+ ((DRAWNS,u'mirror-vertical'), None): cnv_boolean,
+ ((DRAWNS,u'modifiers'), None): cnv_string,
+ ((DRAWNS,u'name'), None): cnv_NCName,
+# ((DRAWNS,u'name'), None): cnv_string,
+ ((DRAWNS,u'nav-order'), None): cnv_IDREF,
+ ((DRAWNS,u'nohref'), None): cnv_string,
+ ((DRAWNS,u'notify-on-update-of-ranges'), None): cnv_string,
+ ((DRAWNS,u'object'), None): cnv_string,
+ ((DRAWNS,u'ole-draw-aspect'), None): cnv_string,
+ ((DRAWNS,u'opacity'), None): cnv_string,
+ ((DRAWNS,u'opacity-name'), None): cnv_string,
+ ((DRAWNS,u'page-number'), None): cnv_positiveInteger,
+ ((DRAWNS,u'parallel'), None): cnv_boolean,
+ ((DRAWNS,u'path-stretchpoint-x'), None): cnv_double,
+ ((DRAWNS,u'path-stretchpoint-y'), None): cnv_double,
+ ((DRAWNS,u'placing'), None): cnv_string,
+ ((DRAWNS,u'points'), None): cnv_points,
+ ((DRAWNS,u'protected'), None): cnv_boolean,
+ ((DRAWNS,u'recreate-on-edit'), None): cnv_boolean,
+ ((DRAWNS,u'red'), None): cnv_string,
+ ((DRAWNS,u'rotation'), None): cnv_integer,
+ ((DRAWNS,u'secondary-fill-color'), None): cnv_string,
+ ((DRAWNS,u'shadow'), None): cnv_string,
+ ((DRAWNS,u'shadow-color'), None): cnv_string,
+ ((DRAWNS,u'shadow-offset-x'), None): cnv_length,
+ ((DRAWNS,u'shadow-offset-y'), None): cnv_length,
+ ((DRAWNS,u'shadow-opacity'), None): cnv_string,
+ ((DRAWNS,u'shape-id'), None): cnv_IDREF,
+ ((DRAWNS,u'sharpness'), None): cnv_string,
+ ((DRAWNS,u'show-unit'), None): cnv_boolean,
+ ((DRAWNS,u'start-angle'), None): cnv_double,
+ ((DRAWNS,u'start'), None): cnv_string,
+ ((DRAWNS,u'start-color'), None): cnv_string,
+ ((DRAWNS,u'start-glue-point'), None): cnv_nonNegativeInteger,
+ ((DRAWNS,u'start-guide'), None): cnv_length,
+ ((DRAWNS,u'start-intensity'), None): cnv_string,
+ ((DRAWNS,u'start-line-spacing-horizontal'), None): cnv_string,
+ ((DRAWNS,u'start-line-spacing-vertical'), None): cnv_string,
+ ((DRAWNS,u'start-shape'), None): cnv_IDREF,
+ ((DRAWNS,u'stroke'), None): cnv_string,
+ ((DRAWNS,u'stroke-dash'), None): cnv_string,
+ ((DRAWNS,u'stroke-dash-names'), None): cnv_string,
+ ((DRAWNS,u'stroke-linejoin'), None): cnv_string,
+ ((DRAWNS,u'style'), None): cnv_string,
+ ((DRAWNS,u'style-name'), None): cnv_StyleNameRef,
+ ((DRAWNS,u'symbol-color'), None): cnv_string,
+ ((DRAWNS,u'text-areas'), None): cnv_string,
+ ((DRAWNS,u'text-path-allowed'), None): cnv_boolean,
+ ((DRAWNS,u'text-path'), None): cnv_boolean,
+ ((DRAWNS,u'text-path-mode'), None): cnv_string,
+ ((DRAWNS,u'text-path-same-letter-heights'), None): cnv_boolean,
+ ((DRAWNS,u'text-path-scale'), None): cnv_string,
+ ((DRAWNS,u'text-rotate-angle'), None): cnv_double,
+ ((DRAWNS,u'text-style-name'), None): cnv_StyleNameRef,
+ ((DRAWNS,u'textarea-horizontal-align'), None): cnv_string,
+ ((DRAWNS,u'textarea-vertical-align'), None): cnv_string,
+ ((DRAWNS,u'tile-repeat-offset'), None): cnv_string,
+ ((DRAWNS,u'transform'), None): cnv_string,
+ ((DRAWNS,u'type'), None): cnv_string,
+ ((DRAWNS,u'unit'), None): cnv_string,
+ ((DRAWNS,u'value'), None): cnv_string,
+ ((DRAWNS,u'visible-area-height'), None): cnv_string,
+ ((DRAWNS,u'visible-area-left'), None): cnv_string,
+ ((DRAWNS,u'visible-area-top'), None): cnv_string,
+ ((DRAWNS,u'visible-area-width'), None): cnv_string,
+ ((DRAWNS,u'wrap-influence-on-position'), None): cnv_string,
+ ((DRAWNS,u'z-index'), None): cnv_nonNegativeInteger,
+ ((FONS,u'background-color'), None): cnv_string,
+ ((FONS,u'border-bottom'), None): cnv_string,
+ ((FONS,u'border'), None): cnv_string,
+ ((FONS,u'border-left'), None): cnv_string,
+ ((FONS,u'border-right'), None): cnv_string,
+ ((FONS,u'border-top'), None): cnv_string,
+ ((FONS,u'break-after'), None): cnv_string,
+ ((FONS,u'break-before'), None): cnv_string,
+ ((FONS,u'clip'), None): cnv_string,
+ ((FONS,u'color'), None): cnv_string,
+ ((FONS,u'column-count'), None): cnv_positiveInteger,
+ ((FONS,u'column-gap'), None): cnv_length,
+ ((FONS,u'country'), None): cnv_token,
+ ((FONS,u'end-indent'), None): cnv_length,
+ ((FONS,u'font-family'), None): cnv_string,
+ ((FONS,u'font-size'), None): cnv_string,
+ ((FONS,u'font-style'), None): cnv_string,
+ ((FONS,u'font-variant'), None): cnv_string,
+ ((FONS,u'font-weight'), None): cnv_string,
+ ((FONS,u'height'), None): cnv_string,
+ ((FONS,u'hyphenate'), None): cnv_boolean,
+ ((FONS,u'hyphenation-keep'), None): cnv_string,
+ ((FONS,u'hyphenation-ladder-count'), None): cnv_string,
+ ((FONS,u'hyphenation-push-char-count'), None): cnv_string,
+ ((FONS,u'hyphenation-remain-char-count'), None): cnv_string,
+ ((FONS,u'keep-together'), None): cnv_string,
+ ((FONS,u'keep-with-next'), None): cnv_string,
+ ((FONS,u'language'), None): cnv_token,
+ ((FONS,u'letter-spacing'), None): cnv_string,
+ ((FONS,u'line-height'), None): cnv_string,
+ ((FONS,u'margin-bottom'), None): cnv_string,
+ ((FONS,u'margin'), None): cnv_string,
+ ((FONS,u'margin-left'), None): cnv_string,
+ ((FONS,u'margin-right'), None): cnv_string,
+ ((FONS,u'margin-top'), None): cnv_string,
+ ((FONS,u'max-height'), None): cnv_string,
+ ((FONS,u'max-width'), None): cnv_string,
+ ((FONS,u'min-height'), None): cnv_length,
+ ((FONS,u'min-width'), None): cnv_string,
+ ((FONS,u'orphans'), None): cnv_string,
+ ((FONS,u'padding-bottom'), None): cnv_string,
+ ((FONS,u'padding'), None): cnv_string,
+ ((FONS,u'padding-left'), None): cnv_string,
+ ((FONS,u'padding-right'), None): cnv_string,
+ ((FONS,u'padding-top'), None): cnv_string,
+ ((FONS,u'page-height'), None): cnv_length,
+ ((FONS,u'page-width'), None): cnv_length,
+ ((FONS,u'space-after'), None): cnv_length,
+ ((FONS,u'space-before'), None): cnv_length,
+ ((FONS,u'start-indent'), None): cnv_length,
+ ((FONS,u'text-align'), None): cnv_string,
+ ((FONS,u'text-align-last'), None): cnv_string,
+ ((FONS,u'text-indent'), None): cnv_string,
+ ((FONS,u'text-shadow'), None): cnv_string,
+ ((FONS,u'text-transform'), None): cnv_string,
+ ((FONS,u'widows'), None): cnv_string,
+ ((FONS,u'width'), None): cnv_string,
+ ((FONS,u'wrap-option'), None): cnv_string,
+ ((FORMNS,u'allow-deletes'), None): cnv_boolean,
+ ((FORMNS,u'allow-inserts'), None): cnv_boolean,
+ ((FORMNS,u'allow-updates'), None): cnv_boolean,
+ ((FORMNS,u'apply-design-mode'), None): cnv_boolean,
+ ((FORMNS,u'apply-filter'), None): cnv_boolean,
+ ((FORMNS,u'auto-complete'), None): cnv_boolean,
+ ((FORMNS,u'automatic-focus'), None): cnv_boolean,
+ ((FORMNS,u'bound-column'), None): cnv_string,
+ ((FORMNS,u'button-type'), None): cnv_string,
+ ((FORMNS,u'command'), None): cnv_string,
+ ((FORMNS,u'command-type'), None): cnv_string,
+ ((FORMNS,u'control-implementation'), None): cnv_namespacedToken,
+ ((FORMNS,u'convert-empty-to-null'), None): cnv_boolean,
+ ((FORMNS,u'current-selected'), None): cnv_boolean,
+ ((FORMNS,u'current-state'), None): cnv_string,
+# ((FORMNS,u'current-value'), None): cnv_date,
+# ((FORMNS,u'current-value'), None): cnv_double,
+ ((FORMNS,u'current-value'), None): cnv_string,
+# ((FORMNS,u'current-value'), None): cnv_time,
+ ((FORMNS,u'data-field'), None): cnv_string,
+ ((FORMNS,u'datasource'), None): cnv_string,
+ ((FORMNS,u'default-button'), None): cnv_boolean,
+ ((FORMNS,u'delay-for-repeat'), None): cnv_duration,
+ ((FORMNS,u'detail-fields'), None): cnv_string,
+ ((FORMNS,u'disabled'), None): cnv_boolean,
+ ((FORMNS,u'dropdown'), None): cnv_boolean,
+ ((FORMNS,u'echo-char'), None): cnv_string,
+ ((FORMNS,u'enctype'), None): cnv_string,
+ ((FORMNS,u'escape-processing'), None): cnv_boolean,
+ ((FORMNS,u'filter'), None): cnv_string,
+ ((FORMNS,u'focus-on-click'), None): cnv_boolean,
+ ((FORMNS,u'for'), None): cnv_string,
+ ((FORMNS,u'id'), None): cnv_ID,
+ ((FORMNS,u'ignore-result'), None): cnv_boolean,
+ ((FORMNS,u'image-align'), None): cnv_string,
+ ((FORMNS,u'image-data'), None): cnv_anyURI,
+ ((FORMNS,u'image-position'), None): cnv_string,
+ ((FORMNS,u'is-tristate'), None): cnv_boolean,
+ ((FORMNS,u'label'), None): cnv_string,
+ ((FORMNS,u'list-source'), None): cnv_string,
+ ((FORMNS,u'list-source-type'), None): cnv_string,
+ ((FORMNS,u'master-fields'), None): cnv_string,
+ ((FORMNS,u'max-length'), None): cnv_nonNegativeInteger,
+# ((FORMNS,u'max-value'), None): cnv_date,
+# ((FORMNS,u'max-value'), None): cnv_double,
+ ((FORMNS,u'max-value'), None): cnv_string,
+# ((FORMNS,u'max-value'), None): cnv_time,
+ ((FORMNS,u'method'), None): cnv_string,
+# ((FORMNS,u'min-value'), None): cnv_date,
+# ((FORMNS,u'min-value'), None): cnv_double,
+ ((FORMNS,u'min-value'), None): cnv_string,
+# ((FORMNS,u'min-value'), None): cnv_time,
+ ((FORMNS,u'multi-line'), None): cnv_boolean,
+ ((FORMNS,u'multiple'), None): cnv_boolean,
+ ((FORMNS,u'name'), None): cnv_string,
+ ((FORMNS,u'navigation-mode'), None): cnv_string,
+ ((FORMNS,u'order'), None): cnv_string,
+ ((FORMNS,u'orientation'), None): cnv_string,
+ ((FORMNS,u'page-step-size'), None): cnv_positiveInteger,
+ ((FORMNS,u'printable'), None): cnv_boolean,
+ ((FORMNS,u'property-name'), None): cnv_string,
+ ((FORMNS,u'readonly'), None): cnv_boolean,
+ ((FORMNS,u'selected'), None): cnv_boolean,
+ ((FORMNS,u'size'), None): cnv_nonNegativeInteger,
+ ((FORMNS,u'state'), None): cnv_string,
+ ((FORMNS,u'step-size'), None): cnv_positiveInteger,
+ ((FORMNS,u'tab-cycle'), None): cnv_string,
+ ((FORMNS,u'tab-index'), None): cnv_nonNegativeInteger,
+ ((FORMNS,u'tab-stop'), None): cnv_boolean,
+ ((FORMNS,u'text-style-name'), None): cnv_StyleNameRef,
+ ((FORMNS,u'title'), None): cnv_string,
+ ((FORMNS,u'toggle'), None): cnv_boolean,
+ ((FORMNS,u'validation'), None): cnv_boolean,
+# ((FORMNS,u'value'), None): cnv_date,
+# ((FORMNS,u'value'), None): cnv_double,
+ ((FORMNS,u'value'), None): cnv_string,
+# ((FORMNS,u'value'), None): cnv_time,
+ ((FORMNS,u'visual-effect'), None): cnv_string,
+ ((FORMNS,u'xforms-list-source'), None): cnv_string,
+ ((FORMNS,u'xforms-submission'), None): cnv_string,
+ ((MANIFESTNS,'algorithm-name'), None): cnv_string,
+ ((MANIFESTNS,'checksum'), None): cnv_string,
+ ((MANIFESTNS,'checksum-type'), None): cnv_string,
+ ((MANIFESTNS,'full-path'), None): cnv_string,
+ ((MANIFESTNS,'initialisation-vector'), None): cnv_string,
+ ((MANIFESTNS,'iteration-count'), None): cnv_nonNegativeInteger,
+ ((MANIFESTNS,'key-derivation-name'), None): cnv_string,
+ ((MANIFESTNS,'media-type'), None): cnv_string,
+ ((MANIFESTNS,'salt'), None): cnv_string,
+ ((MANIFESTNS,'size'), None): cnv_nonNegativeInteger,
+ ((METANS,u'cell-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'character-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'date'), None): cnv_dateTime,
+ ((METANS,u'delay'), None): cnv_duration,
+ ((METANS,u'draw-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'frame-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'image-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'name'), None): cnv_string,
+ ((METANS,u'non-whitespace-character-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'object-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'ole-object-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'page-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'paragraph-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'row-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'sentence-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'syllable-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'table-count'), None): cnv_nonNegativeInteger,
+ ((METANS,u'value-type'), None): cnv_metavaluetype,
+ ((METANS,u'word-count'), None): cnv_nonNegativeInteger,
+ ((NUMBERNS,u'automatic-order'), None): cnv_boolean,
+ ((NUMBERNS,u'calendar'), None): cnv_string,
+ ((NUMBERNS,u'country'), None): cnv_token,
+ ((NUMBERNS,u'decimal-places'), None): cnv_integer,
+ ((NUMBERNS,u'decimal-replacement'), None): cnv_string,
+ ((NUMBERNS,u'denominator-value'), None): cnv_integer,
+ ((NUMBERNS,u'display-factor'), None): cnv_double,
+ ((NUMBERNS,u'format-source'), None): cnv_string,
+ ((NUMBERNS,u'grouping'), None): cnv_boolean,
+ ((NUMBERNS,u'language'), None): cnv_token,
+ ((NUMBERNS,u'min-denominator-digits'), None): cnv_integer,
+ ((NUMBERNS,u'min-exponent-digits'), None): cnv_integer,
+ ((NUMBERNS,u'min-integer-digits'), None): cnv_integer,
+ ((NUMBERNS,u'min-numerator-digits'), None): cnv_integer,
+ ((NUMBERNS,u'position'), None): cnv_integer,
+ ((NUMBERNS,u'possessive-form'), None): cnv_boolean,
+ ((NUMBERNS,u'style'), None): cnv_string,
+ ((NUMBERNS,u'textual'), None): cnv_boolean,
+ ((NUMBERNS,u'title'), None): cnv_string,
+ ((NUMBERNS,u'transliteration-country'), None): cnv_token,
+ ((NUMBERNS,u'transliteration-format'), None): cnv_string,
+ ((NUMBERNS,u'transliteration-language'), None): cnv_token,
+ ((NUMBERNS,u'transliteration-style'), None): cnv_string,
+ ((NUMBERNS,u'truncate-on-overflow'), None): cnv_boolean,
+ ((OFFICENS,u'automatic-update'), None): cnv_boolean,
+ ((OFFICENS,u'boolean-value'), None): cnv_boolean,
+ ((OFFICENS,u'conversion-mode'), None): cnv_string,
+ ((OFFICENS,u'currency'), None): cnv_string,
+ ((OFFICENS,u'date-value'), None): cnv_dateTime,
+ ((OFFICENS,u'dde-application'), None): cnv_string,
+ ((OFFICENS,u'dde-item'), None): cnv_string,
+ ((OFFICENS,u'dde-topic'), None): cnv_string,
+ ((OFFICENS,u'display'), None): cnv_boolean,
+ ((OFFICENS,u'mimetype'), None): cnv_string,
+ ((OFFICENS,u'name'), None): cnv_string,
+ ((OFFICENS,u'process-content'), None): cnv_boolean,
+ ((OFFICENS,u'server-map'), None): cnv_boolean,
+ ((OFFICENS,u'string-value'), None): cnv_string,
+ ((OFFICENS,u'target-frame'), None): cnv_string,
+ ((OFFICENS,u'target-frame-name'), None): cnv_string,
+ ((OFFICENS,u'time-value'), None): cnv_duration,
+ ((OFFICENS,u'title'), None): cnv_string,
+ ((OFFICENS,u'value'), None): cnv_double,
+ ((OFFICENS,u'value-type'), None): cnv_string,
+ ((OFFICENS,u'version'), None): cnv_string,
+ ((PRESENTATIONNS,u'action'), None): cnv_string,
+ ((PRESENTATIONNS,u'animations'), None): cnv_string,
+ ((PRESENTATIONNS,u'background-objects-visible'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'background-visible'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'class'), None): cnv_string,
+ ((PRESENTATIONNS,u'class-names'), None): cnv_NCNames,
+ ((PRESENTATIONNS,u'delay'), None): cnv_duration,
+ ((PRESENTATIONNS,u'direction'), None): cnv_string,
+ ((PRESENTATIONNS,u'display-date-time'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'display-footer'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'display-header'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'display-page-number'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'duration'), None): cnv_string,
+ ((PRESENTATIONNS,u'effect'), None): cnv_string,
+ ((PRESENTATIONNS,u'endless'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'force-manual'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'full-screen'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'group-id'), None): cnv_string,
+ ((PRESENTATIONNS,u'master-element'), None): cnv_IDREF,
+ ((PRESENTATIONNS,u'mouse-as-pen'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'mouse-visible'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'name'), None): cnv_string,
+ ((PRESENTATIONNS,u'node-type'), None): cnv_string,
+ ((PRESENTATIONNS,u'object'), None): cnv_string,
+ ((PRESENTATIONNS,u'pages'), None): cnv_string,
+ ((PRESENTATIONNS,u'path-id'), None): cnv_string,
+ ((PRESENTATIONNS,u'pause'), None): cnv_duration,
+ ((PRESENTATIONNS,u'placeholder'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'play-full'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'presentation-page-layout-name'), None): cnv_StyleNameRef,
+ ((PRESENTATIONNS,u'preset-class'), None): cnv_string,
+ ((PRESENTATIONNS,u'preset-id'), None): cnv_string,
+ ((PRESENTATIONNS,u'preset-sub-type'), None): cnv_string,
+ ((PRESENTATIONNS,u'show'), None): cnv_string,
+ ((PRESENTATIONNS,u'show-end-of-presentation-slide'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'show-logo'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'source'), None): cnv_string,
+ ((PRESENTATIONNS,u'speed'), None): cnv_string,
+ ((PRESENTATIONNS,u'start-page'), None): cnv_string,
+ ((PRESENTATIONNS,u'start-scale'), None): cnv_string,
+ ((PRESENTATIONNS,u'start-with-navigator'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'stay-on-top'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'style-name'), None): cnv_StyleNameRef,
+ ((PRESENTATIONNS,u'transition-on-click'), None): cnv_string,
+ ((PRESENTATIONNS,u'transition-speed'), None): cnv_string,
+ ((PRESENTATIONNS,u'transition-style'), None): cnv_string,
+ ((PRESENTATIONNS,u'transition-type'), None): cnv_string,
+ ((PRESENTATIONNS,u'use-date-time-name'), None): cnv_string,
+ ((PRESENTATIONNS,u'use-footer-name'), None): cnv_string,
+ ((PRESENTATIONNS,u'use-header-name'), None): cnv_string,
+ ((PRESENTATIONNS,u'user-transformed'), None): cnv_boolean,
+ ((PRESENTATIONNS,u'verb'), None): cnv_nonNegativeInteger,
+ ((PRESENTATIONNS,u'visibility'), None): cnv_string,
+ ((SCRIPTNS,u'event-name'), None): cnv_formula,
+ ((SCRIPTNS,u'language'), None): cnv_formula,
+ ((SCRIPTNS,u'macro-name'), None): cnv_string,
+ ((SMILNS,u'accelerate'), None): cnv_double,
+ ((SMILNS,u'accumulate'), None): cnv_string,
+ ((SMILNS,u'additive'), None): cnv_string,
+ ((SMILNS,u'attributeName'), None): cnv_string,
+ ((SMILNS,u'autoReverse'), None): cnv_boolean,
+ ((SMILNS,u'begin'), None): cnv_string,
+ ((SMILNS,u'by'), None): cnv_string,
+ ((SMILNS,u'calcMode'), None): cnv_string,
+ ((SMILNS,u'decelerate'), None): cnv_double,
+ ((SMILNS,u'direction'), None): cnv_string,
+ ((SMILNS,u'dur'), None): cnv_string,
+ ((SMILNS,u'end'), None): cnv_string,
+ ((SMILNS,u'endsync'), None): cnv_string,
+ ((SMILNS,u'fadeColor'), None): cnv_string,
+ ((SMILNS,u'fill'), None): cnv_string,
+ ((SMILNS,u'fillDefault'), None): cnv_string,
+ ((SMILNS,u'from'), None): cnv_string,
+ ((SMILNS,u'keySplines'), None): cnv_string,
+ ((SMILNS,u'keyTimes'), None): cnv_string,
+ ((SMILNS,u'mode'), None): cnv_string,
+ ((SMILNS,u'repeatCount'), None): cnv_nonNegativeInteger,
+ ((SMILNS,u'repeatDur'), None): cnv_string,
+ ((SMILNS,u'restart'), None): cnv_string,
+ ((SMILNS,u'restartDefault'), None): cnv_string,
+ ((SMILNS,u'subtype'), None): cnv_string,
+ ((SMILNS,u'targetElement'), None): cnv_IDREF,
+ ((SMILNS,u'to'), None): cnv_string,
+ ((SMILNS,u'type'), None): cnv_string,
+ ((SMILNS,u'values'), None): cnv_string,
+ ((STYLENS,u'adjustment'), None): cnv_string,
+ ((STYLENS,u'apply-style-name'), None): cnv_StyleNameRef,
+ ((STYLENS,u'auto-text-indent'), None): cnv_boolean,
+ ((STYLENS,u'auto-update'), None): cnv_boolean,
+ ((STYLENS,u'background-transparency'), None): cnv_string,
+ ((STYLENS,u'base-cell-address'), None): cnv_string,
+ ((STYLENS,u'border-line-width-bottom'), None): cnv_string,
+ ((STYLENS,u'border-line-width'), None): cnv_string,
+ ((STYLENS,u'border-line-width-left'), None): cnv_string,
+ ((STYLENS,u'border-line-width-right'), None): cnv_string,
+ ((STYLENS,u'border-line-width-top'), None): cnv_string,
+ ((STYLENS,u'cell-protect'), None): cnv_string,
+ ((STYLENS,u'char'), None): cnv_string,
+ ((STYLENS,u'class'), None): cnv_string,
+ ((STYLENS,u'color'), None): cnv_string,
+ ((STYLENS,u'column-width'), None): cnv_string,
+ ((STYLENS,u'condition'), None): cnv_string,
+ ((STYLENS,u'country-asian'), None): cnv_string,
+ ((STYLENS,u'country-complex'), None): cnv_string,
+ ((STYLENS,u'data-style-name'), None): cnv_StyleNameRef,
+ ((STYLENS,u'decimal-places'), None): cnv_string,
+ ((STYLENS,u'default-outline-level'), None): cnv_positiveInteger,
+ ((STYLENS,u'diagonal-bl-tr'), None): cnv_string,
+ ((STYLENS,u'diagonal-bl-tr-widths'), None): cnv_string,
+ ((STYLENS,u'diagonal-tl-br'), None): cnv_string,
+ ((STYLENS,u'diagonal-tl-br-widths'), None): cnv_string,
+ ((STYLENS,u'direction'), None): cnv_string,
+ ((STYLENS,u'display'), None): cnv_boolean,
+ ((STYLENS,u'display-name'), None): cnv_string,
+ ((STYLENS,u'distance-after-sep'), None): cnv_length,
+ ((STYLENS,u'distance-before-sep'), None): cnv_length,
+ ((STYLENS,u'distance'), None): cnv_length,
+ ((STYLENS,u'dynamic-spacing'), None): cnv_boolean,
+ ((STYLENS,u'editable'), None): cnv_boolean,
+ ((STYLENS,u'family'), None): cnv_family,
+ ((STYLENS,u'filter-name'), None): cnv_string,
+ ((STYLENS,u'first-page-number'), None): cnv_string,
+ ((STYLENS,u'flow-with-text'), None): cnv_boolean,
+ ((STYLENS,u'font-adornments'), None): cnv_string,
+ ((STYLENS,u'font-charset'), None): cnv_string,
+ ((STYLENS,u'font-charset-asian'), None): cnv_string,
+ ((STYLENS,u'font-charset-complex'), None): cnv_string,
+ ((STYLENS,u'font-family-asian'), None): cnv_string,
+ ((STYLENS,u'font-family-complex'), None): cnv_string,
+ ((STYLENS,u'font-family-generic-asian'), None): cnv_string,
+ ((STYLENS,u'font-family-generic'), None): cnv_string,
+ ((STYLENS,u'font-family-generic-complex'), None): cnv_string,
+ ((STYLENS,u'font-independent-line-spacing'), None): cnv_boolean,
+ ((STYLENS,u'font-name-asian'), None): cnv_string,
+ ((STYLENS,u'font-name'), None): cnv_string,
+ ((STYLENS,u'font-name-complex'), None): cnv_string,
+ ((STYLENS,u'font-pitch-asian'), None): cnv_string,
+ ((STYLENS,u'font-pitch'), None): cnv_string,
+ ((STYLENS,u'font-pitch-complex'), None): cnv_string,
+ ((STYLENS,u'font-relief'), None): cnv_string,
+ ((STYLENS,u'font-size-asian'), None): cnv_string,
+ ((STYLENS,u'font-size-complex'), None): cnv_string,
+ ((STYLENS,u'font-size-rel-asian'), None): cnv_length,
+ ((STYLENS,u'font-size-rel'), None): cnv_length,
+ ((STYLENS,u'font-size-rel-complex'), None): cnv_length,
+ ((STYLENS,u'font-style-asian'), None): cnv_string,
+ ((STYLENS,u'font-style-complex'), None): cnv_string,
+ ((STYLENS,u'font-style-name-asian'), None): cnv_string,
+ ((STYLENS,u'font-style-name'), None): cnv_string,
+ ((STYLENS,u'font-style-name-complex'), None): cnv_string,
+ ((STYLENS,u'font-weight-asian'), None): cnv_string,
+ ((STYLENS,u'font-weight-complex'), None): cnv_string,
+ ((STYLENS,u'footnote-max-height'), None): cnv_length,
+ ((STYLENS,u'glyph-orientation-vertical'), None): cnv_string,
+ ((STYLENS,u'height'), None): cnv_string,
+ ((STYLENS,u'horizontal-pos'), None): cnv_string,
+ ((STYLENS,u'horizontal-rel'), None): cnv_string,
+ ((STYLENS,u'justify-single-word'), None): cnv_boolean,
+ ((STYLENS,u'language-asian'), None): cnv_string,
+ ((STYLENS,u'language-complex'), None): cnv_string,
+ ((STYLENS,u'layout-grid-base-height'), None): cnv_length,
+ ((STYLENS,u'layout-grid-color'), None): cnv_string,
+ ((STYLENS,u'layout-grid-display'), None): cnv_boolean,
+ ((STYLENS,u'layout-grid-lines'), None): cnv_string,
+ ((STYLENS,u'layout-grid-mode'), None): cnv_string,
+ ((STYLENS,u'layout-grid-print'), None): cnv_boolean,
+ ((STYLENS,u'layout-grid-ruby-below'), None): cnv_boolean,
+ ((STYLENS,u'layout-grid-ruby-height'), None): cnv_length,
+ ((STYLENS,u'leader-char'), None): cnv_string,
+ ((STYLENS,u'leader-color'), None): cnv_string,
+ ((STYLENS,u'leader-style'), None): cnv_string,
+ ((STYLENS,u'leader-text'), None): cnv_string,
+ ((STYLENS,u'leader-text-style'), None): cnv_StyleNameRef,
+ ((STYLENS,u'leader-type'), None): cnv_string,
+ ((STYLENS,u'leader-width'), None): cnv_string,
+ ((STYLENS,u'legend-expansion-aspect-ratio'), None): cnv_double,
+ ((STYLENS,u'legend-expansion'), None): cnv_string,
+ ((STYLENS,u'length'), None): cnv_positiveInteger,
+ ((STYLENS,u'letter-kerning'), None): cnv_boolean,
+ ((STYLENS,u'line-break'), None): cnv_string,
+ ((STYLENS,u'line-height-at-least'), None): cnv_string,
+ ((STYLENS,u'line-spacing'), None): cnv_length,
+ ((STYLENS,u'line-style'), None): cnv_string,
+ ((STYLENS,u'lines'), None): cnv_positiveInteger,
+ ((STYLENS,u'list-style-name'), None): cnv_StyleNameRef,
+ ((STYLENS,u'master-page-name'), None): cnv_StyleNameRef,
+ ((STYLENS,u'may-break-between-rows'), None): cnv_boolean,
+ ((STYLENS,u'min-row-height'), None): cnv_string,
+ ((STYLENS,u'mirror'), None): cnv_string,
+ ((STYLENS,u'name'), None): cnv_NCName,
+ ((STYLENS,u'name'), (STYLENS,u'font-face')): cnv_string,
+ ((STYLENS,u'next-style-name'), None): cnv_StyleNameRef,
+ ((STYLENS,u'num-format'), None): cnv_string,
+ ((STYLENS,u'num-letter-sync'), None): cnv_boolean,
+ ((STYLENS,u'num-prefix'), None): cnv_string,
+ ((STYLENS,u'num-suffix'), None): cnv_string,
+ ((STYLENS,u'number-wrapped-paragraphs'), None): cnv_string,
+ ((STYLENS,u'overflow-behavior'), None): cnv_string,
+ ((STYLENS,u'page-layout-name'), None): cnv_StyleNameRef,
+ ((STYLENS,u'page-number'), None): cnv_string,
+ ((STYLENS,u'page-usage'), None): cnv_string,
+ ((STYLENS,u'paper-tray-name'), None): cnv_string,
+ ((STYLENS,u'parent-style-name'), None): cnv_StyleNameRef,
+ ((STYLENS,u'position'), (STYLENS,u'tab-stop')): cnv_length,
+ ((STYLENS,u'position'), None): cnv_string,
+ ((STYLENS,u'print'), None): cnv_string,
+ ((STYLENS,u'print-content'), None): cnv_boolean,
+ ((STYLENS,u'print-orientation'), None): cnv_string,
+ ((STYLENS,u'print-page-order'), None): cnv_string,
+ ((STYLENS,u'protect'), (STYLENS,u'section-properties')): cnv_boolean,
+ ((STYLENS,u'protect'), (STYLENS,u'graphic-properties')): cnv_string,
+# ((STYLENS,u'protect'), None): cnv_boolean,
+ ((STYLENS,u'punctuation-wrap'), None): cnv_string,
+ ((STYLENS,u'register-true'), None): cnv_boolean,
+ ((STYLENS,u'register-truth-ref-style-name'), None): cnv_string,
+ ((STYLENS,u'rel-column-width'), None): cnv_string,
+ ((STYLENS,u'rel-height'), None): cnv_string,
+ ((STYLENS,u'rel-width'), None): cnv_string,
+ ((STYLENS,u'repeat'), None): cnv_string,
+ ((STYLENS,u'repeat-content'), None): cnv_boolean,
+ ((STYLENS,u'rotation-align'), None): cnv_string,
+ ((STYLENS,u'rotation-angle'), None): cnv_string,
+ ((STYLENS,u'row-height'), None): cnv_string,
+ ((STYLENS,u'ruby-align'), None): cnv_string,
+ ((STYLENS,u'ruby-position'), None): cnv_string,
+ ((STYLENS,u'run-through'), None): cnv_string,
+ ((STYLENS,u'scale-to'), None): cnv_string,
+ ((STYLENS,u'scale-to-pages'), None): cnv_string,
+ ((STYLENS,u'script-type'), None): cnv_string,
+ ((STYLENS,u'shadow'), None): cnv_string,
+ ((STYLENS,u'shrink-to-fit'), None): cnv_boolean,
+ ((STYLENS,u'snap-to-layout-grid'), None): cnv_boolean,
+ ((STYLENS,u'style'), None): cnv_string,
+ ((STYLENS,u'style-name'), None): cnv_StyleNameRef,
+ ((STYLENS,u'tab-stop-distance'), None): cnv_string,
+ ((STYLENS,u'table-centering'), None): cnv_string,
+ ((STYLENS,u'text-align-source'), None): cnv_string,
+ ((STYLENS,u'text-autospace'), None): cnv_string,
+ ((STYLENS,u'text-blinking'), None): cnv_boolean,
+ ((STYLENS,u'text-combine'), None): cnv_string,
+ ((STYLENS,u'text-combine-end-char'), None): cnv_string,
+ ((STYLENS,u'text-combine-start-char'), None): cnv_string,
+ ((STYLENS,u'text-emphasize'), None): cnv_string,
+ ((STYLENS,u'text-line-through-color'), None): cnv_string,
+ ((STYLENS,u'text-line-through-mode'), None): cnv_string,
+ ((STYLENS,u'text-line-through-style'), None): cnv_string,
+ ((STYLENS,u'text-line-through-text'), None): cnv_string,
+ ((STYLENS,u'text-line-through-text-style'), None): cnv_string,
+ ((STYLENS,u'text-line-through-type'), None): cnv_string,
+ ((STYLENS,u'text-line-through-width'), None): cnv_string,
+ ((STYLENS,u'text-outline'), None): cnv_boolean,
+ ((STYLENS,u'text-position'), None): cnv_string,
+ ((STYLENS,u'text-rotation-angle'), None): cnv_string,
+ ((STYLENS,u'text-rotation-scale'), None): cnv_string,
+ ((STYLENS,u'text-scale'), None): cnv_string,
+ ((STYLENS,u'text-underline-color'), None): cnv_string,
+ ((STYLENS,u'text-underline-mode'), None): cnv_string,
+ ((STYLENS,u'text-underline-style'), None): cnv_string,
+ ((STYLENS,u'text-underline-type'), None): cnv_string,
+ ((STYLENS,u'text-underline-width'), None): cnv_string,
+ ((STYLENS,u'type'), None): cnv_string,
+ ((STYLENS,u'use-optimal-column-width'), None): cnv_boolean,
+ ((STYLENS,u'use-optimal-row-height'), None): cnv_boolean,
+ ((STYLENS,u'use-window-font-color'), None): cnv_boolean,
+ ((STYLENS,u'vertical-align'), None): cnv_string,
+ ((STYLENS,u'vertical-pos'), None): cnv_string,
+ ((STYLENS,u'vertical-rel'), None): cnv_string,
+ ((STYLENS,u'volatile'), None): cnv_boolean,
+ ((STYLENS,u'width'), None): cnv_string,
+ ((STYLENS,u'wrap'), None): cnv_string,
+ ((STYLENS,u'wrap-contour'), None): cnv_boolean,
+ ((STYLENS,u'wrap-contour-mode'), None): cnv_string,
+ ((STYLENS,u'wrap-dynamic-threshold'), None): cnv_length,
+ ((STYLENS,u'writing-mode-automatic'), None): cnv_boolean,
+ ((STYLENS,u'writing-mode'), None): cnv_string,
+ ((SVGNS,u'accent-height'), None): cnv_integer,
+ ((SVGNS,u'alphabetic'), None): cnv_integer,
+ ((SVGNS,u'ascent'), None): cnv_integer,
+ ((SVGNS,u'bbox'), None): cnv_string,
+ ((SVGNS,u'cap-height'), None): cnv_integer,
+ ((SVGNS,u'cx'), None): cnv_string,
+ ((SVGNS,u'cy'), None): cnv_string,
+ ((SVGNS,u'd'), None): cnv_string,
+ ((SVGNS,u'descent'), None): cnv_integer,
+ ((SVGNS,u'fill-rule'), None): cnv_string,
+ ((SVGNS,u'font-family'), None): cnv_string,
+ ((SVGNS,u'font-size'), None): cnv_string,
+ ((SVGNS,u'font-stretch'), None): cnv_string,
+ ((SVGNS,u'font-style'), None): cnv_string,
+ ((SVGNS,u'font-variant'), None): cnv_string,
+ ((SVGNS,u'font-weight'), None): cnv_string,
+ ((SVGNS,u'fx'), None): cnv_string,
+ ((SVGNS,u'fy'), None): cnv_string,
+ ((SVGNS,u'gradientTransform'), None): cnv_string,
+ ((SVGNS,u'gradientUnits'), None): cnv_string,
+ ((SVGNS,u'hanging'), None): cnv_integer,
+ ((SVGNS,u'height'), None): cnv_length,
+ ((SVGNS,u'ideographic'), None): cnv_integer,
+ ((SVGNS,u'mathematical'), None): cnv_integer,
+ ((SVGNS,u'name'), None): cnv_string,
+ ((SVGNS,u'offset'), None): cnv_string,
+ ((SVGNS,u'origin'), None): cnv_string,
+ ((SVGNS,u'overline-position'), None): cnv_integer,
+ ((SVGNS,u'overline-thickness'), None): cnv_integer,
+ ((SVGNS,u'panose-1'), None): cnv_string,
+ ((SVGNS,u'path'), None): cnv_string,
+ ((SVGNS,u'r'), None): cnv_length,
+ ((SVGNS,u'rx'), None): cnv_length,
+ ((SVGNS,u'ry'), None): cnv_length,
+ ((SVGNS,u'slope'), None): cnv_integer,
+ ((SVGNS,u'spreadMethod'), None): cnv_string,
+ ((SVGNS,u'stemh'), None): cnv_integer,
+ ((SVGNS,u'stemv'), None): cnv_integer,
+ ((SVGNS,u'stop-color'), None): cnv_string,
+ ((SVGNS,u'stop-opacity'), None): cnv_double,
+ ((SVGNS,u'strikethrough-position'), None): cnv_integer,
+ ((SVGNS,u'strikethrough-thickness'), None): cnv_integer,
+ ((SVGNS,u'string'), None): cnv_string,
+ ((SVGNS,u'stroke-color'), None): cnv_string,
+ ((SVGNS,u'stroke-opacity'), None): cnv_string,
+ ((SVGNS,u'stroke-width'), None): cnv_length,
+ ((SVGNS,u'type'), None): cnv_string,
+ ((SVGNS,u'underline-position'), None): cnv_integer,
+ ((SVGNS,u'underline-thickness'), None): cnv_integer,
+ ((SVGNS,u'unicode-range'), None): cnv_string,
+ ((SVGNS,u'units-per-em'), None): cnv_integer,
+ ((SVGNS,u'v-alphabetic'), None): cnv_integer,
+ ((SVGNS,u'v-hanging'), None): cnv_integer,
+ ((SVGNS,u'v-ideographic'), None): cnv_integer,
+ ((SVGNS,u'v-mathematical'), None): cnv_integer,
+ ((SVGNS,u'viewBox'), None): cnv_viewbox,
+ ((SVGNS,u'width'), None): cnv_length,
+ ((SVGNS,u'widths'), None): cnv_string,
+ ((SVGNS,u'x'), None): cnv_length,
+ ((SVGNS,u'x-height'), None): cnv_integer,
+ ((SVGNS,u'x1'), None): cnv_lengthorpercent,
+ ((SVGNS,u'x2'), None): cnv_lengthorpercent,
+ ((SVGNS,u'y'), None): cnv_length,
+ ((SVGNS,u'y1'), None): cnv_lengthorpercent,
+ ((SVGNS,u'y2'), None): cnv_lengthorpercent,
+ ((TABLENS,u'acceptance-state'), None): cnv_string,
+ ((TABLENS,u'add-empty-lines'), None): cnv_boolean,
+ ((TABLENS,u'algorithm'), None): cnv_formula,
+ ((TABLENS,u'align'), None): cnv_string,
+ ((TABLENS,u'allow-empty-cell'), None): cnv_boolean,
+ ((TABLENS,u'application-data'), None): cnv_string,
+ ((TABLENS,u'automatic-find-labels'), None): cnv_boolean,
+ ((TABLENS,u'base-cell-address'), None): cnv_string,
+ ((TABLENS,u'bind-styles-to-content'), None): cnv_boolean,
+ ((TABLENS,u'border-color'), None): cnv_string,
+ ((TABLENS,u'border-model'), None): cnv_string,
+ ((TABLENS,u'buttons'), None): cnv_string,
+ ((TABLENS,u'buttons'), None): cnv_string,
+ ((TABLENS,u'case-sensitive'), None): cnv_boolean,
+ ((TABLENS,u'case-sensitive'), None): cnv_string,
+ ((TABLENS,u'cell-address'), None): cnv_string,
+ ((TABLENS,u'cell-range-address'), None): cnv_string,
+ ((TABLENS,u'cell-range-address'), None): cnv_string,
+ ((TABLENS,u'cell-range'), None): cnv_string,
+ ((TABLENS,u'column'), None): cnv_integer,
+ ((TABLENS,u'comment'), None): cnv_string,
+ ((TABLENS,u'condition'), None): cnv_formula,
+ ((TABLENS,u'condition-source'), None): cnv_string,
+ ((TABLENS,u'condition-source-range-address'), None): cnv_string,
+ ((TABLENS,u'contains-error'), None): cnv_boolean,
+ ((TABLENS,u'contains-header'), None): cnv_boolean,
+ ((TABLENS,u'content-validation-name'), None): cnv_string,
+ ((TABLENS,u'copy-back'), None): cnv_boolean,
+ ((TABLENS,u'copy-formulas'), None): cnv_boolean,
+ ((TABLENS,u'copy-styles'), None): cnv_boolean,
+ ((TABLENS,u'count'), None): cnv_positiveInteger,
+ ((TABLENS,u'country'), None): cnv_token,
+ ((TABLENS,u'data-cell-range-address'), None): cnv_string,
+ ((TABLENS,u'data-field'), None): cnv_string,
+ ((TABLENS,u'data-type'), None): cnv_string,
+ ((TABLENS,u'database-name'), None): cnv_string,
+ ((TABLENS,u'database-table-name'), None): cnv_string,
+ ((TABLENS,u'date-end'), None): cnv_string,
+ ((TABLENS,u'date-start'), None): cnv_string,
+ ((TABLENS,u'date-value'), None): cnv_date,
+ ((TABLENS,u'default-cell-style-name'), None): cnv_StyleNameRef,
+ ((TABLENS,u'direction'), None): cnv_string,
+ ((TABLENS,u'display-border'), None): cnv_boolean,
+ ((TABLENS,u'display'), None): cnv_boolean,
+ ((TABLENS,u'display-duplicates'), None): cnv_boolean,
+ ((TABLENS,u'display-filter-buttons'), None): cnv_boolean,
+ ((TABLENS,u'display-list'), None): cnv_string,
+ ((TABLENS,u'display-member-mode'), None): cnv_string,
+ ((TABLENS,u'drill-down-on-double-click'), None): cnv_boolean,
+ ((TABLENS,u'enabled'), None): cnv_boolean,
+ ((TABLENS,u'end-cell-address'), None): cnv_string,
+ ((TABLENS,u'end'), None): cnv_string,
+ ((TABLENS,u'end-column'), None): cnv_integer,
+ ((TABLENS,u'end-position'), None): cnv_integer,
+ ((TABLENS,u'end-row'), None): cnv_integer,
+ ((TABLENS,u'end-table'), None): cnv_integer,
+ ((TABLENS,u'end-x'), None): cnv_length,
+ ((TABLENS,u'end-y'), None): cnv_length,
+ ((TABLENS,u'execute'), None): cnv_boolean,
+ ((TABLENS,u'expression'), None): cnv_formula,
+ ((TABLENS,u'field-name'), None): cnv_string,
+ ((TABLENS,u'field-number'), None): cnv_nonNegativeInteger,
+ ((TABLENS,u'field-number'), None): cnv_string,
+ ((TABLENS,u'filter-name'), None): cnv_string,
+ ((TABLENS,u'filter-options'), None): cnv_string,
+ ((TABLENS,u'formula'), None): cnv_formula,
+ ((TABLENS,u'function'), None): cnv_string,
+ ((TABLENS,u'function'), None): cnv_string,
+ ((TABLENS,u'grand-total'), None): cnv_string,
+ ((TABLENS,u'group-by-field-number'), None): cnv_nonNegativeInteger,
+ ((TABLENS,u'grouped-by'), None): cnv_string,
+ ((TABLENS,u'has-persistent-data'), None): cnv_boolean,
+ ((TABLENS,u'id'), None): cnv_string,
+ ((TABLENS,u'identify-categories'), None): cnv_boolean,
+ ((TABLENS,u'ignore-empty-rows'), None): cnv_boolean,
+ ((TABLENS,u'index'), None): cnv_nonNegativeInteger,
+ ((TABLENS,u'is-active'), None): cnv_boolean,
+ ((TABLENS,u'is-data-layout-field'), None): cnv_string,
+ ((TABLENS,u'is-selection'), None): cnv_boolean,
+ ((TABLENS,u'is-sub-table'), None): cnv_boolean,
+ ((TABLENS,u'label-cell-range-address'), None): cnv_string,
+ ((TABLENS,u'language'), None): cnv_token,
+ ((TABLENS,u'language'), None): cnv_token,
+ ((TABLENS,u'last-column-spanned'), None): cnv_positiveInteger,
+ ((TABLENS,u'last-row-spanned'), None): cnv_positiveInteger,
+ ((TABLENS,u'layout-mode'), None): cnv_string,
+ ((TABLENS,u'link-to-source-data'), None): cnv_boolean,
+ ((TABLENS,u'marked-invalid'), None): cnv_boolean,
+ ((TABLENS,u'matrix-covered'), None): cnv_boolean,
+ ((TABLENS,u'maximum-difference'), None): cnv_double,
+ ((TABLENS,u'member-count'), None): cnv_nonNegativeInteger,
+ ((TABLENS,u'member-name'), None): cnv_string,
+ ((TABLENS,u'member-type'), None): cnv_string,
+ ((TABLENS,u'message-type'), None): cnv_string,
+ ((TABLENS,u'mode'), None): cnv_string,
+ ((TABLENS,u'multi-deletion-spanned'), None): cnv_integer,
+ ((TABLENS,u'name'), None): cnv_string,
+ ((TABLENS,u'name'), None): cnv_string,
+ ((TABLENS,u'null-year'), None): cnv_positiveInteger,
+ ((TABLENS,u'number-columns-repeated'), None): cnv_positiveInteger,
+ ((TABLENS,u'number-columns-spanned'), None): cnv_positiveInteger,
+ ((TABLENS,u'number-matrix-columns-spanned'), None): cnv_positiveInteger,
+ ((TABLENS,u'number-matrix-rows-spanned'), None): cnv_positiveInteger,
+ ((TABLENS,u'number-rows-repeated'), None): cnv_positiveInteger,
+ ((TABLENS,u'number-rows-spanned'), None): cnv_positiveInteger,
+ ((TABLENS,u'object-name'), None): cnv_string,
+ ((TABLENS,u'on-update-keep-size'), None): cnv_boolean,
+ ((TABLENS,u'on-update-keep-styles'), None): cnv_boolean,
+ ((TABLENS,u'operator'), None): cnv_string,
+ ((TABLENS,u'operator'), None): cnv_string,
+ ((TABLENS,u'order'), None): cnv_string,
+ ((TABLENS,u'orientation'), None): cnv_string,
+ ((TABLENS,u'orientation'), None): cnv_string,
+ ((TABLENS,u'page-breaks-on-group-change'), None): cnv_boolean,
+ ((TABLENS,u'parse-sql-statement'), None): cnv_boolean,
+ ((TABLENS,u'password'), None): cnv_string,
+ ((TABLENS,u'position'), None): cnv_integer,
+ ((TABLENS,u'precision-as-shown'), None): cnv_boolean,
+ ((TABLENS,u'print'), None): cnv_boolean,
+ ((TABLENS,u'print-ranges'), None): cnv_string,
+ ((TABLENS,u'protect'), None): cnv_boolean,
+ ((TABLENS,u'protected'), None): cnv_boolean,
+ ((TABLENS,u'protection-key'), None): cnv_string,
+ ((TABLENS,u'query-name'), None): cnv_string,
+ ((TABLENS,u'range-usable-as'), None): cnv_string,
+ ((TABLENS,u'refresh-delay'), None): cnv_boolean,
+ ((TABLENS,u'refresh-delay'), None): cnv_duration,
+ ((TABLENS,u'rejecting-change-id'), None): cnv_string,
+ ((TABLENS,u'row'), None): cnv_integer,
+ ((TABLENS,u'scenario-ranges'), None): cnv_string,
+ ((TABLENS,u'search-criteria-must-apply-to-whole-cell'), None): cnv_boolean,
+ ((TABLENS,u'selected-page'), None): cnv_string,
+ ((TABLENS,u'show-details'), None): cnv_boolean,
+ ((TABLENS,u'show-empty'), None): cnv_boolean,
+ ((TABLENS,u'show-empty'), None): cnv_string,
+ ((TABLENS,u'show-filter-button'), None): cnv_boolean,
+ ((TABLENS,u'sort-mode'), None): cnv_string,
+ ((TABLENS,u'source-cell-range-addresses'), None): cnv_string,
+ ((TABLENS,u'source-cell-range-addresses'), None): cnv_string,
+ ((TABLENS,u'source-field-name'), None): cnv_string,
+ ((TABLENS,u'source-field-name'), None): cnv_string,
+ ((TABLENS,u'source-name'), None): cnv_string,
+ ((TABLENS,u'sql-statement'), None): cnv_string,
+ ((TABLENS,u'start'), None): cnv_string,
+ ((TABLENS,u'start-column'), None): cnv_integer,
+ ((TABLENS,u'start-position'), None): cnv_integer,
+ ((TABLENS,u'start-row'), None): cnv_integer,
+ ((TABLENS,u'start-table'), None): cnv_integer,
+ ((TABLENS,u'status'), None): cnv_string,
+ ((TABLENS,u'step'), None): cnv_double,
+ ((TABLENS,u'steps'), None): cnv_positiveInteger,
+ ((TABLENS,u'structure-protected'), None): cnv_boolean,
+ ((TABLENS,u'style-name'), None): cnv_StyleNameRef,
+ ((TABLENS,u'table-background'), None): cnv_boolean,
+ ((TABLENS,u'table'), None): cnv_integer,
+ ((TABLENS,u'table-name'), None): cnv_string,
+ ((TABLENS,u'target-cell-address'), None): cnv_string,
+ ((TABLENS,u'target-cell-address'), None): cnv_string,
+ ((TABLENS,u'target-range-address'), None): cnv_string,
+ ((TABLENS,u'target-range-address'), None): cnv_string,
+ ((TABLENS,u'title'), None): cnv_string,
+ ((TABLENS,u'track-changes'), None): cnv_boolean,
+ ((TABLENS,u'type'), None): cnv_string,
+ ((TABLENS,u'use-labels'), None): cnv_string,
+ ((TABLENS,u'use-regular-expressions'), None): cnv_boolean,
+ ((TABLENS,u'used-hierarchy'), None): cnv_integer,
+ ((TABLENS,u'user-name'), None): cnv_string,
+ ((TABLENS,u'value'), None): cnv_string,
+ ((TABLENS,u'value'), None): cnv_string,
+ ((TABLENS,u'value-type'), None): cnv_string,
+ ((TABLENS,u'visibility'), None): cnv_string,
+ ((TEXTNS,u'active'), None): cnv_boolean,
+ ((TEXTNS,u'address'), None): cnv_string,
+ ((TEXTNS,u'alphabetical-separators'), None): cnv_boolean,
+ ((TEXTNS,u'anchor-page-number'), None): cnv_positiveInteger,
+ ((TEXTNS,u'anchor-type'), None): cnv_string,
+ ((TEXTNS,u'animation'), None): cnv_string,
+ ((TEXTNS,u'animation-delay'), None): cnv_string,
+ ((TEXTNS,u'animation-direction'), None): cnv_string,
+ ((TEXTNS,u'animation-repeat'), None): cnv_string,
+ ((TEXTNS,u'animation-start-inside'), None): cnv_boolean,
+ ((TEXTNS,u'animation-steps'), None): cnv_length,
+ ((TEXTNS,u'animation-stop-inside'), None): cnv_boolean,
+ ((TEXTNS,u'annote'), None): cnv_string,
+ ((TEXTNS,u'author'), None): cnv_string,
+ ((TEXTNS,u'bibliography-data-field'), None): cnv_string,
+ ((TEXTNS,u'bibliography-type'), None): cnv_string,
+ ((TEXTNS,u'booktitle'), None): cnv_string,
+ ((TEXTNS,u'bullet-char'), None): cnv_string,
+ ((TEXTNS,u'bullet-relative-size'), None): cnv_string,
+ ((TEXTNS,u'c'), None): cnv_nonNegativeInteger,
+ ((TEXTNS,u'capitalize-entries'), None): cnv_boolean,
+ ((TEXTNS,u'caption-sequence-format'), None): cnv_string,
+ ((TEXTNS,u'caption-sequence-name'), None): cnv_string,
+ ((TEXTNS,u'change-id'), None): cnv_IDREF,
+ ((TEXTNS,u'chapter'), None): cnv_string,
+ ((TEXTNS,u'citation-body-style-name'), None): cnv_StyleNameRef,
+ ((TEXTNS,u'citation-style-name'), None): cnv_StyleNameRef,
+ ((TEXTNS,u'class-names'), None): cnv_NCNames,
+ ((TEXTNS,u'column-name'), None): cnv_string,
+ ((TEXTNS,u'combine-entries'), None): cnv_boolean,
+ ((TEXTNS,u'combine-entries-with-dash'), None): cnv_boolean,
+ ((TEXTNS,u'combine-entries-with-pp'), None): cnv_boolean,
+ ((TEXTNS,u'comma-separated'), None): cnv_boolean,
+ ((TEXTNS,u'cond-style-name'), None): cnv_StyleNameRef,
+ ((TEXTNS,u'condition'), None): cnv_formula,
+ ((TEXTNS,u'connection-name'), None): cnv_string,
+ ((TEXTNS,u'consecutive-numbering'), None): cnv_boolean,
+ ((TEXTNS,u'continue-numbering'), None): cnv_boolean,
+ ((TEXTNS,u'copy-outline-levels'), None): cnv_boolean,
+ ((TEXTNS,u'count-empty-lines'), None): cnv_boolean,
+ ((TEXTNS,u'count-in-text-boxes'), None): cnv_boolean,
+ ((TEXTNS,u'current-value'), None): cnv_boolean,
+ ((TEXTNS,u'custom1'), None): cnv_string,
+ ((TEXTNS,u'custom2'), None): cnv_string,
+ ((TEXTNS,u'custom3'), None): cnv_string,
+ ((TEXTNS,u'custom4'), None): cnv_string,
+ ((TEXTNS,u'custom5'), None): cnv_string,
+ ((TEXTNS,u'database-name'), None): cnv_string,
+ ((TEXTNS,u'date-adjust'), None): cnv_duration,
+ ((TEXTNS,u'date-value'), None): cnv_date,
+# ((TEXTNS,u'date-value'), None): cnv_dateTime,
+ ((TEXTNS,u'default-style-name'), None): cnv_StyleNameRef,
+ ((TEXTNS,u'description'), None): cnv_string,
+ ((TEXTNS,u'display'), None): cnv_string,
+ ((TEXTNS,u'display-levels'), None): cnv_positiveInteger,
+ ((TEXTNS,u'display-outline-level'), None): cnv_nonNegativeInteger,
+ ((TEXTNS,u'dont-balance-text-columns'), None): cnv_boolean,
+ ((TEXTNS,u'duration'), None): cnv_duration,
+ ((TEXTNS,u'edition'), None): cnv_string,
+ ((TEXTNS,u'editor'), None): cnv_string,
+ ((TEXTNS,u'filter-name'), None): cnv_string,
+ ((TEXTNS,u'first-row-end-column'), None): cnv_string,
+ ((TEXTNS,u'first-row-start-column'), None): cnv_string,
+ ((TEXTNS,u'fixed'), None): cnv_boolean,
+ ((TEXTNS,u'footnotes-position'), None): cnv_string,
+ ((TEXTNS,u'formula'), None): cnv_formula,
+ ((TEXTNS,u'global'), None): cnv_boolean,
+ ((TEXTNS,u'howpublished'), None): cnv_string,
+ ((TEXTNS,u'id'), None): cnv_ID,
+# ((TEXTNS,u'id'), None): cnv_string,
+ ((TEXTNS,u'identifier'), None): cnv_string,
+ ((TEXTNS,u'ignore-case'), None): cnv_boolean,
+ ((TEXTNS,u'increment'), None): cnv_nonNegativeInteger,
+ ((TEXTNS,u'index-name'), None): cnv_string,
+ ((TEXTNS,u'index-scope'), None): cnv_string,
+ ((TEXTNS,u'institution'), None): cnv_string,
+ ((TEXTNS,u'is-hidden'), None): cnv_boolean,
+ ((TEXTNS,u'is-list-header'), None): cnv_boolean,
+ ((TEXTNS,u'isbn'), None): cnv_string,
+ ((TEXTNS,u'issn'), None): cnv_string,
+ ((TEXTNS,u'issn'), None): cnv_string,
+ ((TEXTNS,u'journal'), None): cnv_string,
+ ((TEXTNS,u'key'), None): cnv_string,
+ ((TEXTNS,u'key1'), None): cnv_string,
+ ((TEXTNS,u'key1-phonetic'), None): cnv_string,
+ ((TEXTNS,u'key2'), None): cnv_string,
+ ((TEXTNS,u'key2-phonetic'), None): cnv_string,
+ ((TEXTNS,u'kind'), None): cnv_string,
+ ((TEXTNS,u'label'), None): cnv_string,
+ ((TEXTNS,u'last-row-end-column'), None): cnv_string,
+ ((TEXTNS,u'last-row-start-column'), None): cnv_string,
+ ((TEXTNS,u'level'), None): cnv_positiveInteger,
+ ((TEXTNS,u'line-break'), None): cnv_boolean,
+ ((TEXTNS,u'line-number'), None): cnv_string,
+ ((TEXTNS,u'main-entry'), None): cnv_boolean,
+ ((TEXTNS,u'main-entry-style-name'), None): cnv_StyleNameRef,
+ ((TEXTNS,u'master-page-name'), None): cnv_StyleNameRef,
+ ((TEXTNS,u'min-label-distance'), None): cnv_string,
+ ((TEXTNS,u'min-label-width'), None): cnv_string,
+ ((TEXTNS,u'month'), None): cnv_string,
+ ((TEXTNS,u'name'), None): cnv_string,
+ ((TEXTNS,u'note-class'), None): cnv_textnoteclass,
+ ((TEXTNS,u'note'), None): cnv_string,
+ ((TEXTNS,u'number'), None): cnv_string,
+ ((TEXTNS,u'number-lines'), None): cnv_boolean,
+ ((TEXTNS,u'number-position'), None): cnv_string,
+ ((TEXTNS,u'numbered-entries'), None): cnv_boolean,
+ ((TEXTNS,u'offset'), None): cnv_string,
+ ((TEXTNS,u'organizations'), None): cnv_string,
+ ((TEXTNS,u'outline-level'), None): cnv_string,
+ ((TEXTNS,u'page-adjust'), None): cnv_integer,
+ ((TEXTNS,u'pages'), None): cnv_string,
+ ((TEXTNS,u'paragraph-style-name'), None): cnv_StyleNameRef,
+ ((TEXTNS,u'placeholder-type'), None): cnv_string,
+ ((TEXTNS,u'prefix'), None): cnv_string,
+ ((TEXTNS,u'protected'), None): cnv_boolean,
+ ((TEXTNS,u'protection-key'), None): cnv_string,
+ ((TEXTNS,u'publisher'), None): cnv_string,
+ ((TEXTNS,u'ref-name'), None): cnv_string,
+ ((TEXTNS,u'reference-format'), None): cnv_string,
+ ((TEXTNS,u'relative-tab-stop-position'), None): cnv_boolean,
+ ((TEXTNS,u'report-type'), None): cnv_string,
+ ((TEXTNS,u'restart-numbering'), None): cnv_boolean,
+ ((TEXTNS,u'restart-on-page'), None): cnv_boolean,
+ ((TEXTNS,u'row-number'), None): cnv_nonNegativeInteger,
+ ((TEXTNS,u'school'), None): cnv_string,
+ ((TEXTNS,u'section-name'), None): cnv_string,
+ ((TEXTNS,u'select-page'), None): cnv_string,
+ ((TEXTNS,u'separation-character'), None): cnv_string,
+ ((TEXTNS,u'series'), None): cnv_string,
+ ((TEXTNS,u'sort-algorithm'), None): cnv_string,
+ ((TEXTNS,u'sort-ascending'), None): cnv_boolean,
+ ((TEXTNS,u'sort-by-position'), None): cnv_boolean,
+ ((TEXTNS,u'space-before'), None): cnv_string,
+ ((TEXTNS,u'start-numbering-at'), None): cnv_string,
+ ((TEXTNS,u'start-value'), None): cnv_nonNegativeInteger,
+ ((TEXTNS,u'start-value'), None): cnv_positiveInteger,
+ ((TEXTNS,u'string-value'), None): cnv_string,
+ ((TEXTNS,u'string-value-if-false'), None): cnv_string,
+ ((TEXTNS,u'string-value-if-true'), None): cnv_string,
+ ((TEXTNS,u'string-value-phonetic'), None): cnv_string,
+ ((TEXTNS,u'style-name'), None): cnv_StyleNameRef,
+ ((TEXTNS,u'suffix'), None): cnv_string,
+ ((TEXTNS,u'tab-ref'), None): cnv_nonNegativeInteger,
+ ((TEXTNS,u'table-name'), None): cnv_string,
+ ((TEXTNS,u'table-type'), None): cnv_string,
+ ((TEXTNS,u'time-adjust'), None): cnv_duration,
+ ((TEXTNS,u'time-value'), None): cnv_dateTime,
+ ((TEXTNS,u'time-value'), None): cnv_time,
+ ((TEXTNS,u'title'), None): cnv_string,
+ ((TEXTNS,u'track-changes'), None): cnv_boolean,
+ ((TEXTNS,u'url'), None): cnv_string,
+ ((TEXTNS,u'use-caption'), None): cnv_boolean,
+ ((TEXTNS,u'use-chart-objects'), None): cnv_boolean,
+ ((TEXTNS,u'use-draw-objects'), None): cnv_boolean,
+ ((TEXTNS,u'use-floating-frames'), None): cnv_boolean,
+ ((TEXTNS,u'use-graphics'), None): cnv_boolean,
+ ((TEXTNS,u'use-index-marks'), None): cnv_boolean,
+ ((TEXTNS,u'use-index-source-styles'), None): cnv_boolean,
+ ((TEXTNS,u'use-keys-as-entries'), None): cnv_boolean,
+ ((TEXTNS,u'use-math-objects'), None): cnv_boolean,
+ ((TEXTNS,u'use-objects'), None): cnv_boolean,
+ ((TEXTNS,u'use-other-objects'), None): cnv_boolean,
+ ((TEXTNS,u'use-outline-level'), None): cnv_boolean,
+ ((TEXTNS,u'use-soft-page-breaks'), None): cnv_boolean,
+ ((TEXTNS,u'use-spreadsheet-objects'), None): cnv_boolean,
+ ((TEXTNS,u'use-tables'), None): cnv_boolean,
+ ((TEXTNS,u'value'), None): cnv_nonNegativeInteger,
+ ((TEXTNS,u'visited-style-name'), None): cnv_StyleNameRef,
+ ((TEXTNS,u'volume'), None): cnv_string,
+ ((TEXTNS,u'year'), None): cnv_string,
+ ((XFORMSNS,u'bind'), None): cnv_string,
+ ((XLINKNS,u'actuate'), None): cnv_string,
+ ((XLINKNS,u'href'), None): cnv_anyURI,
+ ((XLINKNS,u'show'), None): cnv_xlinkshow,
+ ((XLINKNS,u'title'), None): cnv_string,
+ ((XLINKNS,u'type'), None): cnv_string,
+}
+
+class AttrConverters:
+ def convert(self, attribute, value, element):
+ """ Based on the element, figures out how to check/convert the attribute value
+ All values are converted to string
+ """
+ conversion = attrconverters.get((attribute, element.qname), None)
+ if conversion is not None:
+ return conversion(attribute, value, element)
+ else:
+ conversion = attrconverters.get((attribute, None), None)
+ if conversion is not None:
+ return conversion(attribute, value, element)
+ return unicode(value)
+
diff --git a/util/odf/draw.py b/util/odf/draw.py
new file mode 100644
index 0000000..7692e5a
--- /dev/null
+++ b/util/odf/draw.py
@@ -0,0 +1,182 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2006-2007 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+
+from namespaces import DRAWNS, STYLENS, PRESENTATIONNS
+from element import Element
+
+def StyleRefElement(stylename=None, classnames=None, **args):
+ qattrs = {}
+ if stylename is not None:
+ f = stylename.getAttrNS(STYLENS, 'family')
+ if f == 'graphic':
+ qattrs[(DRAWNS,u'style-name')]= stylename
+ elif f == 'presentation':
+ qattrs[(PRESENTATIONNS,u'style-name')]= stylename
+ else:
+ raise ValueError, "Style's family must be either 'graphic' or 'presentation'"
+ if classnames is not None:
+ f = classnames[0].getAttrNS(STYLENS, 'family')
+ if f == 'graphic':
+ qattrs[(DRAWNS,u'class-names')]= classnames
+ elif f == 'presentation':
+ qattrs[(PRESENTATIONNS,u'class-names')]= classnames
+ else:
+ raise ValueError, "Style's family must be either 'graphic' or 'presentation'"
+ return Element(qattributes=qattrs, **args)
+
+def DrawElement(name=None, **args):
+ e = Element(name=name, **args)
+ if not args.has_key('displayname'):
+ e.setAttrNS(DRAWNS,'display-name', name)
+ return e
+
+# Autogenerated
+def A(**args):
+ return Element(qname = (DRAWNS,'a'), **args)
+
+def Applet(**args):
+ return Element(qname = (DRAWNS,'applet'), **args)
+
+def AreaCircle(**args):
+ return Element(qname = (DRAWNS,'area-circle'), **args)
+
+def AreaPolygon(**args):
+ return Element(qname = (DRAWNS,'area-polygon'), **args)
+
+def AreaRectangle(**args):
+ return Element(qname = (DRAWNS,'area-rectangle'), **args)
+
+def Caption(**args):
+ return StyleRefElement(qname = (DRAWNS,'caption'), **args)
+
+def Circle(**args):
+ return StyleRefElement(qname = (DRAWNS,'circle'), **args)
+
+def Connector(**args):
+ return StyleRefElement(qname = (DRAWNS,'connector'), **args)
+
+def ContourPath(**args):
+ return Element(qname = (DRAWNS,'contour-path'), **args)
+
+def ContourPolygon(**args):
+ return Element(qname = (DRAWNS,'contour-polygon'), **args)
+
+def Control(**args):
+ return StyleRefElement(qname = (DRAWNS,'control'), **args)
+
+def CustomShape(**args):
+ return StyleRefElement(qname = (DRAWNS,'custom-shape'), **args)
+
+def Ellipse(**args):
+ return StyleRefElement(qname = (DRAWNS,'ellipse'), **args)
+
+def EnhancedGeometry(**args):
+ return Element(qname = (DRAWNS,'enhanced-geometry'), **args)
+
+def Equation(**args):
+ return Element(qname = (DRAWNS,'equation'), **args)
+
+def FillImage(**args):
+ return DrawElement(qname = (DRAWNS,'fill-image'), **args)
+
+def FloatingFrame(**args):
+ return Element(qname = (DRAWNS,'floating-frame'), **args)
+
+def Frame(**args):
+ return StyleRefElement(qname = (DRAWNS,'frame'), **args)
+
+def G(**args):
+ return StyleRefElement(qname = (DRAWNS,'g'), **args)
+
+def GluePoint(**args):
+ return Element(qname = (DRAWNS,'glue-point'), **args)
+
+def Gradient(**args):
+ return DrawElement(qname = (DRAWNS,'gradient'), **args)
+
+def Handle(**args):
+ return Element(qname = (DRAWNS,'handle'), **args)
+
+def Hatch(**args):
+ return DrawElement(qname = (DRAWNS,'hatch'), **args)
+
+def Image(**args):
+ return Element(qname = (DRAWNS,'image'), **args)
+
+def ImageMap(**args):
+ return Element(qname = (DRAWNS,'image-map'), **args)
+
+def Layer(**args):
+ return Element(qname = (DRAWNS,'layer'), **args)
+
+def LayerSet(**args):
+ return Element(qname = (DRAWNS,'layer-set'), **args)
+
+def Line(**args):
+ return StyleRefElement(qname = (DRAWNS,'line'), **args)
+
+def Marker(**args):
+ return DrawElement(qname = (DRAWNS,'marker'), **args)
+
+def Measure(**args):
+ return StyleRefElement(qname = (DRAWNS,'measure'), **args)
+
+def Object(**args):
+ return Element(qname = (DRAWNS,'object'), **args)
+
+def ObjectOle(**args):
+ return Element(qname = (DRAWNS,'object-ole'), **args)
+
+def Opacity(**args):
+ return DrawElement(qname = (DRAWNS,'opacity'), **args)
+
+def Page(**args):
+ return Element(qname = (DRAWNS,'page'), **args)
+
+def PageThumbnail(**args):
+ return StyleRefElement(qname = (DRAWNS,'page-thumbnail'), **args)
+
+def Param(**args):
+ return Element(qname = (DRAWNS,'param'), **args)
+
+def Path(**args):
+ return StyleRefElement(qname = (DRAWNS,'path'), **args)
+
+def Plugin(**args):
+ return Element(qname = (DRAWNS,'plugin'), **args)
+
+def Polygon(**args):
+ return StyleRefElement(qname = (DRAWNS,'polygon'), **args)
+
+def Polyline(**args):
+ return StyleRefElement(qname = (DRAWNS,'polyline'), **args)
+
+def Rect(**args):
+ return StyleRefElement(qname = (DRAWNS,'rect'), **args)
+
+def RegularPolygon(**args):
+ return StyleRefElement(qname = (DRAWNS,'regular-polygon'), **args)
+
+def StrokeDash(**args):
+ return DrawElement(qname = (DRAWNS,'stroke-dash'), **args)
+
+def TextBox(**args):
+ return Element(qname = (DRAWNS,'text-box'), **args)
+
diff --git a/util/odf/element.py b/util/odf/element.py
new file mode 100644
index 0000000..aad6980
--- /dev/null
+++ b/util/odf/element.py
@@ -0,0 +1,513 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2010 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+
+# Note: This script has copied a lot of text from xml.dom.minidom.
+# Whatever license applies to that file also applies to this file.
+#
+import xml.dom
+from xml.dom.minicompat import *
+from namespaces import nsdict
+import grammar
+from attrconverters import AttrConverters
+
+# The following code is pasted form xml.sax.saxutils
+# Tt makes it possible to run the code without the xml sax package installed
+# To make it possible to have <rubbish> in your text elements, it is necessary to escape the texts
+def _escape(data, entities={}):
+ """ Escape &, <, and > in a string of data.
+
+ You can escape other strings of data by passing a dictionary as
+ the optional entities parameter. The keys and values must all be
+ strings; each key will be replaced with its corresponding value.
+ """
+ data = data.replace("&", "&amp;")
+ data = data.replace("<", "&lt;")
+ data = data.replace(">", "&gt;")
+ for chars, entity in entities.items():
+ data = data.replace(chars, entity)
+ return data
+
+def _quoteattr(data, entities={}):
+ """ Escape and quote an attribute value.
+
+ Escape &, <, and > in a string of data, then quote it for use as
+ an attribute value. The \" character will be escaped as well, if
+ necessary.
+
+ You can escape other strings of data by passing a dictionary as
+ the optional entities parameter. The keys and values must all be
+ strings; each key will be replaced with its corresponding value.
+ """
+ entities['\n']='&#10;'
+ entities['\r']='&#12;'
+ data = _escape(data, entities)
+ if '"' in data:
+ if "'" in data:
+ data = '"%s"' % data.replace('"', "&quot;")
+ else:
+ data = "'%s'" % data
+ else:
+ data = '"%s"' % data
+ return data
+
+def _nssplit(qualifiedName):
+ """ Split a qualified name into namespace part and local part. """
+ fields = qualifiedName.split(':', 1)
+ if len(fields) == 2:
+ return fields
+ else:
+ return (None, fields[0])
+
+def _nsassign(namespace):
+ return nsdict.setdefault(namespace,"ns" + str(len(nsdict)))
+
+# Exceptions
+class IllegalChild(StandardError):
+ """ Complains if you add an element to a parent where it is not allowed """
+class IllegalText(StandardError):
+ """ Complains if you add text or cdata to an element where it is not allowed """
+
+class Node(xml.dom.Node):
+ """ super class for more specific nodes """
+ parentNode = None
+ nextSibling = None
+ previousSibling = None
+
+ def hasChildNodes(self):
+ """ Tells whether this element has any children; text nodes,
+ subelements, whatever.
+ """
+ if self.childNodes:
+ return True
+ else:
+ return False
+
+ def _get_childNodes(self):
+ return self.childNodes
+
+ def _get_firstChild(self):
+ if self.childNodes:
+ return self.childNodes[0]
+
+ def _get_lastChild(self):
+ if self.childNodes:
+ return self.childNodes[-1]
+
+ def insertBefore(self, newChild, refChild):
+ """ Inserts the node newChild before the existing child node refChild.
+ If refChild is null, insert newChild at the end of the list of children.
+ """
+ if newChild.nodeType not in self._child_node_types:
+ raise IllegalChild, "%s cannot be child of %s" % (newChild.tagName, self.tagName)
+ if newChild.parentNode is not None:
+ newChild.parentNode.removeChild(newChild)
+ if refChild is None:
+ self.appendChild(newChild)
+ else:
+ try:
+ index = self.childNodes.index(refChild)
+ except ValueError:
+ raise xml.dom.NotFoundErr()
+ self.childNodes.insert(index, newChild)
+ newChild.nextSibling = refChild
+ refChild.previousSibling = newChild
+ if index:
+ node = self.childNodes[index-1]
+ node.nextSibling = newChild
+ newChild.previousSibling = node
+ else:
+ newChild.previousSibling = None
+ newChild.parentNode = self
+ return newChild
+
+ def appendChild(self, newChild):
+ """ Adds the node newChild to the end of the list of children of this node.
+ If the newChild is already in the tree, it is first removed.
+ """
+ if newChild.nodeType == self.DOCUMENT_FRAGMENT_NODE:
+ for c in tuple(newChild.childNodes):
+ self.appendChild(c)
+ ### The DOM does not clearly specify what to return in this case
+ return newChild
+ if newChild.nodeType not in self._child_node_types:
+ raise IllegalChild, "<%s> is not allowed in %s" % ( newChild.tagName, self.tagName)
+ if newChild.parentNode is not None:
+ newChild.parentNode.removeChild(newChild)
+ _append_child(self, newChild)
+ newChild.nextSibling = None
+ return newChild
+
+ def removeChild(self, oldChild):
+ """ Removes the child node indicated by oldChild from the list of children, and returns it.
+ """
+ #FIXME: update ownerDocument.element_dict or find other solution
+ try:
+ self.childNodes.remove(oldChild)
+ except ValueError:
+ raise xml.dom.NotFoundErr()
+ if oldChild.nextSibling is not None:
+ oldChild.nextSibling.previousSibling = oldChild.previousSibling
+ if oldChild.previousSibling is not None:
+ oldChild.previousSibling.nextSibling = oldChild.nextSibling
+ oldChild.nextSibling = oldChild.previousSibling = None
+ if self.ownerDocument:
+ self.ownerDocument.clear_caches()
+ oldChild.parentNode = None
+ return oldChild
+
+ def __str__(self):
+ val = []
+ for c in self.childNodes:
+ val.append(str(c))
+ return ''.join(val)
+
+ def __unicode__(self):
+ val = []
+ for c in self.childNodes:
+ val.append(unicode(c))
+ return u''.join(val)
+
+defproperty(Node, "firstChild", doc="First child node, or None.")
+defproperty(Node, "lastChild", doc="Last child node, or None.")
+
+def _append_child(self, node):
+ # fast path with less checks; usable by DOM builders if careful
+ childNodes = self.childNodes
+ if childNodes:
+ last = childNodes[-1]
+ node.__dict__["previousSibling"] = last
+ last.__dict__["nextSibling"] = node
+ childNodes.append(node)
+ node.__dict__["parentNode"] = self
+
+class Childless:
+ """ Mixin that makes childless-ness easy to implement and avoids
+ the complexity of the Node methods that deal with children.
+ """
+
+ attributes = None
+ childNodes = EmptyNodeList()
+ firstChild = None
+ lastChild = None
+
+ def _get_firstChild(self):
+ return None
+
+ def _get_lastChild(self):
+ return None
+
+ def appendChild(self, node):
+ """ Raises an error """
+ raise xml.dom.HierarchyRequestErr(
+ self.tagName + " nodes cannot have children")
+
+ def hasChildNodes(self):
+ return False
+
+ def insertBefore(self, newChild, refChild):
+ """ Raises an error """
+ raise xml.dom.HierarchyRequestErr(
+ self.tagName + " nodes do not have children")
+
+ def removeChild(self, oldChild):
+ """ Raises an error """
+ raise xml.dom.NotFoundErr(
+ self.tagName + " nodes do not have children")
+
+ def replaceChild(self, newChild, oldChild):
+ """ Raises an error """
+ raise xml.dom.HierarchyRequestErr(
+ self.tagName + " nodes do not have children")
+
+class Text(Childless, Node):
+ nodeType = Node.TEXT_NODE
+ tagName = "Text"
+
+ def __init__(self, data):
+ self.data = data
+
+ def __str__(self):
+ return self.data.encode()
+
+ def __unicode__(self):
+ return self.data
+
+ def toXml(self,level,f):
+ """ Write XML in UTF-8 """
+ if self.data:
+ f.write(_escape(unicode(self.data).encode('utf-8')))
+
+class CDATASection(Childless, Text):
+ nodeType = Node.CDATA_SECTION_NODE
+
+ def toXml(self,level,f):
+ """ Generate XML output of the node. If the text contains "]]>", then
+ escape it by going out of CDATA mode (]]>), then write the string
+ and then go into CDATA mode again. (<![CDATA[)
+ """
+ if self.data:
+ f.write('<![CDATA[%s]]>' % self.data.replace(']]>',']]>]]><![CDATA['))
+
+class Element(Node):
+ """ Creates a arbitrary element and is intended to be subclassed not used on its own.
+ This element is the base of every element it defines a class which resembles
+ a xml-element. The main advantage of this kind of implementation is that you don't
+ have to create a toXML method for every different object. Every element
+ consists of an attribute, optional subelements, optional text and optional cdata.
+ """
+
+ nodeType = Node.ELEMENT_NODE
+ namespaces = {} # Due to shallow copy this is a static variable
+
+ _child_node_types = (Node.ELEMENT_NODE,
+ Node.PROCESSING_INSTRUCTION_NODE,
+ Node.COMMENT_NODE,
+ Node.TEXT_NODE,
+ Node.CDATA_SECTION_NODE,
+ Node.ENTITY_REFERENCE_NODE)
+
+ def __init__(self, attributes=None, text=None, cdata=None, qname=None, qattributes=None, check_grammar=True, **args):
+ if qname is not None:
+ self.qname = qname
+ assert(hasattr(self, 'qname'))
+ self.ownerDocument = None
+ self.childNodes=[]
+ self.allowed_children = grammar.allowed_children.get(self.qname)
+ prefix = self.get_nsprefix(self.qname[0])
+ self.tagName = prefix + ":" + self.qname[1]
+ if text is not None:
+ self.addText(text)
+ if cdata is not None:
+ self.addCDATA(cdata)
+
+ allowed_attrs = self.allowed_attributes()
+ if allowed_attrs is not None:
+ allowed_args = [ a[1].lower().replace('-','') for a in allowed_attrs]
+ self.attributes={}
+ # Load the attributes from the 'attributes' argument
+ if attributes:
+ for attr, value in attributes.items():
+ self.setAttribute(attr, value)
+ # Load the qualified attributes
+ if qattributes:
+ for attr, value in qattributes.items():
+ self.setAttrNS(attr[0], attr[1], value)
+ if allowed_attrs is not None:
+ # Load the attributes from the 'args' argument
+ for arg in args.keys():
+ self.setAttribute(arg, args[arg])
+ else:
+ for arg in args.keys(): # If any attribute is allowed
+ self.attributes[arg]=args[arg]
+ if not check_grammar:
+ return
+ # Test that all mandatory attributes have been added.
+ required = grammar.required_attributes.get(self.qname)
+ if required:
+ for r in required:
+ if self.getAttrNS(r[0],r[1]) is None:
+ raise AttributeError, "Required attribute missing: %s in <%s>" % (r[1].lower().replace('-',''), self.tagName)
+
+ def get_knownns(self, prefix):
+ """ Odfpy maintains a list of known namespaces. In some cases a prefix is used, and
+ we need to know which namespace it resolves to.
+ """
+ global nsdict
+ for ns,p in nsdict.items():
+ if p == prefix: return ns
+ return None
+
+ def get_nsprefix(self, namespace):
+ """ Odfpy maintains a list of known namespaces. In some cases we have a namespace URL,
+ and needs to look up or assign the prefix for it.
+ """
+ if namespace is None: namespace = ""
+ prefix = _nsassign(namespace)
+ if not self.namespaces.has_key(namespace):
+ self.namespaces[namespace] = prefix
+ return prefix
+
+ def allowed_attributes(self):
+ return grammar.allowed_attributes.get(self.qname)
+
+ def _setOwnerDoc(self, element):
+ element.ownerDocument = self.ownerDocument
+ for child in element.childNodes:
+ self._setOwnerDoc(child)
+
+ def addElement(self, element, check_grammar=True):
+ """ adds an element to an Element
+
+ Element.addElement(Element)
+ """
+ if check_grammar and self.allowed_children is not None:
+ if element.qname not in self.allowed_children:
+ raise IllegalChild, "<%s> is not allowed in <%s>" % ( element.tagName, self.tagName)
+ self.appendChild(element)
+ self._setOwnerDoc(element)
+ if self.ownerDocument:
+ self.ownerDocument.rebuild_caches(element)
+
+ def addText(self, text, check_grammar=True):
+ """ Adds text to an element
+ Setting check_grammar=False turns off grammar checking
+ """
+ if check_grammar and self.qname not in grammar.allows_text:
+ raise IllegalText, "The <%s> element does not allow text" % self.tagName
+ else:
+ if text != '':
+ self.appendChild(Text(text))
+
+ def addCDATA(self, cdata, check_grammar=True):
+ """ Adds CDATA to an element
+ Setting check_grammar=False turns off grammar checking
+ """
+ if check_grammar and self.qname not in grammar.allows_text:
+ raise IllegalText, "The <%s> element does not allow text" % self.tagName
+ else:
+ self.appendChild(CDATASection(cdata))
+
+ def removeAttribute(self, attr, check_grammar=True):
+ """ Removes an attribute by name. """
+ allowed_attrs = self.allowed_attributes()
+ if allowed_attrs is None:
+ if type(attr) == type(()):
+ prefix, localname = attr
+ self.removeAttrNS(prefix, localname)
+ else:
+ raise AttributeError, "Unable to add simple attribute - use (namespace, localpart)"
+ else:
+ # Construct a list of allowed arguments
+ allowed_args = [ a[1].lower().replace('-','') for a in allowed_attrs]
+ if check_grammar and attr not in allowed_args:
+ raise AttributeError, "Attribute %s is not allowed in <%s>" % ( attr, self.tagName)
+ i = allowed_args.index(attr)
+ self.removeAttrNS(allowed_attrs[i][0], allowed_attrs[i][1])
+
+ def setAttribute(self, attr, value, check_grammar=True):
+ """ Add an attribute to the element
+ This is sort of a convenience method. All attributes in ODF have
+ namespaces. The library knows what attributes are legal and then allows
+ the user to provide the attribute as a keyword argument and the
+ library will add the correct namespace.
+ Must overwrite, If attribute already exists.
+ """
+ allowed_attrs = self.allowed_attributes()
+ if allowed_attrs is None:
+ if type(attr) == type(()):
+ prefix, localname = attr
+ self.setAttrNS(prefix, localname, value)
+ else:
+ raise AttributeError, "Unable to add simple attribute - use (namespace, localpart)"
+ else:
+ # Construct a list of allowed arguments
+ allowed_args = [ a[1].lower().replace('-','') for a in allowed_attrs]
+ if check_grammar and attr not in allowed_args:
+ raise AttributeError, "Attribute %s is not allowed in <%s>" % ( attr, self.tagName)
+ i = allowed_args.index(attr)
+ self.setAttrNS(allowed_attrs[i][0], allowed_attrs[i][1], value)
+
+ def setAttrNS(self, namespace, localpart, value):
+ """ Add an attribute to the element
+ In case you need to add an attribute the library doesn't know about
+ then you must provide the full qualified name
+ It will not check that the attribute is legal according to the schema.
+ Must overwrite, If attribute already exists.
+ """
+ allowed_attrs = self.allowed_attributes()
+ prefix = self.get_nsprefix(namespace)
+# if allowed_attrs and (namespace, localpart) not in allowed_attrs:
+# raise AttributeError, "Attribute %s:%s is not allowed in element <%s>" % ( prefix, localpart, self.tagName)
+ c = AttrConverters()
+ self.attributes[(namespace, localpart)] = c.convert((namespace, localpart), value, self)
+
+ def getAttrNS(self, namespace, localpart):
+ prefix = self.get_nsprefix(namespace)
+ return self.attributes.get((namespace, localpart))
+
+ def removeAttrNS(self, namespace, localpart):
+ del self.attributes[(namespace, localpart)]
+
+ def getAttribute(self, attr):
+ """ Get an attribute value. The method knows which namespace the attribute is in
+ """
+ allowed_attrs = self.allowed_attributes()
+ if allowed_attrs is None:
+ if type(attr) == type(()):
+ prefix, localname = attr
+ return self.getAttrNS(prefix, localname)
+ else:
+ raise AttributeError, "Unable to get simple attribute - use (namespace, localpart)"
+ else:
+ # Construct a list of allowed arguments
+ allowed_args = [ a[1].lower().replace('-','') for a in allowed_attrs]
+ i = allowed_args.index(attr)
+ return self.getAttrNS(allowed_attrs[i][0], allowed_attrs[i][1])
+
+ def write_open_tag(self, level, f):
+ f.write('<'+self.tagName)
+ if level == 0:
+ for namespace, prefix in self.namespaces.items():
+ f.write(' xmlns:' + prefix + '="'+ _escape(str(namespace))+'"')
+ for qname in self.attributes.keys():
+ prefix = self.get_nsprefix(qname[0])
+ f.write(' '+_escape(str(prefix+':'+qname[1]))+'='+_quoteattr(unicode(self.attributes[qname]).encode('utf-8')))
+ f.write('>')
+
+ def write_close_tag(self, level, f):
+ f.write('</'+self.tagName+'>')
+
+ def toXml(self, level, f):
+ """ Generate XML stream out of the tree structure """
+ f.write('<'+self.tagName)
+ if level == 0:
+ for namespace, prefix in self.namespaces.items():
+ f.write(' xmlns:' + prefix + '="'+ _escape(str(namespace))+'"')
+ for qname in self.attributes.keys():
+ prefix = self.get_nsprefix(qname[0])
+ f.write(' '+_escape(str(prefix+':'+qname[1]))+'='+_quoteattr(unicode(self.attributes[qname]).encode('utf-8')))
+ if self.childNodes:
+ f.write('>')
+ for element in self.childNodes:
+ element.toXml(level+1,f)
+ f.write('</'+self.tagName+'>')
+ else:
+ f.write('/>')
+
+ def _getElementsByObj(self, obj, accumulator):
+ if self.qname == obj.qname:
+ accumulator.append(self)
+ for e in self.childNodes:
+ if e.nodeType == Node.ELEMENT_NODE:
+ accumulator = e._getElementsByObj(obj, accumulator)
+ return accumulator
+
+ def getElementsByType(self, element):
+ """ Gets elements based on the type, which is function from text.py, draw.py etc. """
+ obj = element(check_grammar=False)
+ return self._getElementsByObj(obj,[])
+
+ def isInstanceOf(self, element):
+ """ This is a check to see if the object is an instance of a type """
+ obj = element(check_grammar=False)
+ return self.qname == obj.qname
+
+
diff --git a/util/odf/grammar.py b/util/odf/grammar.py
new file mode 100644
index 0000000..d5d8d59
--- /dev/null
+++ b/util/odf/grammar.py
@@ -0,0 +1,8426 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2006-2010 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+
+__doc__=""" In principle the OpenDocument schema converted to python structures.
+Currently it contains the legal child elements of a given element.
+To be used for validation check in the API
+"""
+
+from namespaces import *
+
+# The following code is generated from the RelaxNG schema with this notice:
+
+# OASIS OpenDocument v1.1
+# OASIS Standard, 1 Feb 2007
+# Relax-NG Schema
+
+# $Id$
+
+# © 2002-2007 OASIS Open
+# © 1999-2007 Sun Microsystems, Inc.
+
+# This document and translations of it may be copied and furnished
+# to others, and derivative works that comment on or otherwise explain
+# it or assist in its implementation may be prepared, copied,
+# published and distributed, in whole or in part, without restriction
+# of any kind, provided that the above copyright notice and this
+# paragraph are included on all such copies and derivative works.
+# However, this document itself does not be modified in any way, such
+# as by removing the copyright notice or references to OASIS, except
+# as needed for the purpose of developing OASIS specifications, in
+# which case the procedures for copyrights defined in the OASIS
+# Intellectual Property Rights document must be followed, or as
+# required to translate it into languages other than English.
+#
+
+allowed_children = {
+ (DCNS,u'creator') : (
+ ),
+ (DCNS,u'date') : (
+ ),
+ (DCNS,u'description') : (
+ ),
+ (DCNS,u'language') : (
+ ),
+ (DCNS,u'subject') : (
+ ),
+ (DCNS,u'title') : (
+ ),
+# Completes Dublin Core start
+# (DCNS,'contributor') : (
+# ),
+# (DCNS,'coverage') : (
+# ),
+# (DCNS,'format') : (
+# ),
+# (DCNS,'identifier') : (
+# ),
+# (DCNS,'publisher') : (
+# ),
+# (DCNS,'relation') : (
+# ),
+# (DCNS,'rights') : (
+# ),
+# (DCNS,'source') : (
+# ),
+# (DCNS,'type') : (
+# ),
+# Completes Dublin Core end
+ (MATHNS,u'math') : None,
+
+ (XFORMSNS,u'model') : None,
+
+ (ANIMNS,u'animate') : (
+ ),
+ (ANIMNS,u'animateColor') : (
+ ),
+ (ANIMNS,u'animateMotion') : (
+ ),
+ (ANIMNS,u'animateTransform') : (
+ ),
+ (ANIMNS,u'audio') : (
+ ),
+ (ANIMNS,u'command') : (
+ (ANIMNS,u'param'),
+ ),
+# allowed_children
+ (ANIMNS,u'iterate') : (
+ (ANIMNS,u'animate'),
+ (ANIMNS,u'animateColor'),
+ (ANIMNS,u'animateMotion'),
+ (ANIMNS,u'animateTransform'),
+ (ANIMNS,u'audio'),
+ (ANIMNS,u'command'),
+ (ANIMNS,u'iterate'),
+ (ANIMNS,u'par'),
+ (ANIMNS,u'seq'),
+ (ANIMNS,u'set'),
+ (ANIMNS,u'transitionFilter'),
+ ),
+ (ANIMNS,u'par') : (
+ (ANIMNS,u'animate'),
+ (ANIMNS,u'animateColor'),
+ (ANIMNS,u'animateMotion'),
+ (ANIMNS,u'animateTransform'),
+ (ANIMNS,u'audio'),
+ (ANIMNS,u'command'),
+ (ANIMNS,u'iterate'),
+ (ANIMNS,u'par'),
+ (ANIMNS,u'seq'),
+ (ANIMNS,u'set'),
+ (ANIMNS,u'transitionFilter'),
+ ),
+# allowed_children
+ (ANIMNS,u'param') : (
+ ),
+ (ANIMNS,u'seq') : (
+ (ANIMNS,u'animate'),
+ (ANIMNS,u'animateColor'),
+ (ANIMNS,u'animateMotion'),
+ (ANIMNS,u'animateTransform'),
+ (ANIMNS,u'audio'),
+ (ANIMNS,u'command'),
+ (ANIMNS,u'iterate'),
+ (ANIMNS,u'par'),
+ (ANIMNS,u'seq'),
+ (ANIMNS,u'set'),
+ (ANIMNS,u'transitionFilter'),
+ ),
+ (ANIMNS,u'set') : (
+ ),
+ (ANIMNS,u'transitionFilter') : (
+ ),
+ (CHARTNS,u'axis') : (
+ (CHARTNS,u'categories'),
+ (CHARTNS,u'grid'),
+ (CHARTNS,u'title'),
+ ),
+# allowed_children
+ (CHARTNS,u'categories') : (
+ ),
+ (CHARTNS,u'chart') : (
+ (CHARTNS,u'footer'),
+ (CHARTNS,u'legend'),
+ (CHARTNS,u'plot-area'),
+ (CHARTNS,u'subtitle'),
+ (CHARTNS,u'title'),
+ (TABLENS,u'table'),
+ ),
+ (CHARTNS,u'data-point') : (
+ ),
+ (CHARTNS,u'domain') : (
+ ),
+ (CHARTNS,u'error-indicator') : (
+ ),
+ (CHARTNS,u'floor') : (
+ ),
+ (CHARTNS,u'footer') : (
+ (TEXTNS,u'p'),
+ ),
+ (CHARTNS,u'grid') : (
+ ),
+ (CHARTNS,u'legend') : (
+ ),
+# allowed_children
+ (CHARTNS,u'mean-value') : (
+ ),
+ (CHARTNS,u'plot-area') : (
+ (CHARTNS,u'axis'),
+ (CHARTNS,u'floor'),
+ (CHARTNS,u'series'),
+ (CHARTNS,u'stock-gain-marker'),
+ (CHARTNS,u'stock-loss-marker'),
+ (CHARTNS,u'stock-range-line'),
+ (CHARTNS,u'wall'),
+ (DR3DNS,u'light'),
+ ),
+ (CHARTNS,u'regression-curve') : (
+ ),
+ (CHARTNS,u'series') : (
+ (CHARTNS,u'data-point'),
+ (CHARTNS,u'domain'),
+ (CHARTNS,u'error-indicator'),
+ (CHARTNS,u'mean-value'),
+ (CHARTNS,u'regression-curve'),
+ ),
+ (CHARTNS,u'stock-gain-marker') : (
+ ),
+ (CHARTNS,u'stock-loss-marker') : (
+ ),
+# allowed_children
+ (CHARTNS,u'stock-range-line') : (
+ ),
+ (CHARTNS,u'subtitle') : (
+ (TEXTNS,u'p'),
+ ),
+ (CHARTNS,u'symbol-image') : (
+ ),
+ (CHARTNS,u'title') : (
+ (TEXTNS,u'p'),
+ ),
+ (CHARTNS,u'wall') : (
+ ),
+ (CONFIGNS,u'config-item') : (
+ ),
+ (CONFIGNS,u'config-item-map-entry') : (
+ (CONFIGNS,u'config-item'),
+ (CONFIGNS,u'config-item-map-indexed'),
+ (CONFIGNS,u'config-item-map-named'),
+ (CONFIGNS,u'config-item-set'),
+ ),
+ (CONFIGNS,u'config-item-map-indexed') : (
+ (CONFIGNS,u'config-item-map-entry'),
+ ),
+ (CONFIGNS,u'config-item-map-named') : (
+ (CONFIGNS,u'config-item-map-entry'),
+ ),
+# allowed_children
+ (CONFIGNS,u'config-item-set') : (
+ (CONFIGNS,u'config-item'),
+ (CONFIGNS,u'config-item-map-indexed'),
+ (CONFIGNS,u'config-item-map-named'),
+ (CONFIGNS,u'config-item-set'),
+ ),
+ (MANIFESTNS,u'algorithm') : (
+ ),
+ (MANIFESTNS,u'encryption-data') : (
+ (MANIFESTNS,u'algorithm'),
+ (MANIFESTNS,u'key-derivation'),
+ ),
+ (MANIFESTNS,u'file-entry') : (
+ (MANIFESTNS,u'encryption-data'),
+ ),
+ (MANIFESTNS,u'key-derivation') : (
+ ),
+ (MANIFESTNS,u'manifest') : (
+ (MANIFESTNS,u'file-entry'),
+ ),
+ (NUMBERNS,u'am-pm') : (
+ ),
+ (NUMBERNS,u'boolean') : (
+ ),
+# allowed_children
+ (NUMBERNS,u'boolean-style') : (
+ (NUMBERNS,u'boolean'),
+ (NUMBERNS,u'text'),
+ (STYLENS,u'map'),
+ (STYLENS,u'text-properties'),
+ ),
+ (NUMBERNS,u'currency-style') : (
+ (NUMBERNS,u'currency-symbol'),
+ (NUMBERNS,u'number'),
+ (NUMBERNS,u'text'),
+ (STYLENS,u'map'),
+ (STYLENS,u'text-properties'),
+ ),
+ (NUMBERNS,u'currency-symbol') : (
+ ),
+ (NUMBERNS,u'date-style') : (
+ (NUMBERNS,u'am-pm'),
+ (NUMBERNS,u'day'),
+ (NUMBERNS,u'day-of-week'),
+ (NUMBERNS,u'era'),
+ (NUMBERNS,u'hours'),
+ (NUMBERNS,u'minutes'),
+ (NUMBERNS,u'month'),
+ (NUMBERNS,u'quarter'),
+ (NUMBERNS,u'seconds'),
+ (NUMBERNS,u'text'),
+ (NUMBERNS,u'week-of-year'),
+ (NUMBERNS,u'year'),
+ (STYLENS,u'map'),
+ (STYLENS,u'text-properties'),
+ ),
+# allowed_children
+ (NUMBERNS,u'day') : (
+ ),
+ (NUMBERNS,u'day-of-week') : (
+ ),
+ (NUMBERNS,u'embedded-text') : (
+ ),
+ (NUMBERNS,u'era') : (
+ ),
+ (NUMBERNS,u'fraction') : (
+ ),
+ (NUMBERNS,u'hours') : (
+ ),
+ (NUMBERNS,u'minutes') : (
+ ),
+ (NUMBERNS,u'month') : (
+ ),
+ (NUMBERNS,u'number') : (
+ (NUMBERNS,u'embedded-text'),
+ ),
+ (NUMBERNS,u'number-style') : (
+ (NUMBERNS,u'fraction'),
+ (NUMBERNS,u'number'),
+ (NUMBERNS,u'scientific-number'),
+ (NUMBERNS,u'text'),
+ (STYLENS,u'map'),
+ (STYLENS,u'text-properties'),
+ ),
+# allowed_children
+ (NUMBERNS,u'percentage-style') : (
+ (NUMBERNS,u'number'),
+ (NUMBERNS,u'text'),
+ (STYLENS,u'map'),
+ (STYLENS,u'text-properties'),
+ ),
+ (NUMBERNS,u'quarter') : (
+ ),
+ (NUMBERNS,u'scientific-number') : (
+ ),
+ (NUMBERNS,u'seconds') : (
+ ),
+ (NUMBERNS,u'text') : (
+ ),
+ (NUMBERNS,u'text-content') : (
+ ),
+ (NUMBERNS,u'text-style') : (
+ (NUMBERNS,u'text'),
+ (NUMBERNS,u'text-content'),
+ (STYLENS,u'map'),
+ (STYLENS,u'text-properties'),
+ ),
+# allowed_children
+ (NUMBERNS,u'time-style') : (
+ (NUMBERNS,u'am-pm'),
+ (NUMBERNS,u'hours'),
+ (NUMBERNS,u'minutes'),
+ (NUMBERNS,u'seconds'),
+ (NUMBERNS,u'text'),
+ (STYLENS,u'map'),
+ (STYLENS,u'text-properties'),
+ ),
+# allowed_children
+ (NUMBERNS,u'week-of-year') : (
+ ),
+ (NUMBERNS,u'year') : (
+ ),
+ (DR3DNS,u'cube') : (
+ ),
+ (DR3DNS,u'extrude') : (
+ ),
+ (DR3DNS,u'light') : (
+ ),
+ (DR3DNS,u'rotate') : (
+ ),
+ (DR3DNS,u'scene') : (
+ (DR3DNS,u'cube'),
+ (DR3DNS,u'extrude'),
+ (DR3DNS,u'light'),
+ (DR3DNS,u'rotate'),
+ (DR3DNS,u'scene'),
+ (DR3DNS,u'sphere'),
+ (SVGNS,u'title'),
+ (SVGNS,u'desc'),
+ ),
+ (DR3DNS,u'sphere') : (
+ ),
+ (DRAWNS,u'a') : (
+ (DRAWNS,u'frame'),
+ ),
+# allowed_children
+ (DRAWNS,u'applet') : (
+ (DRAWNS,u'param'),
+ ),
+ (DRAWNS,u'area-circle') : (
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ ),
+ (DRAWNS,u'area-polygon') : (
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ ),
+ (DRAWNS,u'area-rectangle') : (
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ ),
+ (DRAWNS,u'caption') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+ (DRAWNS,u'circle') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+# allowed_children
+ (DRAWNS,u'connector') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+ (DRAWNS,u'contour-path') : (
+ ),
+ (DRAWNS,u'contour-polygon') : (
+ ),
+ (DRAWNS,u'control') : (
+ (DRAWNS,u'glue-point'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ ),
+ (DRAWNS,u'custom-shape') : (
+ (DRAWNS,u'enhanced-geometry'),
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+# allowed_children
+ (DRAWNS,u'ellipse') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+ (DRAWNS,u'enhanced-geometry') : (
+ (DRAWNS,u'equation'),
+ (DRAWNS,u'handle'),
+ ),
+ (DRAWNS,u'equation') : (
+ ),
+# allowed_children
+ (DRAWNS,u'fill-image') : (
+ ),
+ (DRAWNS,u'floating-frame') : (
+ ),
+ (DRAWNS,u'frame') : (
+ (DRAWNS,u'applet'),
+ (DRAWNS,u'contour-path'),
+ (DRAWNS,u'contour-polygon'),
+ (DRAWNS,u'floating-frame'),
+ (DRAWNS,u'glue-point'),
+ (DRAWNS,u'image'),
+ (DRAWNS,u'image-map'),
+ (DRAWNS,u'object'),
+ (DRAWNS,u'object-ole'),
+ (DRAWNS,u'plugin'),
+ (DRAWNS,u'text-box'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ ),
+# allowed_children
+ (DRAWNS,u'g') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'glue-point'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (DRAWNS,u'glue-point') : (
+ ),
+ (DRAWNS,u'gradient') : (
+ ),
+ (DRAWNS,u'handle') : (
+ ),
+ (DRAWNS,u'hatch') : (
+ ),
+# allowed_children
+ (DRAWNS,u'image') : (
+ (OFFICENS,u'binary-data'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+ (DRAWNS,u'image-map') : (
+ (DRAWNS,u'area-circle'),
+ (DRAWNS,u'area-polygon'),
+ (DRAWNS,u'area-rectangle'),
+ ),
+ (DRAWNS,u'layer') : (
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ ),
+ (DRAWNS,u'layer-set') : (
+ (DRAWNS,u'layer'),
+ ),
+ (DRAWNS,u'line') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+ (DRAWNS,u'marker') : (
+ ),
+ (DRAWNS,u'measure') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ (SVGNS,u'title'),
+ (SVGNS,u'desc'),
+ ),
+ (DRAWNS,u'object') : (
+ (MATHNS,u'math'),
+ (OFFICENS,u'document'),
+ ),
+# allowed_children
+ (DRAWNS,u'object-ole') : (
+ (OFFICENS,u'binary-data'),
+ ),
+ (DRAWNS,u'opacity') : (
+ ),
+ (DRAWNS,u'page') : (
+ (ANIMNS,u'animate'),
+ (ANIMNS,u'animateColor'),
+ (ANIMNS,u'animateMotion'),
+ (ANIMNS,u'animateTransform'),
+ (ANIMNS,u'audio'),
+ (ANIMNS,u'command'),
+ (ANIMNS,u'iterate'),
+ (ANIMNS,u'par'),
+ (ANIMNS,u'seq'),
+ (ANIMNS,u'set'),
+ (ANIMNS,u'transitionFilter'),
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'forms'),
+ (PRESENTATIONNS,u'animations'),
+ (PRESENTATIONNS,u'notes'),
+ ),
+# allowed_children
+ (DRAWNS,u'page-thumbnail') : (
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ ),
+ (DRAWNS,u'param') : (
+ ),
+ (DRAWNS,u'path') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+ (DRAWNS,u'plugin') : (
+ (DRAWNS,u'param'),
+ ),
+ (DRAWNS,u'polygon') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'title'),
+ (SVGNS,u'desc'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+ (DRAWNS,u'polyline') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+# allowed_children
+ (DRAWNS,u'rect') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+ (DRAWNS,u'regular-polygon') : (
+ (DRAWNS,u'glue-point'),
+ (OFFICENS,u'event-listeners'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+ (DRAWNS,u'stroke-dash') : (
+ ),
+ (DRAWNS,u'text-box') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'numbered-paragraph'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'user-index'),
+ ),
+# allowed_children
+ (FORMNS,u'button') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'checkbox') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'column') : (
+ (FORMNS,u'checkbox'),
+ (FORMNS,u'combobox'),
+ (FORMNS,u'date'),
+ (FORMNS,u'formatted-text'),
+ (FORMNS,u'listbox'),
+ (FORMNS,u'number'),
+ (FORMNS,u'text'),
+ (FORMNS,u'textarea'),
+ ),
+ (FORMNS,u'combobox') : (
+ (FORMNS,u'item'),
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'connection-resource') : (
+ ),
+ (FORMNS,u'date') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'file') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'fixed-text') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+# allowed_children
+ (FORMNS,u'form') : (
+ (FORMNS,u'button'),
+ (FORMNS,u'checkbox'),
+ (FORMNS,u'combobox'),
+ (FORMNS,u'connection-resource'),
+ (FORMNS,u'date'),
+ (FORMNS,u'file'),
+ (FORMNS,u'fixed-text'),
+ (FORMNS,u'form'),
+ (FORMNS,u'formatted-text'),
+ (FORMNS,u'frame'),
+ (FORMNS,u'generic-control'),
+ (FORMNS,u'grid'),
+ (FORMNS,u'hidden'),
+ (FORMNS,u'image'),
+ (FORMNS,u'image-frame'),
+ (FORMNS,u'listbox'),
+ (FORMNS,u'number'),
+ (FORMNS,u'password'),
+ (FORMNS,u'properties'),
+ (FORMNS,u'radio'),
+ (FORMNS,u'text'),
+ (FORMNS,u'textarea'),
+ (FORMNS,u'time'),
+ (FORMNS,u'value-range'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'formatted-text') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'frame') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'generic-control') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'grid') : (
+ (FORMNS,u'column'),
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'hidden') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'image') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+# allowed_children
+ (FORMNS,u'image-frame') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'item') : (
+ ),
+ (FORMNS,u'list-property') : (
+ (FORMNS,u'list-value'),
+ (FORMNS,u'list-value'),
+ (FORMNS,u'list-value'),
+ (FORMNS,u'list-value'),
+ (FORMNS,u'list-value'),
+ (FORMNS,u'list-value'),
+ (FORMNS,u'list-value'),
+ ),
+ (FORMNS,u'list-value') : (
+ ),
+ (FORMNS,u'listbox') : (
+ (FORMNS,u'option'),
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'number') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'option') : (
+ ),
+ (FORMNS,u'password') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'properties') : (
+ (FORMNS,u'list-property'),
+ (FORMNS,u'property'),
+ ),
+ (FORMNS,u'property') : (
+ ),
+ (FORMNS,u'radio') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'text') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'textarea') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ (TEXTNS,u'p'),
+ ),
+ (FORMNS,u'time') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (FORMNS,u'value-range') : (
+ (FORMNS,u'properties'),
+ (OFFICENS,u'event-listeners'),
+ ),
+ (METANS,u'auto-reload') : (
+ ),
+ (METANS,u'creation-date') : (
+ ),
+ (METANS,u'date-string') : (
+ ),
+ (METANS,u'document-statistic') : (
+ ),
+ (METANS,u'editing-cycles') : (
+ ),
+ (METANS,u'editing-duration') : (
+ ),
+ (METANS,u'generator') : (
+ ),
+ (METANS,u'hyperlink-behaviour') : (
+ ),
+ (METANS,u'initial-creator') : (
+ ),
+ (METANS,u'keyword') : (
+ ),
+ (METANS,u'print-date') : (
+ ),
+ (METANS,u'printed-by') : (
+ ),
+ (METANS,u'template') : (
+ ),
+ (METANS,u'user-defined') : (
+ ),
+# allowed_children
+ (OFFICENS,u'annotation') : (
+ (DCNS,u'creator'),
+ (DCNS,u'date'),
+ (METANS,u'date-string'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'p'),
+ ),
+ (OFFICENS,u'automatic-styles') : (
+ (NUMBERNS,u'boolean-style'),
+ (NUMBERNS,u'currency-style'),
+ (NUMBERNS,u'date-style'),
+ (NUMBERNS,u'number-style'),
+ (NUMBERNS,u'percentage-style'),
+ (NUMBERNS,u'text-style'),
+ (NUMBERNS,u'time-style'),
+ (STYLENS,u'page-layout'),
+ (STYLENS,u'style'),
+ (TEXTNS,u'list-style'),
+ ),
+ (OFFICENS,u'binary-data') : (
+ ),
+ (OFFICENS,u'body') : (
+ (OFFICENS,u'chart'),
+ (OFFICENS,u'drawing'),
+ (OFFICENS,u'image'),
+ (OFFICENS,u'presentation'),
+ (OFFICENS,u'spreadsheet'),
+ (OFFICENS,u'text'),
+ ),
+ (OFFICENS,u'change-info') : (
+ (DCNS,u'creator'),
+ (DCNS,u'date'),
+ (TEXTNS,u'p'),
+ ),
+ (OFFICENS,u'chart') : (
+ (CHARTNS,u'chart'),
+ (TABLENS,u'calculation-settings'),
+ (TABLENS,u'consolidation'),
+ (TABLENS,u'content-validations'),
+ (TABLENS,u'data-pilot-tables'),
+ (TABLENS,u'database-ranges'),
+ (TABLENS,u'dde-links'),
+ (TABLENS,u'label-ranges'),
+ (TABLENS,u'named-expressions'),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'),
+ (TEXTNS,u'dde-connection-decls'),
+ (TEXTNS,u'sequence-decls'),
+ (TEXTNS,u'user-field-decls'),
+ (TEXTNS,u'variable-decls'),
+ ),
+ (OFFICENS,u'dde-source') : (
+ ),
+ (OFFICENS,u'document') : (
+ (OFFICENS,u'automatic-styles'),
+ (OFFICENS,u'body'),
+ (OFFICENS,u'font-face-decls'),
+ (OFFICENS,u'master-styles'),
+ (OFFICENS,u'meta'),
+ (OFFICENS,u'scripts'),
+ (OFFICENS,u'settings'),
+ (OFFICENS,u'styles'),
+ ),
+ (OFFICENS,u'document-content') : (
+ (OFFICENS,u'automatic-styles'),
+ (OFFICENS,u'body'),
+ (OFFICENS,u'font-face-decls'),
+ (OFFICENS,u'scripts'),
+ ),
+ (OFFICENS,u'document-meta') : (
+ (OFFICENS,u'meta'),
+ ),
+ (OFFICENS,u'document-settings') : (
+ (OFFICENS,u'settings'),
+ ),
+ (OFFICENS,u'document-styles') : (
+ (OFFICENS,u'automatic-styles'),
+ (OFFICENS,u'font-face-decls'),
+ (OFFICENS,u'master-styles'),
+ (OFFICENS,u'styles'),
+ ),
+ (OFFICENS,u'drawing') : (
+ (DRAWNS,u'page'),
+ (TABLENS,u'calculation-settings'),
+ (TABLENS,u'consolidation'),
+ (TABLENS,u'content-validations'),
+ (TABLENS,u'data-pilot-tables'),
+ (TABLENS,u'database-ranges'),
+ (TABLENS,u'dde-links'),
+ (TABLENS,u'label-ranges'),
+ (TABLENS,u'named-expressions'),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'),
+ (TEXTNS,u'dde-connection-decls'),
+ (TEXTNS,u'sequence-decls'),
+ (TEXTNS,u'user-field-decls'),
+ (TEXTNS,u'variable-decls'),
+ ),
+ (OFFICENS,u'event-listeners') : (
+ (PRESENTATIONNS,u'event-listener'),
+ (SCRIPTNS,u'event-listener'),
+ ),
+ (OFFICENS,u'font-face-decls') : (
+ (STYLENS,u'font-face'),
+ ),
+# allowed_children
+ (OFFICENS,u'forms') : (
+ (XFORMSNS,u'model'),
+ (FORMNS,u'form'),
+ ),
+ (OFFICENS,u'image') : (
+ (DRAWNS,u'frame'),
+ ),
+ (OFFICENS,u'master-styles') : (
+ (DRAWNS,u'layer-set'),
+ (STYLENS,u'handout-master'),
+ (STYLENS,u'master-page'),
+ (TABLENS,u'table-template'),
+ ),
+ (OFFICENS,u'meta') : (
+ (DCNS,u'creator'),
+ (DCNS,u'date'),
+ (DCNS,u'description'),
+ (DCNS,u'language'),
+ (DCNS,u'subject'),
+ (DCNS,u'title'),
+# Completes Dublin Core start
+# (DCNS,'contributor'),
+# (DCNS,'coverage'),
+# (DCNS,'format'),
+# (DCNS,'identifier'),
+# (DCNS,'publisher'),
+# (DCNS,'relation'),
+# (DCNS,'rights'),
+# (DCNS,'source'),
+# (DCNS,'type'),
+# Completes Dublin Core end
+ (METANS,u'auto-reload'),
+ (METANS,u'creation-date'),
+ (METANS,u'document-statistic'),
+ (METANS,u'editing-cycles'),
+ (METANS,u'editing-duration'),
+ (METANS,u'generator'),
+ (METANS,u'hyperlink-behaviour'),
+ (METANS,u'initial-creator'),
+ (METANS,u'keyword'),
+ (METANS,u'print-date'),
+ (METANS,u'printed-by'),
+ (METANS,u'template'),
+ (METANS,u'user-defined'),
+ ),
+ (OFFICENS,u'presentation') : (
+ (DRAWNS,u'page'),
+ (PRESENTATIONNS,u'date-time-decl'),
+ (PRESENTATIONNS,u'footer-decl'),
+ (PRESENTATIONNS,u'header-decl'),
+ (PRESENTATIONNS,u'settings'),
+ (TABLENS,u'calculation-settings'),
+ (TABLENS,u'consolidation'),
+ (TABLENS,u'content-validations'),
+ (TABLENS,u'data-pilot-tables'),
+ (TABLENS,u'database-ranges'),
+ (TABLENS,u'dde-links'),
+ (TABLENS,u'label-ranges'),
+ (TABLENS,u'named-expressions'),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'),
+ (TEXTNS,u'dde-connection-decls'),
+ (TEXTNS,u'sequence-decls'),
+ (TEXTNS,u'user-field-decls'),
+ (TEXTNS,u'variable-decls'),
+ ),
+# allowed_children
+ (OFFICENS,u'script') : None,
+
+ (OFFICENS,u'scripts') : (
+ (OFFICENS,u'event-listeners'),
+ (OFFICENS,u'script'),
+ ),
+ (OFFICENS,u'settings') : (
+ (CONFIGNS,u'config-item-set'),
+ ),
+ (OFFICENS,u'spreadsheet') : (
+ (TABLENS,u'calculation-settings'),
+ (TABLENS,u'consolidation'),
+ (TABLENS,u'content-validations'),
+ (TABLENS,u'data-pilot-tables'),
+ (TABLENS,u'database-ranges'),
+ (TABLENS,u'dde-links'),
+ (TABLENS,u'label-ranges'),
+ (TABLENS,u'named-expressions'),
+ (TABLENS,u'table'),
+ (TABLENS,u'tracked-changes'),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'),
+ (TEXTNS,u'dde-connection-decls'),
+ (TEXTNS,u'sequence-decls'),
+ (TEXTNS,u'user-field-decls'),
+ (TEXTNS,u'variable-decls'),
+ ),
+ (OFFICENS,u'styles') : (
+ (NUMBERNS,u'boolean-style'),
+ (NUMBERNS,u'currency-style'),
+ (NUMBERNS,u'date-style'),
+ (NUMBERNS,u'number-style'),
+ (NUMBERNS,u'percentage-style'),
+ (NUMBERNS,u'text-style'),
+ (NUMBERNS,u'time-style'),
+ (DRAWNS,u'fill-image'),
+ (DRAWNS,u'gradient'),
+ (DRAWNS,u'hatch'),
+ (DRAWNS,u'marker'),
+ (DRAWNS,u'opacity'),
+ (DRAWNS,u'stroke-dash'),
+ (STYLENS,u'default-style'),
+ (STYLENS,u'presentation-page-layout'),
+ (STYLENS,u'style'),
+ (SVGNS,u'linearGradient'),
+ (SVGNS,u'radialGradient'),
+ (TEXTNS,u'bibliography-configuration'),
+ (TEXTNS,u'linenumbering-configuration'),
+ (TEXTNS,u'list-style'),
+ (TEXTNS,u'notes-configuration'),
+ (TEXTNS,u'outline-style'),
+ ),
+ (OFFICENS,u'text') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'forms'),
+ (TABLENS,u'calculation-settings'),
+ (TABLENS,u'consolidation'),
+ (TABLENS,u'content-validations'),
+ (TABLENS,u'data-pilot-tables'),
+ (TABLENS,u'database-ranges'),
+ (TABLENS,u'dde-links'),
+ (TABLENS,u'label-ranges'),
+ (TABLENS,u'named-expressions'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'dde-connection-decls'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'numbered-paragraph'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'page-sequence'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'sequence-decls'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'tracked-changes'),
+ (TEXTNS,u'user-field-decls'),
+ (TEXTNS,u'user-index'),
+ (TEXTNS,u'variable-decls'),
+ ),
+ (PRESENTATIONNS,u'animation-group') : (
+ (PRESENTATIONNS,u'dim'),
+ (PRESENTATIONNS,u'hide-shape'),
+ (PRESENTATIONNS,u'hide-text'),
+ (PRESENTATIONNS,u'play'),
+ (PRESENTATIONNS,u'show-shape'),
+ (PRESENTATIONNS,u'show-text'),
+ ),
+ (PRESENTATIONNS,u'animations') : (
+ (PRESENTATIONNS,u'animation-group'),
+ (PRESENTATIONNS,u'dim'),
+ (PRESENTATIONNS,u'hide-shape'),
+ (PRESENTATIONNS,u'hide-text'),
+ (PRESENTATIONNS,u'play'),
+ (PRESENTATIONNS,u'show-shape'),
+ (PRESENTATIONNS,u'show-text'),
+ ),
+ (PRESENTATIONNS,u'date-time') : (
+ ),
+ (PRESENTATIONNS,u'date-time-decl') : (
+ ),
+ (PRESENTATIONNS,u'dim') : (
+ (PRESENTATIONNS,u'sound'),
+ ),
+ (PRESENTATIONNS,u'event-listener') : (
+ (PRESENTATIONNS,u'sound'),
+ ),
+ (PRESENTATIONNS,u'footer') : (
+ ),
+ (PRESENTATIONNS,u'footer-decl') : (
+ ),
+ (PRESENTATIONNS,u'header') : (
+ ),
+ (PRESENTATIONNS,u'header-decl') : (
+ ),
+ (PRESENTATIONNS,u'hide-shape') : (
+ (PRESENTATIONNS,u'sound'),
+ ),
+ (PRESENTATIONNS,u'hide-text') : (
+ (PRESENTATIONNS,u'sound'),
+ ),
+# allowed_children
+ (PRESENTATIONNS,u'notes') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'forms'),
+ ),
+ (PRESENTATIONNS,u'placeholder') : (
+ ),
+ (PRESENTATIONNS,u'play') : (
+ ),
+ (PRESENTATIONNS,u'settings') : (
+ (PRESENTATIONNS,u'show'),
+ ),
+ (PRESENTATIONNS,u'show') : (
+ ),
+ (PRESENTATIONNS,u'show-shape') : (
+ (PRESENTATIONNS,u'sound'),
+ ),
+ (PRESENTATIONNS,u'show-text') : (
+ (PRESENTATIONNS,u'sound'),
+ ),
+ (PRESENTATIONNS,u'sound') : (
+ ),
+ (SCRIPTNS,u'event-listener') : (
+ ),
+ (STYLENS,u'background-image') : (
+ (OFFICENS,u'binary-data'),
+ ),
+ (STYLENS,u'chart-properties') : (
+ (CHARTNS,u'symbol-image'),
+ ),
+ (STYLENS,u'column') : (
+ ),
+ (STYLENS,u'column-sep') : (
+ ),
+ (STYLENS,u'columns') : (
+ (STYLENS,u'column'),
+ (STYLENS,u'column-sep'),
+ ),
+ (STYLENS,u'default-style') : (
+ (STYLENS,u'chart-properties'),
+ (STYLENS,u'drawing-page-properties'),
+ (STYLENS,u'graphic-properties'),
+ (STYLENS,u'paragraph-properties'),
+ (STYLENS,u'ruby-properties'),
+ (STYLENS,u'section-properties'),
+ (STYLENS,u'table-cell-properties'),
+ (STYLENS,u'table-column-properties'),
+ (STYLENS,u'table-properties'),
+ (STYLENS,u'table-row-properties'),
+ (STYLENS,u'text-properties'),
+ ),
+ (STYLENS,u'drawing-page-properties') : (
+ (PRESENTATIONNS,u'sound'),
+ ),
+ (STYLENS,u'drop-cap') : (
+ ),
+ (STYLENS,u'font-face') : (
+ (SVGNS,u'definition-src'),
+ (SVGNS,u'font-face-src'),
+ ),
+ (STYLENS,u'footer') : (
+ (STYLENS,u'region-center'),
+ (STYLENS,u'region-left'),
+ (STYLENS,u'region-right'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'dde-connection-decls'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'index-title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'sequence-decls'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'tracked-changes'),
+ (TEXTNS,u'user-field-decls'),
+ (TEXTNS,u'user-index'),
+ (TEXTNS,u'variable-decls'),
+ ),
+# allowed_children
+ (STYLENS,u'footer-left') : (
+ (STYLENS,u'region-center'),
+ (STYLENS,u'region-left'),
+ (STYLENS,u'region-right'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'dde-connection-decls'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'index-title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'sequence-decls'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'tracked-changes'),
+ (TEXTNS,u'user-field-decls'),
+ (TEXTNS,u'user-index'),
+ (TEXTNS,u'variable-decls'),
+ ),
+ (STYLENS,u'footer-style') : (
+ (STYLENS,u'header-footer-properties'),
+ ),
+ (STYLENS,u'footnote-sep') : (
+ ),
+ (STYLENS,u'graphic-properties') : (
+ (STYLENS,u'background-image'),
+ (STYLENS,u'columns'),
+ (TEXTNS,u'list-style'),
+ ),
+# allowed_children
+ (STYLENS,u'handout-master') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ ),
+ (STYLENS,u'header') : (
+ (STYLENS,u'region-center'),
+ (STYLENS,u'region-left'),
+ (STYLENS,u'region-right'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'dde-connection-decls'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'index-title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'sequence-decls'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'tracked-changes'),
+ (TEXTNS,u'user-field-decls'),
+ (TEXTNS,u'user-index'),
+ (TEXTNS,u'variable-decls'),
+ ),
+# allowed_children
+ (STYLENS,u'header-footer-properties') : (
+ (STYLENS,u'background-image'),
+ ),
+ (STYLENS,u'header-left') : (
+ (STYLENS,u'region-center'),
+ (STYLENS,u'region-left'),
+ (STYLENS,u'region-right'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'dde-connection-decls'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'index-title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'sequence-decls'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'tracked-changes'),
+ (TEXTNS,u'user-field-decls'),
+ (TEXTNS,u'user-index'),
+ (TEXTNS,u'variable-decls'),
+ ),
+ (STYLENS,u'header-style') : (
+ (STYLENS,u'header-footer-properties'),
+ ),
+ (STYLENS,u'list-level-properties') : (
+ ),
+ (STYLENS,u'map') : (
+ ),
+ (STYLENS,u'master-page') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'forms'),
+ (PRESENTATIONNS,u'notes'),
+ (STYLENS,u'footer'),
+ (STYLENS,u'footer-left'),
+ (STYLENS,u'header'),
+ (STYLENS,u'header-left'),
+ (STYLENS,u'style'),
+ ),
+ (STYLENS,u'page-layout') : (
+ (STYLENS,u'footer-style'),
+ (STYLENS,u'header-style'),
+ (STYLENS,u'page-layout-properties'),
+ ),
+ (STYLENS,u'page-layout-properties') : (
+ (STYLENS,u'background-image'),
+ (STYLENS,u'columns'),
+ (STYLENS,u'footnote-sep'),
+ ),
+# allowed_children
+ (STYLENS,u'paragraph-properties') : (
+ (STYLENS,u'background-image'),
+ (STYLENS,u'drop-cap'),
+ (STYLENS,u'tab-stops'),
+ ),
+ (STYLENS,u'presentation-page-layout') : (
+ (PRESENTATIONNS,u'placeholder'),
+ ),
+ (STYLENS,u'region-center') : (
+ (TEXTNS,u'p'),
+ ),
+ (STYLENS,u'region-left') : (
+ (TEXTNS,u'p'),
+ ),
+ (STYLENS,u'region-right') : (
+ (TEXTNS,u'p'),
+ ),
+ (STYLENS,u'ruby-properties') : (
+ ),
+ (STYLENS,u'section-properties') : (
+ (STYLENS,u'background-image'),
+ (STYLENS,u'columns'),
+ (TEXTNS,u'notes-configuration'),
+ ),
+ (STYLENS,u'style') : (
+ (STYLENS,u'chart-properties'),
+ (STYLENS,u'drawing-page-properties'),
+ (STYLENS,u'graphic-properties'),
+ (STYLENS,u'map'),
+ (STYLENS,u'paragraph-properties'),
+ (STYLENS,u'ruby-properties'),
+ (STYLENS,u'section-properties'),
+ (STYLENS,u'table-cell-properties'),
+ (STYLENS,u'table-column-properties'),
+ (STYLENS,u'table-properties'),
+ (STYLENS,u'table-row-properties'),
+ (STYLENS,u'text-properties'),
+ ),
+ (STYLENS,u'tab-stop') : (
+ ),
+ (STYLENS,u'tab-stops') : (
+ (STYLENS,u'tab-stop'),
+ ),
+# allowed_children
+ (STYLENS,u'table-cell-properties') : (
+ (STYLENS,u'background-image'),
+ ),
+ (STYLENS,u'table-column-properties') : (
+ ),
+ (STYLENS,u'table-properties') : (
+ (STYLENS,u'background-image'),
+ ),
+ (STYLENS,u'table-row-properties') : (
+ (STYLENS,u'background-image'),
+ ),
+ (STYLENS,u'text-properties') : (
+ ),
+ (SVGNS,u'definition-src') : (
+ ),
+ (SVGNS,u'desc') : (
+ ),
+ (SVGNS,u'font-face-format') : (
+ ),
+ (SVGNS,u'font-face-name') : (
+ ),
+ (SVGNS,u'font-face-src') : (
+ (SVGNS,u'font-face-name'),
+ (SVGNS,u'font-face-uri'),
+ ),
+ (SVGNS,u'font-face-uri') : (
+ (SVGNS,u'font-face-format'),
+ ),
+ (SVGNS,u'linearGradient') : (
+ (SVGNS,u'stop'),
+ ),
+ (SVGNS,u'radialGradient') : (
+ (SVGNS,u'stop'),
+ ),
+ (SVGNS,u'stop') : (
+ ),
+ (SVGNS,u'title') : (
+ ),
+ (TABLENS,u'body') : (
+ ),
+ (TABLENS,u'calculation-settings') : (
+ (TABLENS,u'iteration'),
+ (TABLENS,u'null-date'),
+ ),
+# allowed_children
+ (TABLENS,u'cell-address') : (
+ ),
+ (TABLENS,u'cell-content-change') : (
+ (OFFICENS,u'change-info'),
+ (TABLENS,u'cell-address'),
+ (TABLENS,u'deletions'),
+ (TABLENS,u'dependencies'),
+ (TABLENS,u'previous'),
+ ),
+ (TABLENS,u'cell-content-deletion') : (
+ (TABLENS,u'cell-address'),
+ (TABLENS,u'change-track-table-cell'),
+ ),
+ (TABLENS,u'cell-range-source') : (
+ ),
+ (TABLENS,u'change-deletion') : (
+ ),
+ (TABLENS,u'change-track-table-cell') : (
+ (TEXTNS,u'p'),
+ ),
+ (TABLENS,u'consolidation') : (
+ ),
+ (TABLENS,u'content-validation') : (
+ (OFFICENS,u'event-listeners'),
+ (TABLENS,u'error-macro'),
+ (TABLENS,u'error-message'),
+ (TABLENS,u'help-message'),
+ ),
+# allowed_children
+ (TABLENS,u'content-validations') : (
+ (TABLENS,u'content-validation'),
+ ),
+ (TABLENS,u'covered-table-cell') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'annotation'),
+ (TABLENS,u'cell-range-source'),
+ (TABLENS,u'detective'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'numbered-paragraph'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'user-index'),
+ ),
+# allowed_children
+ (TABLENS,u'cut-offs') : (
+ (TABLENS,u'insertion-cut-off'),
+ (TABLENS,u'movement-cut-off'),
+ ),
+ (TABLENS,u'data-pilot-display-info') : (
+ ),
+ (TABLENS,u'data-pilot-field') : (
+ (TABLENS,u'data-pilot-field-reference'),
+ (TABLENS,u'data-pilot-groups'),
+ (TABLENS,u'data-pilot-level'),
+ ),
+ (TABLENS,u'data-pilot-field-reference') : (
+ ),
+ (TABLENS,u'data-pilot-group') : (
+ (TABLENS,u'data-pilot-group-member'),
+ ),
+ (TABLENS,u'data-pilot-group-member') : (
+ ),
+ (TABLENS,u'data-pilot-groups') : (
+ (TABLENS,u'data-pilot-group'),
+ ),
+ (TABLENS,u'data-pilot-layout-info') : (
+ ),
+ (TABLENS,u'data-pilot-level') : (
+ (TABLENS,u'data-pilot-display-info'),
+ (TABLENS,u'data-pilot-layout-info'),
+ (TABLENS,u'data-pilot-members'),
+ (TABLENS,u'data-pilot-sort-info'),
+ (TABLENS,u'data-pilot-subtotals'),
+ ),
+ (TABLENS,u'data-pilot-member') : (
+ ),
+ (TABLENS,u'data-pilot-members') : (
+ (TABLENS,u'data-pilot-member'),
+ ),
+ (TABLENS,u'data-pilot-sort-info') : (
+ ),
+ (TABLENS,u'data-pilot-subtotal') : (
+ ),
+ (TABLENS,u'data-pilot-subtotals') : (
+ (TABLENS,u'data-pilot-subtotal'),
+ ),
+# allowed_children
+ (TABLENS,u'data-pilot-table') : (
+ (TABLENS,u'data-pilot-field'),
+ (TABLENS,u'database-source-query'),
+ (TABLENS,u'database-source-sql'),
+ (TABLENS,u'database-source-table'),
+ (TABLENS,u'source-cell-range'),
+ (TABLENS,u'source-service'),
+ ),
+ (TABLENS,u'data-pilot-tables') : (
+ (TABLENS,u'data-pilot-table'),
+ ),
+ (TABLENS,u'database-range') : (
+ (TABLENS,u'database-source-query'),
+ (TABLENS,u'database-source-sql'),
+ (TABLENS,u'database-source-table'),
+ (TABLENS,u'filter'),
+ (TABLENS,u'sort'),
+ (TABLENS,u'subtotal-rules'),
+ ),
+ (TABLENS,u'database-ranges') : (
+ (TABLENS,u'database-range'),
+ ),
+ (TABLENS,u'database-source-query') : (
+ ),
+ (TABLENS,u'database-source-sql') : (
+ ),
+ (TABLENS,u'database-source-table') : (
+ ),
+# allowed_children
+ (TABLENS,u'dde-link') : (
+ (OFFICENS,u'dde-source'),
+ (TABLENS,u'table'),
+ ),
+ (TABLENS,u'dde-links') : (
+ (TABLENS,u'dde-link'),
+ ),
+ (TABLENS,u'deletion') : (
+ (OFFICENS,u'change-info'),
+ (TABLENS,u'cut-offs'),
+ (TABLENS,u'deletions'),
+ (TABLENS,u'dependencies'),
+ ),
+ (TABLENS,u'deletions') : (
+ (TABLENS,u'cell-content-deletion'),
+ (TABLENS,u'change-deletion'),
+ ),
+ (TABLENS,u'dependencies') : (
+ (TABLENS,u'dependency'),
+ ),
+ (TABLENS,u'dependency') : (
+ ),
+ (TABLENS,u'detective') : (
+ (TABLENS,u'highlighted-range'),
+ (TABLENS,u'operation'),
+ ),
+# allowed_children
+ (TABLENS,u'error-macro') : (
+ ),
+ (TABLENS,u'error-message') : (
+ (TEXTNS,u'p'),
+ ),
+ (TABLENS,u'even-columns') : (
+ ),
+ (TABLENS,u'even-rows') : (
+ ),
+ (TABLENS,u'filter') : (
+ (TABLENS,u'filter-and'),
+ (TABLENS,u'filter-condition'),
+ (TABLENS,u'filter-or'),
+ ),
+ (TABLENS,u'filter-and') : (
+ (TABLENS,u'filter-condition'),
+ (TABLENS,u'filter-or'),
+ ),
+ (TABLENS,u'filter-condition') : (
+ ),
+ (TABLENS,u'filter-or') : (
+ (TABLENS,u'filter-and'),
+ (TABLENS,u'filter-condition'),
+ ),
+# allowed_children
+ (TABLENS,u'first-column') : (
+ ),
+ (TABLENS,u'first-row') : (
+ ),
+ (TABLENS,u'help-message') : (
+ (TEXTNS,u'p'),
+ ),
+ (TABLENS,u'highlighted-range') : (
+ ),
+ (TABLENS,u'insertion') : (
+ (OFFICENS,u'change-info'),
+ (TABLENS,u'deletions'),
+ (TABLENS,u'dependencies'),
+ ),
+ (TABLENS,u'insertion-cut-off') : (
+ ),
+ (TABLENS,u'iteration') : (
+ ),
+ (TABLENS,u'label-range') : (
+ ),
+ (TABLENS,u'label-ranges') : (
+ (TABLENS,u'label-range'),
+ ),
+ (TABLENS,u'last-column') : (
+ ),
+ (TABLENS,u'last-row') : (
+ ),
+ (TABLENS,u'movement') : (
+ (OFFICENS,u'change-info'),
+ (TABLENS,u'deletions'),
+ (TABLENS,u'dependencies'),
+ (TABLENS,u'source-range-address'),
+ (TABLENS,u'target-range-address'),
+ ),
+ (TABLENS,u'movement-cut-off') : (
+ ),
+ (TABLENS,u'named-expression') : (
+ ),
+ (TABLENS,u'named-expressions') : (
+ (TABLENS,u'named-expression'),
+ (TABLENS,u'named-range'),
+ ),
+# allowed_children
+ (TABLENS,u'named-range') : (
+ ),
+ (TABLENS,u'null-date') : (
+ ),
+ (TABLENS,u'odd-columns') : (
+ ),
+ (TABLENS,u'odd-rows') : (
+ ),
+ (TABLENS,u'operation') : (
+ ),
+ (TABLENS,u'previous') : (
+ (TABLENS,u'change-track-table-cell'),
+ ),
+ (TABLENS,u'scenario') : (
+ ),
+ (TABLENS,u'shapes') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ ),
+# allowed_children
+ (TABLENS,u'sort') : (
+ (TABLENS,u'sort-by'),
+ ),
+ (TABLENS,u'sort-by') : (
+ ),
+ (TABLENS,u'sort-groups') : (
+ ),
+ (TABLENS,u'source-cell-range') : (
+ (TABLENS,u'filter'),
+ ),
+ (TABLENS,u'source-range-address') : (
+ ),
+ (TABLENS,u'source-service') : (
+ ),
+ (TABLENS,u'subtotal-field') : (
+ ),
+ (TABLENS,u'subtotal-rule') : (
+ (TABLENS,u'subtotal-field'),
+ ),
+ (TABLENS,u'subtotal-rules') : (
+ (TABLENS,u'sort-groups'),
+ (TABLENS,u'subtotal-rule'),
+ ),
+# allowed_children
+ (TABLENS,u'table') : (
+ (OFFICENS,u'dde-source'),
+ (OFFICENS,u'forms'),
+ (TEXTNS,u'soft-page-break'),
+ (TABLENS,u'scenario'),
+ (TABLENS,u'shapes'),
+ (TABLENS,u'table-column'),
+ (TABLENS,u'table-column-group'),
+ (TABLENS,u'table-columns'),
+ (TABLENS,u'table-header-columns'),
+ (TABLENS,u'table-header-rows'),
+ (TABLENS,u'table-row'),
+ (TABLENS,u'table-row-group'),
+ (TABLENS,u'table-rows'),
+ (TABLENS,u'table-source'),
+ ),
+ (TABLENS,u'table-cell') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'annotation'),
+ (TABLENS,u'cell-range-source'),
+ (TABLENS,u'detective'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'numbered-paragraph'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'user-index'),
+ ),
+# allowed_children
+ (TABLENS,u'table-column') : (
+ ),
+ (TABLENS,u'table-column-group') : (
+ (TABLENS,u'table-column'),
+ (TABLENS,u'table-column-group'),
+ (TABLENS,u'table-columns'),
+ (TABLENS,u'table-header-columns'),
+ ),
+ (TABLENS,u'table-columns') : (
+ (TABLENS,u'table-column'),
+ ),
+ (TABLENS,u'table-header-columns') : (
+ (TABLENS,u'table-column'),
+ ),
+ (TABLENS,u'table-header-rows') : (
+ (TABLENS,u'table-row'),
+ (TEXTNS,u'soft-page-break'),
+ ),
+ (TABLENS,u'table-row') : (
+ (TABLENS,u'covered-table-cell'),
+ (TABLENS,u'table-cell'),
+ ),
+ (TABLENS,u'table-row-group') : (
+ (TABLENS,u'table-header-rows'),
+ (TABLENS,u'table-row'),
+ (TABLENS,u'table-row-group'),
+ (TABLENS,u'table-rows'),
+ (TEXTNS,u'soft-page-break'),
+ ),
+ (TABLENS,u'table-rows') : (
+ (TABLENS,u'table-row'),
+ (TEXTNS,u'soft-page-break'),
+ ),
+# allowed_children
+ (TABLENS,u'table-source') : (
+ ),
+ (TABLENS,u'table-template') : (
+ (TABLENS,u'body'),
+ (TABLENS,u'even-columns'),
+ (TABLENS,u'even-rows'),
+ (TABLENS,u'first-column'),
+ (TABLENS,u'first-row'),
+ (TABLENS,u'last-column'),
+ (TABLENS,u'last-row'),
+ (TABLENS,u'odd-columns'),
+ (TABLENS,u'odd-rows'),
+ ),
+ (TABLENS,u'target-range-address') : (
+ ),
+ (TABLENS,u'tracked-changes') : (
+ (TABLENS,u'cell-content-change'),
+ (TABLENS,u'deletion'),
+ (TABLENS,u'insertion'),
+ (TABLENS,u'movement'),
+ ),
+# allowed_children
+ (TEXTNS,u'a') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'annotation'),
+ (OFFICENS,u'event-listeners'),
+ (PRESENTATIONNS,u'date-time'),
+ (PRESENTATIONNS,u'footer'),
+ (PRESENTATIONNS,u'header'),
+ (TEXTNS,u'a'),
+ (TEXTNS,u'alphabetical-index-mark'),
+ (TEXTNS,u'alphabetical-index-mark-end'),
+ (TEXTNS,u'alphabetical-index-mark-start'),
+ (TEXTNS,u'author-initials'),
+ (TEXTNS,u'author-name'),
+ (TEXTNS,u'bibliography-mark'),
+ (TEXTNS,u'bookmark'),
+ (TEXTNS,u'bookmark-end'),
+ (TEXTNS,u'bookmark-ref'),
+ (TEXTNS,u'bookmark-start'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'chapter'),
+ (TEXTNS,u'conditional-text'),
+ (TEXTNS,u'creation-date'),
+ (TEXTNS,u'creation-time'),
+ (TEXTNS,u'creator'),
+ (TEXTNS,u'database-display'),
+ (TEXTNS,u'database-name'),
+ (TEXTNS,u'database-next'),
+ (TEXTNS,u'database-row-number'),
+ (TEXTNS,u'database-row-select'),
+ (TEXTNS,u'date'),
+ (TEXTNS,u'dde-connection'),
+ (TEXTNS,u'description'),
+ (TEXTNS,u'editing-cycles'),
+ (TEXTNS,u'editing-duration'),
+ (TEXTNS,u'execute-macro'),
+ (TEXTNS,u'expression'),
+ (TEXTNS,u'file-name'),
+ (TEXTNS,u'hidden-paragraph'),
+ (TEXTNS,u'hidden-text'),
+ (TEXTNS,u'initial-creator'),
+ (TEXTNS,u'keywords'),
+ (TEXTNS,u'line-break'),
+ (TEXTNS,u'measure'),
+ (TEXTNS,u'modification-date'),
+ (TEXTNS,u'modification-time'),
+ (TEXTNS,u'note'),
+ (TEXTNS,u'note-ref'),
+ (TEXTNS,u'page-count'),
+ (TEXTNS,u'paragraph-count'),
+ (TEXTNS,u'word-count'),
+ (TEXTNS,u'character-count'),
+ (TEXTNS,u'table-count'),
+ (TEXTNS,u'image-count'),
+ (TEXTNS,u'object-count'),
+ (TEXTNS,u'page-continuation'),
+ (TEXTNS,u'page-number'),
+ (TEXTNS,u'page-variable-get'),
+ (TEXTNS,u'page-variable-set'),
+ (TEXTNS,u'placeholder'),
+ (TEXTNS,u'print-date'),
+ (TEXTNS,u'print-time'),
+ (TEXTNS,u'printed-by'),
+ (TEXTNS,u'reference-mark'),
+ (TEXTNS,u'reference-mark-end'),
+ (TEXTNS,u'reference-mark-start'),
+ (TEXTNS,u'reference-ref'),
+ (TEXTNS,u'ruby'),
+ (TEXTNS,u's'),
+ (TEXTNS,u'script'),
+ (TEXTNS,u'sender-city'),
+ (TEXTNS,u'sender-company'),
+ (TEXTNS,u'sender-country'),
+ (TEXTNS,u'sender-email'),
+ (TEXTNS,u'sender-fax'),
+ (TEXTNS,u'sender-firstname'),
+ (TEXTNS,u'sender-initials'),
+ (TEXTNS,u'sender-lastname'),
+ (TEXTNS,u'sender-phone-private'),
+ (TEXTNS,u'sender-phone-work'),
+ (TEXTNS,u'sender-position'),
+ (TEXTNS,u'sender-postal-code'),
+ (TEXTNS,u'sender-state-or-province'),
+ (TEXTNS,u'sender-street'),
+ (TEXTNS,u'sender-title'),
+ (TEXTNS,u'sequence'),
+ (TEXTNS,u'sequence-ref'),
+ (TEXTNS,u'sheet-name'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'span'),
+ (TEXTNS,u'subject'),
+ (TEXTNS,u'tab'),
+ (TEXTNS,u'table-formula'),
+ (TEXTNS,u'template-name'),
+ (TEXTNS,u'text-input'),
+ (TEXTNS,u'time'),
+ (TEXTNS,u'title'),
+ (TEXTNS,u'toc-mark'),
+ (TEXTNS,u'toc-mark-end'),
+ (TEXTNS,u'toc-mark-start'),
+ (TEXTNS,u'user-defined'),
+ (TEXTNS,u'user-field-get'),
+ (TEXTNS,u'user-field-input'),
+ (TEXTNS,u'user-index-mark'),
+ (TEXTNS,u'user-index-mark-end'),
+ (TEXTNS,u'user-index-mark-start'),
+ (TEXTNS,u'variable-get'),
+ (TEXTNS,u'variable-input'),
+ (TEXTNS,u'variable-set'),
+ ),
+# allowed_children
+ (TEXTNS,u'alphabetical-index') : (
+ (TEXTNS,u'alphabetical-index-source'),
+ (TEXTNS,u'index-body'),
+ ),
+ (TEXTNS,u'alphabetical-index-auto-mark-file') : (
+ ),
+ (TEXTNS,u'alphabetical-index-entry-template') : (
+ (TEXTNS,u'index-entry-chapter'),
+ (TEXTNS,u'index-entry-page-number'),
+ (TEXTNS,u'index-entry-span'),
+ (TEXTNS,u'index-entry-tab-stop'),
+ (TEXTNS,u'index-entry-text'),
+ ),
+ (TEXTNS,u'alphabetical-index-mark') : (
+ ),
+ (TEXTNS,u'alphabetical-index-mark-end') : (
+ ),
+ (TEXTNS,u'alphabetical-index-mark-start') : (
+ ),
+ (TEXTNS,u'alphabetical-index-source') : (
+ (TEXTNS,u'alphabetical-index-entry-template'),
+ (TEXTNS,u'index-title-template'),
+ ),
+ (TEXTNS,u'author-initials') : (
+ ),
+ (TEXTNS,u'author-name') : (
+ ),
+ (TEXTNS,u'bibliography') : (
+ (TEXTNS,u'bibliography-source'),
+ (TEXTNS,u'index-body'),
+ ),
+ (TEXTNS,u'bibliography-configuration') : (
+ (TEXTNS,u'sort-key'),
+ ),
+ (TEXTNS,u'bibliography-entry-template') : (
+ (TEXTNS,u'index-entry-bibliography'),
+ (TEXTNS,u'index-entry-span'),
+ (TEXTNS,u'index-entry-tab-stop'),
+ ),
+# allowed_children
+ (TEXTNS,u'bibliography-mark') : (
+ ),
+ (TEXTNS,u'bibliography-source') : (
+ (TEXTNS,u'bibliography-entry-template'),
+ (TEXTNS,u'index-title-template'),
+ ),
+ (TEXTNS,u'bookmark') : (
+ ),
+ (TEXTNS,u'bookmark-end') : (
+ ),
+ (TEXTNS,u'bookmark-ref') : (
+ ),
+ (TEXTNS,u'bookmark-start') : (
+ ),
+ (TEXTNS,u'change') : (
+ ),
+ (TEXTNS,u'change-end') : (
+ ),
+ (TEXTNS,u'change-start') : (
+ ),
+ (TEXTNS,u'changed-region') : (
+ (TEXTNS,u'deletion'),
+ (TEXTNS,u'format-change'),
+ (TEXTNS,u'insertion'),
+ ),
+ (TEXTNS,u'chapter') : (
+ ),
+ (TEXTNS,u'character-count') : (
+ ),
+ (TEXTNS,u'conditional-text') : (
+ ),
+ (TEXTNS,u'creation-date') : (
+ ),
+ (TEXTNS,u'creation-time') : (
+ ),
+ (TEXTNS,u'creator') : (
+ ),
+ (TEXTNS,u'database-display') : (
+ (FORMNS,u'connection-resource'),
+ ),
+ (TEXTNS,u'database-name') : (
+ (FORMNS,u'connection-resource'),
+ ),
+ (TEXTNS,u'database-next') : (
+ (FORMNS,u'connection-resource'),
+ ),
+ (TEXTNS,u'database-row-number') : (
+ (FORMNS,u'connection-resource'),
+ ),
+ (TEXTNS,u'database-row-select') : (
+ (FORMNS,u'connection-resource'),
+ ),
+ (TEXTNS,u'date') : (
+ ),
+ (TEXTNS,u'dde-connection') : (
+ ),
+ (TEXTNS,u'dde-connection-decl') : (
+ ),
+ (TEXTNS,u'dde-connection-decls') : (
+ (TEXTNS,u'dde-connection-decl'),
+ ),
+# allowed_children
+ (TEXTNS,u'deletion') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'change-info'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'numbered-paragraph'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'user-index'),
+ ),
+ (TEXTNS,u'description') : (
+ ),
+ (TEXTNS,u'editing-cycles') : (
+ ),
+ (TEXTNS,u'editing-duration') : (
+ ),
+ (TEXTNS,u'execute-macro') : (
+ (OFFICENS,u'event-listeners'),
+ ),
+ (TEXTNS,u'expression') : (
+ ),
+ (TEXTNS,u'file-name') : (
+ ),
+ (TEXTNS,u'format-change') : (
+ (OFFICENS,u'change-info'),
+ ),
+# allowed_children
+ (TEXTNS,u'h') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'annotation'),
+ (PRESENTATIONNS,u'date-time'),
+ (PRESENTATIONNS,u'footer'),
+ (PRESENTATIONNS,u'header'),
+ (TEXTNS,u'a'),
+ (TEXTNS,u'alphabetical-index-mark'),
+ (TEXTNS,u'alphabetical-index-mark-end'),
+ (TEXTNS,u'alphabetical-index-mark-start'),
+ (TEXTNS,u'author-initials'),
+ (TEXTNS,u'author-name'),
+ (TEXTNS,u'bibliography-mark'),
+ (TEXTNS,u'bookmark'),
+ (TEXTNS,u'bookmark-end'),
+ (TEXTNS,u'bookmark-ref'),
+ (TEXTNS,u'bookmark-start'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'chapter'),
+ (TEXTNS,u'conditional-text'),
+ (TEXTNS,u'creation-date'),
+ (TEXTNS,u'creation-time'),
+ (TEXTNS,u'creator'),
+ (TEXTNS,u'database-display'),
+ (TEXTNS,u'database-name'),
+ (TEXTNS,u'database-next'),
+ (TEXTNS,u'database-row-number'),
+ (TEXTNS,u'database-row-select'),
+ (TEXTNS,u'date'),
+ (TEXTNS,u'dde-connection'),
+ (TEXTNS,u'description'),
+ (TEXTNS,u'editing-cycles'),
+ (TEXTNS,u'editing-duration'),
+ (TEXTNS,u'execute-macro'),
+ (TEXTNS,u'expression'),
+ (TEXTNS,u'file-name'),
+ (TEXTNS,u'hidden-paragraph'),
+ (TEXTNS,u'hidden-text'),
+ (TEXTNS,u'initial-creator'),
+ (TEXTNS,u'keywords'),
+ (TEXTNS,u'line-break'),
+ (TEXTNS,u'measure'),
+ (TEXTNS,u'modification-date'),
+ (TEXTNS,u'modification-time'),
+ (TEXTNS,u'note'),
+ (TEXTNS,u'note-ref'),
+ (TEXTNS,u'number'),
+ (TEXTNS,u'page-count'),
+ (TEXTNS,u'paragraph-count'),
+ (TEXTNS,u'word-count'),
+ (TEXTNS,u'character-count'),
+ (TEXTNS,u'table-count'),
+ (TEXTNS,u'image-count'),
+ (TEXTNS,u'object-count'),
+ (TEXTNS,u'page-continuation'),
+ (TEXTNS,u'page-number'),
+ (TEXTNS,u'page-variable-get'),
+ (TEXTNS,u'page-variable-set'),
+ (TEXTNS,u'placeholder'),
+ (TEXTNS,u'print-date'),
+ (TEXTNS,u'print-time'),
+ (TEXTNS,u'printed-by'),
+ (TEXTNS,u'reference-mark'),
+ (TEXTNS,u'reference-mark-end'),
+ (TEXTNS,u'reference-mark-start'),
+ (TEXTNS,u'reference-ref'),
+ (TEXTNS,u'ruby'),
+ (TEXTNS,u's'),
+ (TEXTNS,u'script'),
+ (TEXTNS,u'sender-city'),
+ (TEXTNS,u'sender-company'),
+ (TEXTNS,u'sender-country'),
+ (TEXTNS,u'sender-email'),
+ (TEXTNS,u'sender-fax'),
+ (TEXTNS,u'sender-firstname'),
+ (TEXTNS,u'sender-initials'),
+ (TEXTNS,u'sender-lastname'),
+ (TEXTNS,u'sender-phone-private'),
+ (TEXTNS,u'sender-phone-work'),
+ (TEXTNS,u'sender-position'),
+ (TEXTNS,u'sender-postal-code'),
+ (TEXTNS,u'sender-state-or-province'),
+ (TEXTNS,u'sender-street'),
+ (TEXTNS,u'sender-title'),
+ (TEXTNS,u'sequence'),
+ (TEXTNS,u'sequence-ref'),
+ (TEXTNS,u'sheet-name'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'span'),
+ (TEXTNS,u'subject'),
+ (TEXTNS,u'tab'),
+ (TEXTNS,u'table-formula'),
+ (TEXTNS,u'template-name'),
+ (TEXTNS,u'text-input'),
+ (TEXTNS,u'time'),
+ (TEXTNS,u'title'),
+ (TEXTNS,u'toc-mark'),
+ (TEXTNS,u'toc-mark-end'),
+ (TEXTNS,u'toc-mark-start'),
+ (TEXTNS,u'user-defined'),
+ (TEXTNS,u'user-field-get'),
+ (TEXTNS,u'user-field-input'),
+ (TEXTNS,u'user-index-mark'),
+ (TEXTNS,u'user-index-mark-end'),
+ (TEXTNS,u'user-index-mark-start'),
+ (TEXTNS,u'variable-get'),
+ (TEXTNS,u'variable-input'),
+ (TEXTNS,u'variable-set'),
+ ),
+# allowed_children
+ (TEXTNS,u'hidden-paragraph') : (
+ ),
+ (TEXTNS,u'hidden-text') : (
+ ),
+ (TEXTNS,u'illustration-index') : (
+ (TEXTNS,u'illustration-index-source'),
+ (TEXTNS,u'index-body'),
+ ),
+ (TEXTNS,u'illustration-index-entry-template') : (
+ (TEXTNS,u'index-entry-page-number'),
+ (TEXTNS,u'index-entry-span'),
+ (TEXTNS,u'index-entry-tab-stop'),
+ (TEXTNS,u'index-entry-text'),
+ ),
+ (TEXTNS,u'illustration-index-source') : (
+ (TEXTNS,u'illustration-index-entry-template'),
+ (TEXTNS,u'index-title-template'),
+ ),
+ (TEXTNS,u'image-count') : (
+ ),
+# allowed_children
+ (TEXTNS,u'index-body') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'index-title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'numbered-paragraph'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'user-index'),
+ ),
+ (TEXTNS,u'index-entry-bibliography') : (
+ ),
+ (TEXTNS,u'index-entry-chapter') : (
+ ),
+ (TEXTNS,u'index-entry-link-end') : (
+ ),
+ (TEXTNS,u'index-entry-link-start') : (
+ ),
+ (TEXTNS,u'index-entry-page-number') : (
+ ),
+ (TEXTNS,u'index-entry-span') : (
+ ),
+ (TEXTNS,u'index-entry-tab-stop') : (
+ ),
+ (TEXTNS,u'index-entry-text') : (
+ ),
+ (TEXTNS,u'index-source-style') : (
+ ),
+ (TEXTNS,u'index-source-styles') : (
+ (TEXTNS,u'index-source-style'),
+ ),
+# allowed_children
+ (TEXTNS,u'index-title') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'index-title'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'numbered-paragraph'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'user-index'),
+ ),
+ (TEXTNS,u'index-title-template') : (
+ ),
+ (TEXTNS,u'initial-creator') : (
+ ),
+ (TEXTNS,u'insertion') : (
+ (OFFICENS,u'change-info'),
+ ),
+ (TEXTNS,u'keywords') : (
+ ),
+ (TEXTNS,u'line-break') : (
+ ),
+ (TEXTNS,u'linenumbering-configuration') : (
+ (TEXTNS,u'linenumbering-separator'),
+ ),
+ (TEXTNS,u'linenumbering-separator') : (
+ ),
+ (TEXTNS,u'list') : (
+ (TEXTNS,u'list-header'),
+ (TEXTNS,u'list-item'),
+ ),
+ (TEXTNS,u'list-header') : (
+ (TEXTNS,u'h'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'number'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'soft-page-break'),
+ ),
+ (TEXTNS,u'list-item') : (
+ (TEXTNS,u'h'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'number'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'soft-page-break'),
+ ),
+ (TEXTNS,u'list-level-style-bullet') : (
+ (STYLENS,u'list-level-properties'),
+ (STYLENS,u'text-properties'),
+ ),
+ (TEXTNS,u'list-level-style-image') : (
+ (OFFICENS,u'binary-data'),
+ (STYLENS,u'list-level-properties'),
+ ),
+ (TEXTNS,u'list-level-style-number') : (
+ (STYLENS,u'list-level-properties'),
+ (STYLENS,u'text-properties'),
+ ),
+ (TEXTNS,u'list-style') : (
+ (TEXTNS,u'list-level-style-bullet'),
+ (TEXTNS,u'list-level-style-image'),
+ (TEXTNS,u'list-level-style-number'),
+ ),
+ (TEXTNS,u'measure') : (
+ ),
+ (TEXTNS,u'modification-date') : (
+ ),
+ (TEXTNS,u'modification-time') : (
+ ),
+ (TEXTNS,u'note') : (
+ (TEXTNS,u'note-body'),
+ (TEXTNS,u'note-citation'),
+ ),
+# allowed_children
+ (TEXTNS,u'note-body') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'numbered-paragraph'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'user-index'),
+ ),
+ (TEXTNS,u'note-citation') : (
+ ),
+ (TEXTNS,u'note-continuation-notice-backward') : (
+ ),
+ (TEXTNS,u'note-continuation-notice-forward') : (
+ ),
+ (TEXTNS,u'note-ref') : (
+ ),
+ (TEXTNS,u'notes-configuration') : (
+ (TEXTNS,u'note-continuation-notice-backward'),
+ (TEXTNS,u'note-continuation-notice-forward'),
+ ),
+ (TEXTNS,u'number') : (
+ ),
+ (TEXTNS,u'numbered-paragraph') : (
+ (TEXTNS,u'h'),
+ (TEXTNS,u'number'),
+ (TEXTNS,u'p'),
+ ),
+ (TEXTNS,u'object-count') : (
+ ),
+ (TEXTNS,u'object-index') : (
+ (TEXTNS,u'index-body'),
+ (TEXTNS,u'object-index-source'),
+ ),
+ (TEXTNS,u'object-index-entry-template') : (
+ (TEXTNS,u'index-entry-page-number'),
+ (TEXTNS,u'index-entry-span'),
+ (TEXTNS,u'index-entry-tab-stop'),
+ (TEXTNS,u'index-entry-text'),
+ ),
+ (TEXTNS,u'object-index-source') : (
+ (TEXTNS,u'index-title-template'),
+ (TEXTNS,u'object-index-entry-template'),
+ ),
+ (TEXTNS,u'outline-level-style') : (
+ (STYLENS,u'list-level-properties'),
+ (STYLENS,u'text-properties'),
+ ),
+ (TEXTNS,u'outline-style') : (
+ (TEXTNS,u'outline-level-style'),
+ ),
+# allowed_children
+ (TEXTNS,u'p') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'annotation'),
+ (PRESENTATIONNS,u'date-time'),
+ (PRESENTATIONNS,u'footer'),
+ (PRESENTATIONNS,u'header'),
+ (TEXTNS,u'a'),
+ (TEXTNS,u'alphabetical-index-mark'),
+ (TEXTNS,u'alphabetical-index-mark-end'),
+ (TEXTNS,u'alphabetical-index-mark-start'),
+ (TEXTNS,u'author-initials'),
+ (TEXTNS,u'author-name'),
+ (TEXTNS,u'bibliography-mark'),
+ (TEXTNS,u'bookmark'),
+ (TEXTNS,u'bookmark-end'),
+ (TEXTNS,u'bookmark-ref'),
+ (TEXTNS,u'bookmark-start'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'chapter'),
+ (TEXTNS,u'character-count'),
+ (TEXTNS,u'conditional-text'),
+ (TEXTNS,u'creation-date'),
+ (TEXTNS,u'creation-time'),
+ (TEXTNS,u'creator'),
+ (TEXTNS,u'database-display'),
+ (TEXTNS,u'database-name'),
+ (TEXTNS,u'database-next'),
+ (TEXTNS,u'database-row-number'),
+ (TEXTNS,u'database-row-select'),
+ (TEXTNS,u'date'),
+ (TEXTNS,u'dde-connection'),
+ (TEXTNS,u'description'),
+ (TEXTNS,u'editing-cycles'),
+ (TEXTNS,u'editing-duration'),
+ (TEXTNS,u'execute-macro'),
+ (TEXTNS,u'expression'),
+ (TEXTNS,u'file-name'),
+ (TEXTNS,u'hidden-paragraph'),
+ (TEXTNS,u'hidden-text'),
+ (TEXTNS,u'image-count'),
+ (TEXTNS,u'initial-creator'),
+ (TEXTNS,u'keywords'),
+ (TEXTNS,u'line-break'),
+ (TEXTNS,u'measure'),
+ (TEXTNS,u'modification-date'),
+ (TEXTNS,u'modification-time'),
+ (TEXTNS,u'note'),
+ (TEXTNS,u'note-ref'),
+ (TEXTNS,u'object-count'),
+ (TEXTNS,u'page-continuation'),
+ (TEXTNS,u'page-count'),
+ (TEXTNS,u'page-number'),
+ (TEXTNS,u'page-variable-get'),
+ (TEXTNS,u'page-variable-set'),
+ (TEXTNS,u'paragraph-count'),
+ (TEXTNS,u'placeholder'),
+ (TEXTNS,u'print-date'),
+ (TEXTNS,u'printed-by'),
+ (TEXTNS,u'print-time'),
+ (TEXTNS,u'reference-mark'),
+ (TEXTNS,u'reference-mark-end'),
+ (TEXTNS,u'reference-mark-start'),
+ (TEXTNS,u'reference-ref'),
+ (TEXTNS,u'ruby'),
+ (TEXTNS,u's'),
+ (TEXTNS,u'script'),
+ (TEXTNS,u'sender-city'),
+ (TEXTNS,u'sender-company'),
+ (TEXTNS,u'sender-country'),
+ (TEXTNS,u'sender-email'),
+ (TEXTNS,u'sender-fax'),
+ (TEXTNS,u'sender-firstname'),
+ (TEXTNS,u'sender-initials'),
+ (TEXTNS,u'sender-lastname'),
+ (TEXTNS,u'sender-phone-private'),
+ (TEXTNS,u'sender-phone-work'),
+ (TEXTNS,u'sender-position'),
+ (TEXTNS,u'sender-postal-code'),
+ (TEXTNS,u'sender-state-or-province'),
+ (TEXTNS,u'sender-street'),
+ (TEXTNS,u'sender-title'),
+ (TEXTNS,u'sequence'),
+ (TEXTNS,u'sequence-ref'),
+ (TEXTNS,u'sheet-name'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'span'),
+ (TEXTNS,u'subject'),
+ (TEXTNS,u'tab'),
+ (TEXTNS,u'table-count'),
+ (TEXTNS,u'table-formula'),
+ (TEXTNS,u'template-name'),
+ (TEXTNS,u'text-input'),
+ (TEXTNS,u'time'),
+ (TEXTNS,u'title'),
+ (TEXTNS,u'toc-mark'),
+ (TEXTNS,u'toc-mark-end'),
+ (TEXTNS,u'toc-mark-start'),
+ (TEXTNS,u'user-defined'),
+ (TEXTNS,u'user-field-get'),
+ (TEXTNS,u'user-field-input'),
+ (TEXTNS,u'user-index-mark'),
+ (TEXTNS,u'user-index-mark-end'),
+ (TEXTNS,u'user-index-mark-start'),
+ (TEXTNS,u'variable-get'),
+ (TEXTNS,u'variable-input'),
+ (TEXTNS,u'variable-set'),
+ (TEXTNS,u'word-count'),
+ ),
+ (TEXTNS,u'page') : (
+ ),
+ (TEXTNS,u'page-count') : (
+ ),
+ (TEXTNS,u'page-continuation') : (
+ ),
+ (TEXTNS,u'page-number') : (
+ ),
+ (TEXTNS,u'page-sequence') : (
+ (TEXTNS,u'page'),
+ ),
+ (TEXTNS,u'page-variable-get') : (
+ ),
+ (TEXTNS,u'page-variable-set') : (
+ ),
+ (TEXTNS,u'paragraph-count') : (
+ ),
+ (TEXTNS,u'placeholder') : (
+ ),
+ (TEXTNS,u'print-date') : (
+ ),
+ (TEXTNS,u'print-time') : (
+ ),
+ (TEXTNS,u'printed-by') : (
+ ),
+ (TEXTNS,u'reference-mark') : (
+ ),
+ (TEXTNS,u'reference-mark-end') : (
+ ),
+# allowed_children
+ (TEXTNS,u'reference-mark-start') : (
+ ),
+ (TEXTNS,u'reference-ref') : (
+ ),
+ (TEXTNS,u'ruby') : (
+ (TEXTNS,u'ruby-base'),
+ (TEXTNS,u'ruby-text'),
+ ),
+ (TEXTNS,u'ruby-base') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'annotation'),
+ (PRESENTATIONNS,u'date-time'),
+ (PRESENTATIONNS,u'footer'),
+ (PRESENTATIONNS,u'header'),
+ (TEXTNS,u'a'),
+ (TEXTNS,u'alphabetical-index-mark'),
+ (TEXTNS,u'alphabetical-index-mark-end'),
+ (TEXTNS,u'alphabetical-index-mark-start'),
+ (TEXTNS,u'author-initials'),
+ (TEXTNS,u'author-name'),
+ (TEXTNS,u'bibliography-mark'),
+ (TEXTNS,u'bookmark'),
+ (TEXTNS,u'bookmark-end'),
+ (TEXTNS,u'bookmark-ref'),
+ (TEXTNS,u'bookmark-start'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'chapter'),
+ (TEXTNS,u'conditional-text'),
+ (TEXTNS,u'creation-date'),
+ (TEXTNS,u'creation-time'),
+ (TEXTNS,u'creator'),
+ (TEXTNS,u'database-display'),
+ (TEXTNS,u'database-name'),
+ (TEXTNS,u'database-next'),
+ (TEXTNS,u'database-row-number'),
+ (TEXTNS,u'database-row-select'),
+ (TEXTNS,u'date'),
+ (TEXTNS,u'dde-connection'),
+ (TEXTNS,u'description'),
+ (TEXTNS,u'editing-cycles'),
+ (TEXTNS,u'editing-duration'),
+ (TEXTNS,u'execute-macro'),
+ (TEXTNS,u'expression'),
+ (TEXTNS,u'file-name'),
+ (TEXTNS,u'hidden-paragraph'),
+ (TEXTNS,u'hidden-text'),
+ (TEXTNS,u'initial-creator'),
+ (TEXTNS,u'keywords'),
+ (TEXTNS,u'line-break'),
+ (TEXTNS,u'measure'),
+ (TEXTNS,u'modification-date'),
+ (TEXTNS,u'modification-time'),
+ (TEXTNS,u'note'),
+ (TEXTNS,u'note-ref'),
+ (TEXTNS,u'page-count'),
+ (TEXTNS,u'paragraph-count'),
+ (TEXTNS,u'word-count'),
+ (TEXTNS,u'character-count'),
+ (TEXTNS,u'table-count'),
+ (TEXTNS,u'image-count'),
+ (TEXTNS,u'object-count'),
+ (TEXTNS,u'page-continuation'),
+ (TEXTNS,u'page-number'),
+ (TEXTNS,u'page-variable-get'),
+ (TEXTNS,u'page-variable-set'),
+ (TEXTNS,u'placeholder'),
+ (TEXTNS,u'print-date'),
+ (TEXTNS,u'print-time'),
+ (TEXTNS,u'printed-by'),
+ (TEXTNS,u'reference-mark'),
+ (TEXTNS,u'reference-mark-end'),
+ (TEXTNS,u'reference-mark-start'),
+ (TEXTNS,u'reference-ref'),
+ (TEXTNS,u'ruby'),
+ (TEXTNS,u's'),
+ (TEXTNS,u'script'),
+ (TEXTNS,u'sender-city'),
+ (TEXTNS,u'sender-company'),
+ (TEXTNS,u'sender-country'),
+ (TEXTNS,u'sender-email'),
+ (TEXTNS,u'sender-fax'),
+ (TEXTNS,u'sender-firstname'),
+ (TEXTNS,u'sender-initials'),
+ (TEXTNS,u'sender-lastname'),
+ (TEXTNS,u'sender-phone-private'),
+ (TEXTNS,u'sender-phone-work'),
+ (TEXTNS,u'sender-position'),
+ (TEXTNS,u'sender-postal-code'),
+ (TEXTNS,u'sender-state-or-province'),
+ (TEXTNS,u'sender-street'),
+ (TEXTNS,u'sender-title'),
+ (TEXTNS,u'sequence'),
+ (TEXTNS,u'sequence-ref'),
+ (TEXTNS,u'sheet-name'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'span'),
+ (TEXTNS,u'subject'),
+ (TEXTNS,u'tab'),
+ (TEXTNS,u'table-formula'),
+ (TEXTNS,u'template-name'),
+ (TEXTNS,u'text-input'),
+ (TEXTNS,u'time'),
+ (TEXTNS,u'title'),
+ (TEXTNS,u'toc-mark'),
+ (TEXTNS,u'toc-mark-end'),
+ (TEXTNS,u'toc-mark-start'),
+ (TEXTNS,u'user-defined'),
+ (TEXTNS,u'user-field-get'),
+ (TEXTNS,u'user-field-input'),
+ (TEXTNS,u'user-index-mark'),
+ (TEXTNS,u'user-index-mark-end'),
+ (TEXTNS,u'user-index-mark-start'),
+ (TEXTNS,u'variable-get'),
+ (TEXTNS,u'variable-input'),
+ (TEXTNS,u'variable-set'),
+ ),
+# allowed_children
+ (TEXTNS,u'ruby-text') : (
+ ),
+ (TEXTNS,u's') : (
+ ),
+ (TEXTNS,u'script') : (
+ ),
+ (TEXTNS,u'section') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'dde-source'),
+ (TABLENS,u'table'),
+ (TEXTNS,u'alphabetical-index'),
+ (TEXTNS,u'bibliography'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'illustration-index'),
+ (TEXTNS,u'list'),
+ (TEXTNS,u'numbered-paragraph'),
+ (TEXTNS,u'object-index'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'section'),
+ (TEXTNS,u'section-source'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'table-index'),
+ (TEXTNS,u'table-of-content'),
+ (TEXTNS,u'user-index'),
+ ),
+ (TEXTNS,u'section-source') : (
+ ),
+ (TEXTNS,u'sender-city') : (
+ ),
+ (TEXTNS,u'sender-company') : (
+ ),
+ (TEXTNS,u'sender-country') : (
+ ),
+# allowed_children
+ (TEXTNS,u'sender-email') : (
+ ),
+ (TEXTNS,u'sender-fax') : (
+ ),
+ (TEXTNS,u'sender-firstname') : (
+ ),
+ (TEXTNS,u'sender-initials') : (
+ ),
+ (TEXTNS,u'sender-lastname') : (
+ ),
+ (TEXTNS,u'sender-phone-private') : (
+ ),
+ (TEXTNS,u'sender-phone-work') : (
+ ),
+ (TEXTNS,u'sender-position') : (
+ ),
+ (TEXTNS,u'sender-postal-code') : (
+ ),
+ (TEXTNS,u'sender-state-or-province') : (
+ ),
+ (TEXTNS,u'sender-street') : (
+ ),
+ (TEXTNS,u'sender-title') : (
+ ),
+ (TEXTNS,u'sequence') : (
+ ),
+ (TEXTNS,u'sequence-decl') : (
+ ),
+ (TEXTNS,u'sequence-decls') : (
+ (TEXTNS,u'sequence-decl'),
+ ),
+ (TEXTNS,u'sequence-ref') : (
+ ),
+ (TEXTNS,u'sheet-name') : (
+ ),
+ (TEXTNS,u'soft-page-break') : (
+ ),
+ (TEXTNS,u'sort-key') : (
+ ),
+# allowed_children
+ (TEXTNS,u'span') : (
+ (DR3DNS,u'scene'),
+ (DRAWNS,u'a'),
+ (DRAWNS,u'caption'),
+ (DRAWNS,u'circle'),
+ (DRAWNS,u'connector'),
+ (DRAWNS,u'control'),
+ (DRAWNS,u'custom-shape'),
+ (DRAWNS,u'ellipse'),
+ (DRAWNS,u'frame'),
+ (DRAWNS,u'g'),
+ (DRAWNS,u'line'),
+ (DRAWNS,u'measure'),
+ (DRAWNS,u'page-thumbnail'),
+ (DRAWNS,u'path'),
+ (DRAWNS,u'polygon'),
+ (DRAWNS,u'polyline'),
+ (DRAWNS,u'rect'),
+ (DRAWNS,u'regular-polygon'),
+ (OFFICENS,u'annotation'),
+ (PRESENTATIONNS,u'date-time'),
+ (PRESENTATIONNS,u'footer'),
+ (PRESENTATIONNS,u'header'),
+ (TEXTNS,u'a'),
+ (TEXTNS,u'alphabetical-index-mark'),
+ (TEXTNS,u'alphabetical-index-mark-end'),
+ (TEXTNS,u'alphabetical-index-mark-start'),
+ (TEXTNS,u'author-initials'),
+ (TEXTNS,u'author-name'),
+ (TEXTNS,u'bibliography-mark'),
+ (TEXTNS,u'bookmark'),
+ (TEXTNS,u'bookmark-end'),
+ (TEXTNS,u'bookmark-ref'),
+ (TEXTNS,u'bookmark-start'),
+ (TEXTNS,u'change'),
+ (TEXTNS,u'change-end'),
+ (TEXTNS,u'change-start'),
+ (TEXTNS,u'chapter'),
+ (TEXTNS,u'conditional-text'),
+ (TEXTNS,u'creation-date'),
+ (TEXTNS,u'creation-time'),
+ (TEXTNS,u'creator'),
+ (TEXTNS,u'database-display'),
+ (TEXTNS,u'database-name'),
+ (TEXTNS,u'database-next'),
+ (TEXTNS,u'database-row-number'),
+ (TEXTNS,u'database-row-select'),
+ (TEXTNS,u'date'),
+ (TEXTNS,u'dde-connection'),
+ (TEXTNS,u'description'),
+ (TEXTNS,u'editing-cycles'),
+ (TEXTNS,u'editing-duration'),
+ (TEXTNS,u'execute-macro'),
+ (TEXTNS,u'expression'),
+ (TEXTNS,u'file-name'),
+ (TEXTNS,u'hidden-paragraph'),
+ (TEXTNS,u'hidden-text'),
+ (TEXTNS,u'initial-creator'),
+ (TEXTNS,u'keywords'),
+ (TEXTNS,u'line-break'),
+ (TEXTNS,u'measure'),
+ (TEXTNS,u'modification-date'),
+ (TEXTNS,u'modification-time'),
+ (TEXTNS,u'note'),
+ (TEXTNS,u'note-ref'),
+ (TEXTNS,u'page-count'),
+ (TEXTNS,u'paragraph-count'),
+ (TEXTNS,u'word-count'),
+ (TEXTNS,u'character-count'),
+ (TEXTNS,u'table-count'),
+ (TEXTNS,u'image-count'),
+ (TEXTNS,u'object-count'),
+ (TEXTNS,u'page-continuation'),
+ (TEXTNS,u'page-number'),
+ (TEXTNS,u'page-variable-get'),
+ (TEXTNS,u'page-variable-set'),
+ (TEXTNS,u'placeholder'),
+ (TEXTNS,u'print-date'),
+ (TEXTNS,u'print-time'),
+ (TEXTNS,u'printed-by'),
+ (TEXTNS,u'reference-mark'),
+ (TEXTNS,u'reference-mark-end'),
+ (TEXTNS,u'reference-mark-start'),
+ (TEXTNS,u'reference-ref'),
+ (TEXTNS,u'ruby'),
+ (TEXTNS,u's'),
+ (TEXTNS,u'script'),
+ (TEXTNS,u'sender-city'),
+ (TEXTNS,u'sender-company'),
+ (TEXTNS,u'sender-country'),
+ (TEXTNS,u'sender-email'),
+ (TEXTNS,u'sender-fax'),
+ (TEXTNS,u'sender-firstname'),
+ (TEXTNS,u'sender-initials'),
+ (TEXTNS,u'sender-lastname'),
+ (TEXTNS,u'sender-phone-private'),
+ (TEXTNS,u'sender-phone-work'),
+ (TEXTNS,u'sender-position'),
+ (TEXTNS,u'sender-postal-code'),
+ (TEXTNS,u'sender-state-or-province'),
+ (TEXTNS,u'sender-street'),
+ (TEXTNS,u'sender-title'),
+ (TEXTNS,u'sequence'),
+ (TEXTNS,u'sequence-ref'),
+ (TEXTNS,u'sheet-name'),
+ (TEXTNS,u'soft-page-break'),
+ (TEXTNS,u'span'),
+ (TEXTNS,u'subject'),
+ (TEXTNS,u'tab'),
+ (TEXTNS,u'table-formula'),
+ (TEXTNS,u'template-name'),
+ (TEXTNS,u'text-input'),
+ (TEXTNS,u'time'),
+ (TEXTNS,u'title'),
+ (TEXTNS,u'toc-mark'),
+ (TEXTNS,u'toc-mark-end'),
+ (TEXTNS,u'toc-mark-start'),
+ (TEXTNS,u'user-defined'),
+ (TEXTNS,u'user-field-get'),
+ (TEXTNS,u'user-field-input'),
+ (TEXTNS,u'user-index-mark'),
+ (TEXTNS,u'user-index-mark-end'),
+ (TEXTNS,u'user-index-mark-start'),
+ (TEXTNS,u'variable-get'),
+ (TEXTNS,u'variable-input'),
+ (TEXTNS,u'variable-set'),
+ ),
+# allowed_children
+ (TEXTNS,u'subject') : (
+ ),
+ (TEXTNS,u'tab') : (
+ ),
+ (TEXTNS,u'table-count') : (
+ ),
+ (TEXTNS,u'table-formula') : (
+ ),
+ (TEXTNS,u'table-index') : (
+ (TEXTNS,u'index-body'),
+ (TEXTNS,u'table-index-source'),
+ ),
+ (TEXTNS,u'table-index-entry-template') : (
+ (TEXTNS,u'index-entry-page-number'),
+ (TEXTNS,u'index-entry-span'),
+ (TEXTNS,u'index-entry-tab-stop'),
+ (TEXTNS,u'index-entry-text'),
+ ),
+ (TEXTNS,u'table-index-source') : (
+ (TEXTNS,u'index-title-template'),
+ (TEXTNS,u'table-index-entry-template'),
+ ),
+ (TEXTNS,u'table-of-content') : (
+ (TEXTNS,u'index-body'),
+ (TEXTNS,u'table-of-content-source'),
+ ),
+ (TEXTNS,u'table-of-content-entry-template') : (
+ (TEXTNS,u'index-entry-chapter'),
+ (TEXTNS,u'index-entry-link-end'),
+ (TEXTNS,u'index-entry-link-start'),
+ (TEXTNS,u'index-entry-page-number'),
+ (TEXTNS,u'index-entry-span'),
+ (TEXTNS,u'index-entry-tab-stop'),
+ (TEXTNS,u'index-entry-text'),
+ ),
+ (TEXTNS,u'table-of-content-source') : (
+ (TEXTNS,u'index-source-styles'),
+ (TEXTNS,u'index-title-template'),
+ (TEXTNS,u'table-of-content-entry-template'),
+ ),
+ (TEXTNS,u'template-name') : (
+ ),
+ (TEXTNS,u'text-input') : (
+ ),
+ (TEXTNS,u'time') : (
+ ),
+ (TEXTNS,u'title') : (
+ ),
+ (TEXTNS,u'toc-mark') : (
+ ),
+ (TEXTNS,u'toc-mark-end') : (
+ ),
+ (TEXTNS,u'toc-mark-start') : (
+ ),
+# allowed_children
+ (TEXTNS,u'tracked-changes') : (
+ (TEXTNS,u'changed-region'),
+ ),
+ (TEXTNS,u'user-defined') : (
+ ),
+ (TEXTNS,u'user-field-decl') : (
+ ),
+ (TEXTNS,u'user-field-decls') : (
+ (TEXTNS,u'user-field-decl'),
+ ),
+ (TEXTNS,u'user-field-get') : (
+ ),
+ (TEXTNS,u'user-field-input') : (
+ ),
+ (TEXTNS,u'user-index') : (
+ (TEXTNS,u'index-body'),
+ (TEXTNS,u'user-index-source'),
+ ),
+ (TEXTNS,u'user-index-entry-template') : (
+ (TEXTNS,u'index-entry-chapter'),
+ (TEXTNS,u'index-entry-page-number'),
+ (TEXTNS,u'index-entry-span'),
+ (TEXTNS,u'index-entry-tab-stop'),
+ (TEXTNS,u'index-entry-text'),
+ ),
+# allowed_children
+ (TEXTNS,u'user-index-mark') : (
+ ),
+ (TEXTNS,u'user-index-mark-end') : (
+ ),
+ (TEXTNS,u'user-index-mark-start') : (
+ ),
+ (TEXTNS,u'user-index-source') : (
+ (TEXTNS,u'index-source-styles'),
+ (TEXTNS,u'index-title-template'),
+ (TEXTNS,u'user-index-entry-template'),
+ ),
+ (TEXTNS,u'variable-decl') : (
+ ),
+ (TEXTNS,u'variable-decls') : (
+ (TEXTNS,u'variable-decl'),
+ ),
+ (TEXTNS,u'variable-get') : (
+ ),
+ (TEXTNS,u'variable-input') : (
+ ),
+ (TEXTNS,u'variable-set') : (
+ ),
+ (TEXTNS,u'word-count') : (
+ ),
+}
+
+#
+# List of elements that allows text nodes
+#
+allows_text = (
+ (CONFIGNS,u'config-item'),
+ (DCNS,u'creator'),
+ (DCNS,u'date'),
+ (DCNS,u'description'),
+ (DCNS,u'language'),
+ (DCNS,u'subject'),
+ (DCNS,u'title'),
+# Completes Dublin Core start
+# (DCNS,'contributor'),
+# (DCNS,'coverage'),
+# (DCNS,'format'),
+# (DCNS,'identifier'),
+# (DCNS,'publisher'),
+# (DCNS,'relation'),
+# (DCNS,'rights'),
+# (DCNS,'source'),
+# (DCNS,'type'),
+# Completes Dublin Core end
+ (FORMNS,u'item'),
+ (FORMNS,u'option'),
+ (MATHNS,u'math'),
+ (METANS,u'creation-date'),
+ (METANS,u'date-string'),
+ (METANS,u'editing-cycles'),
+ (METANS,u'editing-duration'),
+# allows_text
+ (METANS,u'generator'),
+ (METANS,u'initial-creator'),
+ (METANS,u'keyword'),
+ (METANS,u'print-date'),
+ (METANS,u'printed-by'),
+ (METANS,u'user-defined'),
+ (NUMBERNS,u'currency-symbol'),
+ (NUMBERNS,u'embedded-text'),
+ (NUMBERNS,u'text'),
+ (OFFICENS,u'binary-data'),
+ (OFFICENS,u'script'),
+ (PRESENTATIONNS,u'date-time-decl'),
+ (PRESENTATIONNS,u'footer-decl'),
+ (PRESENTATIONNS,u'header-decl'),
+ (SVGNS,u'desc'),
+ (SVGNS,u'title'),
+ (TEXTNS,u'a'),
+ (TEXTNS,u'author-initials'),
+ (TEXTNS,u'author-name'),
+ (TEXTNS,u'bibliography-mark'),
+ (TEXTNS,u'bookmark-ref'),
+ (TEXTNS,u'chapter'),
+ (TEXTNS,u'character-count'),
+ (TEXTNS,u'conditional-text'),
+ (TEXTNS,u'creation-date'),
+ (TEXTNS,u'creation-time'),
+ (TEXTNS,u'creator'),
+ (TEXTNS,u'database-display'),
+ (TEXTNS,u'database-name'),
+ (TEXTNS,u'database-row-number'),
+ (TEXTNS,u'date'),
+ (TEXTNS,u'dde-connection'),
+ (TEXTNS,u'description'),
+ (TEXTNS,u'editing-cycles'),
+ (TEXTNS,u'editing-duration'),
+ (TEXTNS,u'execute-macro'),
+ (TEXTNS,u'expression'),
+ (TEXTNS,u'file-name'),
+ (TEXTNS,u'h'),
+ (TEXTNS,u'hidden-paragraph'),
+ (TEXTNS,u'hidden-text'),
+ (TEXTNS,u'image-count'),
+# allowed_children
+ (TEXTNS,u'index-entry-span'),
+ (TEXTNS,u'index-title-template'),
+ (TEXTNS,u'initial-creator'),
+ (TEXTNS,u'keywords'),
+ (TEXTNS,u'linenumbering-separator'),
+ (TEXTNS,u'measure'),
+ (TEXTNS,u'modification-date'),
+ (TEXTNS,u'modification-time'),
+ (TEXTNS,u'note-citation'),
+ (TEXTNS,u'note-continuation-notice-backward'),
+ (TEXTNS,u'note-continuation-notice-forward'),
+ (TEXTNS,u'note-ref'),
+ (TEXTNS,u'number'),
+ (TEXTNS,u'object-count'),
+ (TEXTNS,u'p'),
+ (TEXTNS,u'page-continuation'),
+ (TEXTNS,u'page-count'),
+ (TEXTNS,u'page-number'),
+ (TEXTNS,u'page-variable-get'),
+ (TEXTNS,u'page-variable-set'),
+ (TEXTNS,u'paragraph-count'),
+ (TEXTNS,u'placeholder'),
+ (TEXTNS,u'print-date'),
+ (TEXTNS,u'print-time'),
+ (TEXTNS,u'printed-by'),
+ (TEXTNS,u'reference-ref'),
+ (TEXTNS,u'ruby-base'),
+ (TEXTNS,u'ruby-text'),
+ (TEXTNS,u'script'),
+ (TEXTNS,u'sender-city'),
+ (TEXTNS,u'sender-company'),
+ (TEXTNS,u'sender-country'),
+ (TEXTNS,u'sender-email'),
+ (TEXTNS,u'sender-fax'),
+ (TEXTNS,u'sender-firstname'),
+ (TEXTNS,u'sender-initials'),
+ (TEXTNS,u'sender-lastname'),
+ (TEXTNS,u'sender-phone-private'),
+ (TEXTNS,u'sender-phone-work'),
+ (TEXTNS,u'sender-position'),
+ (TEXTNS,u'sender-postal-code'),
+ (TEXTNS,u'sender-state-or-province'),
+ (TEXTNS,u'sender-street'),
+ (TEXTNS,u'sender-title'),
+ (TEXTNS,u'sequence'),
+ (TEXTNS,u'sequence-ref'),
+ (TEXTNS,u'sheet-name'),
+# allowed_children
+ (TEXTNS,u'span'),
+ (TEXTNS,u'subject'),
+ (TEXTNS,u'table-count'),
+ (TEXTNS,u'table-formula'),
+ (TEXTNS,u'template-name'),
+ (TEXTNS,u'text-input'),
+ (TEXTNS,u'time'),
+ (TEXTNS,u'title'),
+ (TEXTNS,u'user-defined'),
+ (TEXTNS,u'user-field-get'),
+ (TEXTNS,u'user-field-input'),
+ (TEXTNS,u'variable-get'),
+ (TEXTNS,u'variable-input'),
+ (TEXTNS,u'variable-set'),
+ (TEXTNS,u'word-count'),
+)
+
+# Only the elements with at least one required attribute is listed
+
+required_attributes = {
+ (ANIMNS,u'animate'): (
+ (SMILNS,u'attributeName'),
+ ),
+ (ANIMNS,u'animateColor'): (
+ (SMILNS,u'attributeName'),
+ ),
+ (ANIMNS,u'animateMotion'): (
+ (SMILNS,u'attributeName'),
+ ),
+ (ANIMNS,u'animateTransform'): (
+ (SVGNS,u'type'),
+ (SMILNS,u'attributeName'),
+ ),
+ (ANIMNS,u'command'): (
+ (ANIMNS,u'command'),
+ ),
+ (ANIMNS,u'param'): (
+ (ANIMNS,u'name'),
+ (ANIMNS,u'value'),
+ ),
+ (ANIMNS,u'set'): (
+ (SMILNS,u'attributeName'),
+ ),
+# required_attributes
+ (ANIMNS,u'transitionFilter'): (
+ (SMILNS,u'type'),
+ ),
+ (CHARTNS,u'axis'): (
+ (CHARTNS,u'dimension'),
+ ),
+ (CHARTNS,u'chart'): (
+ (CHARTNS,u'class'),
+ ),
+ (CHARTNS,u'symbol-image'): (
+ (XLINKNS,u'href'),
+ ),
+ (CONFIGNS,u'config-item'): (
+ (CONFIGNS,u'type'),
+ (CONFIGNS,u'name'),
+ ),
+ (CONFIGNS,u'config-item-map-indexed'): (
+ (CONFIGNS,u'name'),
+ ),
+ (CONFIGNS,u'config-item-map-named'): (
+ (CONFIGNS,u'name'),
+ ),
+ (CONFIGNS,u'config-item-set'): (
+ (CONFIGNS,u'name'),
+ ),
+# required_attributes
+ (NUMBERNS,u'boolean-style'): (
+ (STYLENS,u'name'),
+ ),
+ (NUMBERNS,u'currency-style'): (
+ (STYLENS,u'name'),
+ ),
+ (NUMBERNS,u'date-style'): (
+ (STYLENS,u'name'),
+ ),
+ (NUMBERNS,u'embedded-text'): (
+ (NUMBERNS,u'position'),
+ ),
+ (NUMBERNS,u'number-style'): (
+ (STYLENS,u'name'),
+ ),
+ (NUMBERNS,u'percentage-style'): (
+ (STYLENS,u'name'),
+ ),
+ (NUMBERNS,u'text-style'): (
+ (STYLENS,u'name'),
+ ),
+ (NUMBERNS,u'time-style'): (
+ (STYLENS,u'name'),
+ ),
+ (DR3DNS,u'extrude'): (
+ (SVGNS,u'd'),
+ (SVGNS,u'viewBox'),
+ ),
+ (DR3DNS,u'light'): (
+ (DR3DNS,u'direction'),
+ ),
+ (DR3DNS,u'rotate'): (
+ (SVGNS,u'viewBox'),
+ (SVGNS,u'd'),
+ ),
+# required_attributes
+ (DRAWNS,u'a'): (
+ (XLINKNS,u'href'),
+ ),
+ (DRAWNS,u'area-circle'): (
+ (SVGNS,u'cy'),
+ (SVGNS,u'cx'),
+ (SVGNS,u'r'),
+ ),
+ (DRAWNS,u'area-polygon'): (
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'points'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (SVGNS,u'viewBox'),
+ ),
+ (DRAWNS,u'area-rectangle'): (
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ ),
+ (DRAWNS,u'contour-path'): (
+ (DRAWNS,u'recreate-on-edit'),
+ (SVGNS,u'viewBox'),
+ (SVGNS,u'd'),
+ ),
+ (DRAWNS,u'contour-polygon'): (
+ (DRAWNS,u'points'),
+ (DRAWNS,u'recreate-on-edit'),
+ (SVGNS,u'viewBox'),
+ ),
+ (DRAWNS,u'control'): (
+ (DRAWNS,u'control'),
+ ),
+ (DRAWNS,u'fill-image'): (
+ (XLINKNS,u'href'),
+ (DRAWNS,u'name'),
+ ),
+ (DRAWNS,u'floating-frame'): (
+ (XLINKNS,u'href'),
+ ),
+ (DRAWNS,u'glue-point'): (
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'escape-direction'),
+ ),
+# required_attributes
+ (DRAWNS,u'gradient'): (
+ (DRAWNS,u'style'),
+ ),
+ (DRAWNS,u'handle'): (
+ (DRAWNS,u'handle-position'),
+ ),
+ (DRAWNS,u'hatch'): (
+ (DRAWNS,u'style'),
+ (DRAWNS,u'name'),
+ ),
+ (DRAWNS,u'layer'): (
+ (DRAWNS,u'name'),
+ ),
+ (DRAWNS,u'line'): (
+ (SVGNS,u'y1'),
+ (SVGNS,u'x2'),
+ (SVGNS,u'x1'),
+ (SVGNS,u'y2'),
+ ),
+ (DRAWNS,u'marker'): (
+ (SVGNS,u'd'),
+ (DRAWNS,u'name'),
+ (SVGNS,u'viewBox'),
+ ),
+ (DRAWNS,u'measure'): (
+ (SVGNS,u'y1'),
+ (SVGNS,u'x2'),
+ (SVGNS,u'x1'),
+ (SVGNS,u'y2'),
+ ),
+ (DRAWNS,u'opacity'): (
+ (DRAWNS,u'style'),
+ ),
+ (DRAWNS,u'page'): (
+ (DRAWNS,u'master-page-name'),
+ ),
+ (DRAWNS,u'path'): (
+ (SVGNS,u'd'),
+ (SVGNS,u'viewBox'),
+ ),
+ (DRAWNS,u'plugin'): (
+ (XLINKNS,u'href'),
+ ),
+ (DRAWNS,u'polygon'): (
+ (DRAWNS,u'points'),
+ (SVGNS,u'viewBox'),
+ ),
+# required_attributes
+ (DRAWNS,u'polyline'): (
+ (DRAWNS,u'points'),
+ (SVGNS,u'viewBox'),
+ ),
+ (DRAWNS,u'regular-polygon'): (
+ (DRAWNS,u'corners'),
+ ),
+ (DRAWNS,u'stroke-dash'): (
+ (DRAWNS,u'name'),
+ ),
+ (FORMNS,u'button'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'checkbox'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'combobox'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'connection-resource'): (
+ (XLINKNS,u'href'),
+ ),
+ (FORMNS,u'date'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'file'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'fixed-text'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'formatted-text'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'frame'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'generic-control'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'grid'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'hidden'): (
+ (FORMNS,u'id'),
+ ),
+# required_attributes
+ (FORMNS,u'image'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'image-frame'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'list-property'): (
+ (FORMNS,u'property-name'),
+ ),
+ (FORMNS,u'list-value'): (
+ (OFFICENS,u'string-value'),
+ ),
+ (FORMNS,u'listbox'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'number'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'password'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'property'): (
+ (FORMNS,u'property-name'),
+ ),
+ (FORMNS,u'radio'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'text'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'textarea'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'time'): (
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'value-range'): (
+ (FORMNS,u'id'),
+ ),
+ (MANIFESTNS,u'algorithm') : (
+ (MANIFESTNS,u'algorithm-name'),
+ (MANIFESTNS,u'initialisation-vector'),
+ ),
+ (MANIFESTNS,u'encryption-data') : (
+ (MANIFESTNS,u'checksum-type'),
+ (MANIFESTNS,u'checksum'),
+ ),
+ (MANIFESTNS,u'file-entry') : (
+ (MANIFESTNS,u'full-path'),
+ (MANIFESTNS,u'media-type'),
+ ),
+ (MANIFESTNS,u'key-derivation') : (
+ (MANIFESTNS,u'key-derivation-name'),
+ (MANIFESTNS,u'salt'),
+ (MANIFESTNS,u'iteration-count'),
+ ),
+# required_attributes
+ (METANS,u'template'): (
+ (XLINKNS,u'href'),
+ ),
+ (METANS,u'user-defined'): (
+ (METANS,u'name'),
+ ),
+ (OFFICENS,u'dde-source'): (
+ (OFFICENS,u'dde-topic'),
+ (OFFICENS,u'dde-application'),
+ (OFFICENS,u'dde-item'),
+ ),
+ (OFFICENS,u'document'): (
+ (OFFICENS,u'mimetype'),
+ ),
+ (OFFICENS,u'script'): (
+ (SCRIPTNS,u'language'),
+ ),
+ (PRESENTATIONNS,u'date-time-decl'): (
+ (PRESENTATIONNS,u'source'),
+ (PRESENTATIONNS,u'name'),
+ ),
+ (PRESENTATIONNS,u'dim'): (
+ (DRAWNS,u'color'),
+ (DRAWNS,u'shape-id'),
+ ),
+# required_attributes
+ (PRESENTATIONNS,u'event-listener'): (
+ (PRESENTATIONNS,u'action'),
+ (SCRIPTNS,u'event-name'),
+ ),
+ (PRESENTATIONNS,u'footer-decl'): (
+ (PRESENTATIONNS,u'name'),
+ ),
+ (PRESENTATIONNS,u'header-decl'): (
+ (PRESENTATIONNS,u'name'),
+ ),
+ (PRESENTATIONNS,u'hide-shape'): (
+ (DRAWNS,u'shape-id'),
+ ),
+ (PRESENTATIONNS,u'hide-text'): (
+ (DRAWNS,u'shape-id'),
+ ),
+ (PRESENTATIONNS,u'placeholder'): (
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (SVGNS,u'height'),
+ (PRESENTATIONNS,u'object'),
+ (SVGNS,u'width'),
+ ),
+ (PRESENTATIONNS,u'play'): (
+ (DRAWNS,u'shape-id'),
+ ),
+ (PRESENTATIONNS,u'show'): (
+ (PRESENTATIONNS,u'name'),
+ (PRESENTATIONNS,u'pages'),
+ ),
+ (PRESENTATIONNS,u'show-shape'): (
+ (DRAWNS,u'shape-id'),
+ ),
+ (PRESENTATIONNS,u'show-text'): (
+ (DRAWNS,u'shape-id'),
+ ),
+ (PRESENTATIONNS,u'sound'): (
+ (XLINKNS,u'href'),
+ ),
+ (SCRIPTNS,u'event-listener'): (
+ (SCRIPTNS,u'language'),
+ (SCRIPTNS,u'event-name'),
+ ),
+ (STYLENS,u'column'): (
+ (STYLENS,u'rel-width'),
+ ),
+# required_attributes
+ (STYLENS,u'column-sep'): (
+ (STYLENS,u'width'),
+ ),
+ (STYLENS,u'columns'): (
+ (FONS,u'column-count'),
+ ),
+ (STYLENS,u'font-face'): (
+ (STYLENS,u'name'),
+ ),
+ (STYLENS,u'handout-master'): (
+ (STYLENS,u'page-layout-name'),
+ ),
+ (STYLENS,u'map'): (
+ (STYLENS,u'apply-style-name'),
+ (STYLENS,u'condition'),
+ ),
+ (STYLENS,u'master-page'): (
+ (STYLENS,u'page-layout-name'),
+ (STYLENS,u'name'),
+ ),
+ (STYLENS,u'page-layout'): (
+ (STYLENS,u'name'),
+ ),
+ (STYLENS,u'presentation-page-layout'): (
+ (STYLENS,u'name'),
+ ),
+ (STYLENS,u'style'): (
+ (STYLENS,u'name'),
+ ),
+ (STYLENS,u'tab-stop'): (
+ (STYLENS,u'position'),
+ ),
+ (SVGNS,u'definition-src'): (
+ (XLINKNS,u'href'),
+ ),
+ (SVGNS,u'font-face-uri'): (
+ (XLINKNS,u'href'),
+ ),
+ (SVGNS,u'linearGradient'): (
+ (DRAWNS,u'name'),
+ ),
+ (SVGNS,u'radialGradient'): (
+ (DRAWNS,u'name'),
+ ),
+ (SVGNS,u'stop'): (
+ (SVGNS,u'offset'),
+ ),
+# required_attributes
+ (TABLENS,u'body'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'cell-address'): (
+ (TABLENS,u'column'),
+ (TABLENS,u'table'),
+ (TABLENS,u'row'),
+ ),
+ (TABLENS,u'cell-content-change'): (
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'cell-range-source'): (
+ (TABLENS,u'last-row-spanned'),
+ (TABLENS,u'last-column-spanned'),
+ (XLINKNS,u'href'),
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'consolidation'): (
+ (TABLENS,u'function'),
+ (TABLENS,u'source-cell-range-addresses'),
+ (TABLENS,u'target-cell-address'),
+ ),
+ (TABLENS,u'content-validation'): (
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'data-pilot-display-info'): (
+ (TABLENS,u'member-count'),
+ (TABLENS,u'data-field'),
+ (TABLENS,u'enabled'),
+ (TABLENS,u'display-member-mode'),
+ ),
+# required_attributes
+ (TABLENS,u'data-pilot-field'): (
+ (TABLENS,u'source-field-name'),
+ ),
+ (TABLENS,u'data-pilot-field-reference'): (
+ (TABLENS,u'field-name'),
+ (TABLENS,u'type'),
+ ),
+ (TABLENS,u'data-pilot-group'): (
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'data-pilot-group-member'): (
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'data-pilot-groups'): (
+ (TABLENS,u'source-field-name'),
+ (TABLENS,u'step'),
+ (TABLENS,u'grouped-by'),
+ ),
+ (TABLENS,u'data-pilot-layout-info'): (
+ (TABLENS,u'add-empty-lines'),
+ (TABLENS,u'layout-mode'),
+ ),
+ (TABLENS,u'data-pilot-member'): (
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'data-pilot-sort-info'): (
+ (TABLENS,u'order'),
+ ),
+ (TABLENS,u'data-pilot-subtotal'): (
+ (TABLENS,u'function'),
+ ),
+ (TABLENS,u'data-pilot-table'): (
+ (TABLENS,u'target-range-address'),
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'database-range'): (
+ (TABLENS,u'target-range-address'),
+ ),
+# required_attributes
+ (TABLENS,u'database-source-query'): (
+ (TABLENS,u'query-name'),
+ (TABLENS,u'database-name'),
+ ),
+ (TABLENS,u'database-source-sql'): (
+ (TABLENS,u'database-name'),
+ (TABLENS,u'sql-statement'),
+ ),
+ (TABLENS,u'database-source-table'): (
+ (TABLENS,u'database-table-name'),
+ (TABLENS,u'database-name'),
+ ),
+ (TABLENS,u'deletion'): (
+ (TABLENS,u'position'),
+ (TABLENS,u'type'),
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'dependency'): (
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'even-columns'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'even-rows'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'filter-condition'): (
+ (TABLENS,u'operator'),
+ (TABLENS,u'field-number'),
+ (TABLENS,u'value'),
+ ),
+ (TABLENS,u'first-column'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'first-row'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'insertion'): (
+ (TABLENS,u'position'),
+ (TABLENS,u'type'),
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'insertion-cut-off'): (
+ (TABLENS,u'position'),
+ (TABLENS,u'id'),
+ ),
+# required_attributes
+ (TABLENS,u'label-range'): (
+ (TABLENS,u'label-cell-range-address'),
+ (TABLENS,u'data-cell-range-address'),
+ (TABLENS,u'orientation'),
+ ),
+ (TABLENS,u'last-column'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'last-row'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'movement'): (
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'named-expression'): (
+ (TABLENS,u'expression'),
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'named-range'): (
+ (TABLENS,u'name'),
+ (TABLENS,u'cell-range-address'),
+ ),
+ (TABLENS,u'odd-columns'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'odd-rows'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'operation'): (
+ (TABLENS,u'index'),
+ (TABLENS,u'name'),
+ ),
+# required_attributes
+ (TABLENS,u'scenario'): (
+ (TABLENS,u'is-active'),
+ (TABLENS,u'scenario-ranges'),
+ ),
+ (TABLENS,u'sort-by'): (
+ (TABLENS,u'field-number'),
+ ),
+ (TABLENS,u'source-cell-range'): (
+ (TABLENS,u'cell-range-address'),
+ ),
+ (TABLENS,u'source-service'): (
+ (TABLENS,u'source-name'),
+ (TABLENS,u'object-name'),
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'subtotal-field'): (
+ (TABLENS,u'function'),
+ (TABLENS,u'field-number'),
+ ),
+ (TABLENS,u'subtotal-rule'): (
+ (TABLENS,u'group-by-field-number'),
+ ),
+ (TABLENS,u'table-source'): (
+ (XLINKNS,u'href'),
+ ),
+ (TABLENS,u'table-template'): (
+ (TEXTNS,u'last-row-end-column'),
+ (TEXTNS,u'first-row-end-column'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'last-row-start-column'),
+ (TEXTNS,u'first-row-start-column'),
+ ),
+ (TEXTNS,u'a'): (
+ (XLINKNS,u'href'),
+ ),
+# required_attributes
+ (TEXTNS,u'alphabetical-index'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'): (
+ (XLINKNS,u'href'),
+ ),
+ (TEXTNS,u'alphabetical-index-entry-template'): (
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'alphabetical-index-mark'): (
+ (TEXTNS,u'string-value'),
+ ),
+ (TEXTNS,u'alphabetical-index-mark-end'): (
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'alphabetical-index-mark-start'): (
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'bibliography'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'bibliography-entry-template'): (
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'bibliography-type'),
+ ),
+ (TEXTNS,u'bibliography-mark'): (
+ (TEXTNS,u'bibliography-type'),
+ ),
+ (TEXTNS,u'bookmark'): (
+ (TEXTNS,u'name'),
+ ),
+# required_attributes
+ (TEXTNS,u'bookmark-end'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'bookmark-start'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'change'): (
+ (TEXTNS,u'change-id'),
+ ),
+ (TEXTNS,u'change-end'): (
+ (TEXTNS,u'change-id'),
+ ),
+ (TEXTNS,u'change-start'): (
+ (TEXTNS,u'change-id'),
+ ),
+ (TEXTNS,u'changed-region'): (
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'chapter'): (
+ (TEXTNS,u'display'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'conditional-text'): (
+ (TEXTNS,u'string-value-if-true'),
+ (TEXTNS,u'string-value-if-false'),
+ (TEXTNS,u'condition'),
+ ),
+ (TEXTNS,u'database-display'): (
+ (TEXTNS,u'column-name'),
+ (TEXTNS,u'table-name'),
+ ),
+ (TEXTNS,u'database-name'): (
+ (TEXTNS,u'table-name'),
+ ),
+ (TEXTNS,u'database-next'): (
+ (TEXTNS,u'table-name'),
+ ),
+ (TEXTNS,u'database-row-number'): (
+ (TEXTNS,u'table-name'),
+ ),
+ (TEXTNS,u'database-row-select'): (
+ (TEXTNS,u'table-name'),
+ ),
+ (TEXTNS,u'dde-connection'): (
+ (TEXTNS,u'connection-name'),
+ ),
+# required_attributes
+ (TEXTNS,u'dde-connection-decl'): (
+ (OFFICENS,u'dde-topic'),
+ (OFFICENS,u'dde-application'),
+ (OFFICENS,u'name'),
+ (OFFICENS,u'dde-item'),
+ ),
+ (TEXTNS,u'h'): (
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'hidden-paragraph'): (
+ (TEXTNS,u'condition'),
+ ),
+ (TEXTNS,u'hidden-text'): (
+ (TEXTNS,u'string-value'),
+ (TEXTNS,u'condition'),
+ ),
+ (TEXTNS,u'illustration-index'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'illustration-index-entry-template'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'index-entry-bibliography'): (
+ (TEXTNS,u'bibliography-data-field'),
+ ),
+ (TEXTNS,u'index-source-style'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'index-source-styles'): (
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'index-title'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'list-level-style-bullet'): (
+ (TEXTNS,u'bullet-char'),
+ (TEXTNS,u'level'),
+ ),
+ (TEXTNS,u'list-level-style-image'): (
+ (TEXTNS,u'level'),
+ ),
+ (TEXTNS,u'list-level-style-number'): (
+ (TEXTNS,u'level'),
+ ),
+ (TEXTNS,u'list-style'): (
+ (STYLENS,u'name'),
+ ),
+# required_attributes
+ (TEXTNS,u'measure'): (
+ (TEXTNS,u'kind'),
+ ),
+ (TEXTNS,u'note'): (
+ (TEXTNS,u'note-class'),
+ ),
+ (TEXTNS,u'note-ref'): (
+ (TEXTNS,u'note-class'),
+ ),
+ (TEXTNS,u'notes-configuration'): (
+ (TEXTNS,u'note-class'),
+ ),
+ (TEXTNS,u'object-index'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'object-index-entry-template'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'outline-level-style'): (
+ (TEXTNS,u'level'),
+ ),
+ (TEXTNS,u'page'): (
+ (TEXTNS,u'master-page-name'),
+ ),
+ (TEXTNS,u'page-continuation'): (
+ (TEXTNS,u'select-page'),
+ ),
+ (TEXTNS,u'placeholder'): (
+ (TEXTNS,u'placeholder-type'),
+ ),
+ (TEXTNS,u'reference-mark'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'reference-mark-end'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'reference-mark-start'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'section'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'sequence'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'sequence-decl'): (
+ (TEXTNS,u'display-outline-level'),
+ (TEXTNS,u'name'),
+ ),
+# required_attributes
+ (TEXTNS,u'sort-key'): (
+ (TEXTNS,u'key'),
+ ),
+ (TEXTNS,u'table-index'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'table-index-entry-template'): (
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'table-of-content'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'table-of-content-entry-template'): (
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'toc-mark'): (
+ (TEXTNS,u'string-value'),
+ ),
+ (TEXTNS,u'toc-mark-end'): (
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'toc-mark-start'): (
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'user-defined'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'user-field-decl'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'user-field-get'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'user-field-input'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'user-index'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'user-index-entry-template'): (
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'outline-level'),
+ ),
+# required_attributes
+ (TEXTNS,u'user-index-mark'): (
+ (TEXTNS,u'index-name'),
+ (TEXTNS,u'string-value'),
+ ),
+ (TEXTNS,u'user-index-mark-end'): (
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'user-index-mark-start'): (
+ (TEXTNS,u'index-name'),
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'user-index-source'): (
+ (TEXTNS,u'index-name'),
+ ),
+ (TEXTNS,u'variable-decl'): (
+ (TEXTNS,u'name'),
+ (OFFICENS,u'value-type'),
+ ),
+ (TEXTNS,u'variable-get'): (
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'variable-input'): (
+ (TEXTNS,u'name'),
+ (OFFICENS,u'value-type'),
+ ),
+ (TEXTNS,u'variable-set'): (
+ (TEXTNS,u'name'),
+ ),
+}
+
+# Empty list means the element has no allowed attributes
+# None means anything goes
+
+allowed_attributes = {
+ (DCNS,u'creator'):(
+ ),
+ (DCNS,u'date'):(
+ ),
+ (DCNS,u'description'):(
+ ),
+ (DCNS,u'language'):(
+ ),
+ (DCNS,u'subject'):(
+ ),
+ (DCNS,u'title'):(
+ ),
+# Completes Dublin Core start
+# (DCNS,'contributor') : (
+# ),
+# (DCNS,'coverage') : (
+# ),
+# (DCNS,'format') : (
+# ),
+# (DCNS,'identifier') : (
+# ),
+# (DCNS,'publisher') : (
+# ),
+# (DCNS,'relation') : (
+# ),
+# (DCNS,'rights') : (
+# ),
+# (DCNS,'source') : (
+# ),
+# (DCNS,'type') : (
+# ),
+# Completes Dublin Core end
+ (MATHNS,u'math'): None,
+ (XFORMSNS,u'model'): None,
+# allowed_attributes
+ (ANIMNS,u'animate'):(
+ (ANIMNS,u'formula'),
+ (ANIMNS,u'sub-item'),
+ (SMILNS,u'accelerate'),
+ (SMILNS,u'accumulate'),
+ (SMILNS,u'additive'),
+ (SMILNS,u'attributeName'),
+ (SMILNS,u'autoReverse'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'by'),
+ (SMILNS,u'calcMode'),
+ (SMILNS,u'decelerate'),
+ (SMILNS,u'dur'),
+ (SMILNS,u'end'),
+ (SMILNS,u'fill'),
+ (SMILNS,u'fillDefault'),
+ (SMILNS,u'from'),
+ (SMILNS,u'keySplines'),
+ (SMILNS,u'keyTimes'),
+ (SMILNS,u'repeatCount'),
+ (SMILNS,u'repeatDur'),
+ (SMILNS,u'restart'),
+ (SMILNS,u'restartDefault'),
+ (SMILNS,u'targetElement'),
+ (SMILNS,u'to'),
+ (SMILNS,u'values'),
+ ),
+# allowed_attributes
+ (ANIMNS,u'animateColor'):(
+ (ANIMNS,u'color-interpolation'),
+ (ANIMNS,u'color-interpolation-direction'),
+ (ANIMNS,u'formula'),
+ (ANIMNS,u'sub-item'),
+ (SMILNS,u'accelerate'),
+ (SMILNS,u'accumulate'),
+ (SMILNS,u'additive'),
+ (SMILNS,u'attributeName'),
+ (SMILNS,u'autoReverse'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'by'),
+ (SMILNS,u'calcMode'),
+ (SMILNS,u'decelerate'),
+ (SMILNS,u'dur'),
+ (SMILNS,u'end'),
+ (SMILNS,u'fill'),
+ (SMILNS,u'fillDefault'),
+ (SMILNS,u'from'),
+ (SMILNS,u'keySplines'),
+ (SMILNS,u'keyTimes'),
+ (SMILNS,u'repeatCount'),
+ (SMILNS,u'repeatDur'),
+ (SMILNS,u'restart'),
+ (SMILNS,u'restartDefault'),
+ (SMILNS,u'targetElement'),
+ (SMILNS,u'to'),
+ (SMILNS,u'values'),
+ ),
+# allowed_attributes
+ (ANIMNS,u'animateMotion'):(
+ (ANIMNS,u'formula'),
+ (ANIMNS,u'sub-item'),
+ (SMILNS,u'accelerate'),
+ (SMILNS,u'accumulate'),
+ (SMILNS,u'additive'),
+ (SMILNS,u'attributeName'),
+ (SMILNS,u'autoReverse'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'by'),
+ (SMILNS,u'calcMode'),
+ (SMILNS,u'decelerate'),
+ (SMILNS,u'dur'),
+ (SMILNS,u'end'),
+ (SMILNS,u'fill'),
+ (SMILNS,u'fillDefault'),
+ (SMILNS,u'from'),
+ (SMILNS,u'keySplines'),
+ (SMILNS,u'keyTimes'),
+ (SMILNS,u'repeatCount'),
+ (SMILNS,u'repeatDur'),
+ (SMILNS,u'restart'),
+ (SMILNS,u'restartDefault'),
+ (SMILNS,u'targetElement'),
+ (SMILNS,u'to'),
+ (SMILNS,u'values'),
+ (SVGNS,u'origin'),
+ (SVGNS,u'path'),
+ ),
+# allowed_attributes
+ (ANIMNS,u'animateTransform'):(
+ (ANIMNS,u'formula'),
+ (ANIMNS,u'sub-item'),
+ (SMILNS,u'accelerate'),
+ (SMILNS,u'accumulate'),
+ (SMILNS,u'additive'),
+ (SMILNS,u'attributeName'),
+ (SMILNS,u'autoReverse'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'by'),
+ (SMILNS,u'decelerate'),
+ (SMILNS,u'dur'),
+ (SMILNS,u'end'),
+ (SMILNS,u'fill'),
+ (SMILNS,u'fillDefault'),
+ (SMILNS,u'from'),
+ (SMILNS,u'repeatCount'),
+ (SMILNS,u'repeatDur'),
+ (SMILNS,u'restart'),
+ (SMILNS,u'restartDefault'),
+ (SMILNS,u'targetElement'),
+ (SMILNS,u'to'),
+ (SMILNS,u'values'),
+ (SVGNS,u'type'),
+ ),
+# allowed_attributes
+ (ANIMNS,u'audio'):(
+ (ANIMNS,u'audio-level'),
+ (ANIMNS,u'id'),
+ (PRESENTATIONNS,u'group-id'),
+ (PRESENTATIONNS,u'master-element'),
+ (PRESENTATIONNS,u'node-type'),
+ (PRESENTATIONNS,u'preset-class'),
+ (PRESENTATIONNS,u'preset-id'),
+ (PRESENTATIONNS,u'preset-sub-type'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'dur'),
+ (SMILNS,u'end'),
+ (SMILNS,u'repeatCount'),
+ (SMILNS,u'repeatDur'),
+ (XLINKNS,u'href'),
+ ),
+ (ANIMNS,u'command'):(
+ (PRESENTATIONNS,u'node-type'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'end'),
+ (PRESENTATIONNS,u'group-id'),
+ (PRESENTATIONNS,u'preset-class'),
+ (PRESENTATIONNS,u'preset-id'),
+ (ANIMNS,u'sub-item'),
+ (ANIMNS,u'command'),
+ (PRESENTATIONNS,u'preset-sub-type'),
+ (SMILNS,u'targetElement'),
+ (ANIMNS,u'id'),
+ (PRESENTATIONNS,u'master-element'),
+ ),
+# allowed_attributes
+ (ANIMNS,u'iterate'):(
+ (ANIMNS,u'id'),
+ (ANIMNS,u'iterate-interval'),
+ (ANIMNS,u'iterate-type'),
+ (ANIMNS,u'sub-item'),
+ (PRESENTATIONNS,u'group-id'),
+ (PRESENTATIONNS,u'master-element'),
+ (PRESENTATIONNS,u'node-type'),
+ (PRESENTATIONNS,u'preset-class'),
+ (PRESENTATIONNS,u'preset-id'),
+ (PRESENTATIONNS,u'preset-sub-type'),
+ (SMILNS,u'accelerate'),
+ (SMILNS,u'autoReverse'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'decelerate'),
+ (SMILNS,u'dur'),
+ (SMILNS,u'end'),
+ (SMILNS,u'endsync'),
+ (SMILNS,u'fill'),
+ (SMILNS,u'fillDefault'),
+ (SMILNS,u'repeatCount'),
+ (SMILNS,u'repeatDur'),
+ (SMILNS,u'restart'),
+ (SMILNS,u'restartDefault'),
+ (SMILNS,u'targetElement'),
+ ),
+ (ANIMNS,u'par'):(
+ (PRESENTATIONNS,u'node-type'),
+ (SMILNS,u'decelerate'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'end'),
+ (PRESENTATIONNS,u'group-id'),
+ (SMILNS,u'accelerate'),
+ (SMILNS,u'repeatDur'),
+ (SMILNS,u'repeatCount'),
+ (SMILNS,u'autoReverse'),
+ (PRESENTATIONNS,u'preset-class'),
+ (SMILNS,u'fillDefault'),
+ (PRESENTATIONNS,u'preset-id'),
+ (PRESENTATIONNS,u'preset-sub-type'),
+ (SMILNS,u'restartDefault'),
+ (SMILNS,u'endsync'),
+ (SMILNS,u'dur'),
+ (SMILNS,u'fill'),
+ (ANIMNS,u'id'),
+ (SMILNS,u'restart'),
+ (PRESENTATIONNS,u'master-element'),
+ ),
+# allowed_attributes
+ (ANIMNS,u'param'):(
+ (ANIMNS,u'name'),
+ (ANIMNS,u'value'),
+ ),
+ (ANIMNS,u'seq'):(
+ (ANIMNS,u'id'),
+ (PRESENTATIONNS,u'group-id'),
+ (PRESENTATIONNS,u'master-element'),
+ (PRESENTATIONNS,u'node-type'),
+ (PRESENTATIONNS,u'preset-class'),
+ (PRESENTATIONNS,u'preset-id'),
+ (PRESENTATIONNS,u'preset-sub-type'),
+ (SMILNS,u'accelerate'),
+ (SMILNS,u'autoReverse'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'decelerate'),
+ (SMILNS,u'dur'),
+ (SMILNS,u'end'),
+ (SMILNS,u'endsync'),
+ (SMILNS,u'fill'),
+ (SMILNS,u'fillDefault'),
+ (SMILNS,u'repeatCount'),
+ (SMILNS,u'repeatDur'),
+ (SMILNS,u'restart'),
+ (SMILNS,u'restartDefault'),
+ ),
+ (ANIMNS,u'set'):(
+ (ANIMNS,u'sub-item'),
+ (SMILNS,u'accelerate'),
+ (SMILNS,u'accumulate'),
+ (SMILNS,u'autoReverse'),
+ (SMILNS,u'additive'),
+ (SMILNS,u'attributeName'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'decelerate'),
+ (SMILNS,u'dur'),
+ (SMILNS,u'end'),
+ (SMILNS,u'fill'),
+ (SMILNS,u'fillDefault'),
+ (SMILNS,u'repeatCount'),
+ (SMILNS,u'repeatDur'),
+ (SMILNS,u'restart'),
+ (SMILNS,u'restartDefault'),
+ (SMILNS,u'targetElement'),
+ (SMILNS,u'to'),
+
+ ),
+# allowed_attributes
+ (ANIMNS,u'transitionFilter'):(
+ (ANIMNS,u'formula'),
+ (ANIMNS,u'sub-item'),
+ (SMILNS,u'accelerate'),
+ (SMILNS,u'accumulate'),
+ (SMILNS,u'additive'),
+ (SMILNS,u'autoReverse'),
+ (SMILNS,u'begin'),
+ (SMILNS,u'by'),
+ (SMILNS,u'calcMode'),
+ (SMILNS,u'decelerate'),
+ (SMILNS,u'direction'),
+ (SMILNS,u'dur'),
+ (SMILNS,u'end'),
+ (SMILNS,u'fadeColor'),
+ (SMILNS,u'fill'),
+ (SMILNS,u'fillDefault'),
+ (SMILNS,u'from'),
+ (SMILNS,u'mode'),
+ (SMILNS,u'repeatCount'),
+ (SMILNS,u'repeatDur'),
+ (SMILNS,u'restart'),
+ (SMILNS,u'restartDefault'),
+ (SMILNS,u'subtype'),
+ (SMILNS,u'targetElement'),
+ (SMILNS,u'to'),
+ (SMILNS,u'type'),
+ (SMILNS,u'values'),
+
+ ),
+# allowed_attributes
+ (CHARTNS,u'axis'):(
+ (CHARTNS,u'style-name'),
+ (CHARTNS,u'dimension'),
+ (CHARTNS,u'name'),
+ ),
+ (CHARTNS,u'categories'):(
+ (TABLENS,u'cell-range-address'),
+ ),
+ (CHARTNS,u'chart'):(
+ (CHARTNS,u'column-mapping'),
+ (CHARTNS,u'row-mapping'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (CHARTNS,u'style-name'),
+ (CHARTNS,u'class'),
+ ),
+ (CHARTNS,u'data-point'):(
+ (CHARTNS,u'repeated'),
+ (CHARTNS,u'style-name'),
+ ),
+ (CHARTNS,u'domain'):(
+ (TABLENS,u'cell-range-address'),
+ ),
+ (CHARTNS,u'error-indicator'):(
+ (CHARTNS,u'style-name'),
+ ),
+ (CHARTNS,u'floor'):(
+ (SVGNS,u'width'),
+ (CHARTNS,u'style-name'),
+ ),
+# allowed_attributes
+ (CHARTNS,u'footer'):(
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'cell-range'),
+ (CHARTNS,u'style-name'),
+ ),
+ (CHARTNS,u'grid'):(
+ (CHARTNS,u'style-name'),
+ (CHARTNS,u'class'),
+ ),
+ (CHARTNS,u'legend'):(
+ (CHARTNS,u'legend-align'),
+ (STYLENS,u'legend-expansion-aspect-ratio'),
+ (STYLENS,u'legend-expansion'),
+ (CHARTNS,u'legend-position'),
+ (CHARTNS,u'style-name'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ ),
+ (CHARTNS,u'mean-value'):(
+ (CHARTNS,u'style-name'),
+ ),
+ (CHARTNS,u'plot-area'):(
+ (DR3DNS,u'ambient-color'),
+ (DR3DNS,u'distance'),
+ (DR3DNS,u'vrp'),
+ (DR3DNS,u'focal-length'),
+ (CHARTNS,u'data-source-has-labels'),
+ (DR3DNS,u'lighting-mode'),
+ (DR3DNS,u'shade-mode'),
+ (DR3DNS,u'transform'),
+ (DR3DNS,u'shadow-slant'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (CHARTNS,u'style-name'),
+ (DR3DNS,u'vup'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (DR3DNS,u'vpn'),
+ (TABLENS,u'cell-range-address'),
+ (DR3DNS,u'projection'),
+ ),
+ (CHARTNS,u'regression-curve'):(
+ (CHARTNS,u'style-name'),
+ ),
+ (CHARTNS,u'series'):(
+ (CHARTNS,u'style-name'),
+ (CHARTNS,u'attached-axis'),
+ (CHARTNS,u'values-cell-range-address'),
+ (CHARTNS,u'label-cell-address'),
+ (CHARTNS,u'class'),
+ ),
+ (CHARTNS,u'stock-gain-marker'):(
+ (CHARTNS,u'style-name'),
+ ),
+# allowed_attributes
+ (CHARTNS,u'stock-loss-marker'):(
+ (CHARTNS,u'style-name'),
+ ),
+ (CHARTNS,u'stock-range-line'):(
+ (CHARTNS,u'style-name'),
+ ),
+ (CHARTNS,u'subtitle'):(
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'cell-range'),
+ (CHARTNS,u'style-name'),
+ ),
+ (CHARTNS,u'symbol-image'):(
+ (XLINKNS,u'href'),
+ ),
+ (CHARTNS,u'title'):(
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'cell-range'),
+ (CHARTNS,u'style-name'),
+ ),
+ (CHARTNS,u'wall'):(
+ (SVGNS,u'width'),
+ (CHARTNS,u'style-name'),
+ ),
+ (CONFIGNS,u'config-item'):(
+ (CONFIGNS,u'type'),
+ (CONFIGNS,u'name'),
+ ),
+ (CONFIGNS,u'config-item-map-entry'):(
+ (CONFIGNS,u'name'),
+ ),
+ (CONFIGNS,u'config-item-map-indexed'):(
+ (CONFIGNS,u'name'),
+ ),
+ (CONFIGNS,u'config-item-map-named'):(
+ (CONFIGNS,u'name'),
+ ),
+ (CONFIGNS,u'config-item-set'):(
+ (CONFIGNS,u'name'),
+ ),
+# allowed_attributes
+ (NUMBERNS,u'am-pm'):(
+ ),
+ (NUMBERNS,u'boolean'):(
+ ),
+ (NUMBERNS,u'boolean-style'):(
+ (NUMBERNS,u'transliteration-language'),
+ (STYLENS,u'name'),
+ (STYLENS,u'display-name'),
+ (NUMBERNS,u'language'),
+ (NUMBERNS,u'title'),
+ (NUMBERNS,u'country'),
+ (NUMBERNS,u'transliteration-format'),
+ (NUMBERNS,u'transliteration-style'),
+ (STYLENS,u'volatile'),
+ (NUMBERNS,u'transliteration-country'),
+ ),
+ (NUMBERNS,u'currency-style'):(
+ (NUMBERNS,u'transliteration-language'),
+ (STYLENS,u'name'),
+ (STYLENS,u'display-name'),
+ (NUMBERNS,u'language'),
+ (NUMBERNS,u'title'),
+ (NUMBERNS,u'country'),
+ (NUMBERNS,u'transliteration-format'),
+ (NUMBERNS,u'transliteration-style'),
+ (STYLENS,u'volatile'),
+ (NUMBERNS,u'transliteration-country'),
+ (NUMBERNS,u'automatic-order'),
+ ),
+ (NUMBERNS,u'currency-symbol'):(
+ (NUMBERNS,u'country'),
+ (NUMBERNS,u'language'),
+ ),
+# allowed_attributes
+ (NUMBERNS,u'date-style'):(
+ (NUMBERNS,u'transliteration-language'),
+ (STYLENS,u'name'),
+ (STYLENS,u'display-name'),
+ (NUMBERNS,u'language'),
+ (NUMBERNS,u'title'),
+ (NUMBERNS,u'country'),
+ (NUMBERNS,u'transliteration-format'),
+ (NUMBERNS,u'transliteration-style'),
+ (NUMBERNS,u'format-source'),
+ (STYLENS,u'volatile'),
+ (NUMBERNS,u'transliteration-country'),
+ (NUMBERNS,u'automatic-order'),
+ ),
+ (NUMBERNS,u'day'):(
+ (NUMBERNS,u'style'),
+ (NUMBERNS,u'calendar'),
+ ),
+ (NUMBERNS,u'day-of-week'):(
+ (NUMBERNS,u'style'),
+ (NUMBERNS,u'calendar'),
+ ),
+ (NUMBERNS,u'embedded-text'):(
+ (NUMBERNS,u'position'),
+ ),
+ (NUMBERNS,u'era'):(
+ (NUMBERNS,u'style'),
+ (NUMBERNS,u'calendar'),
+ ),
+ (NUMBERNS,u'fraction'):(
+ (NUMBERNS,u'grouping'),
+ (NUMBERNS,u'min-denominator-digits'),
+ (NUMBERNS,u'min-numerator-digits'),
+ (NUMBERNS,u'min-integer-digits'),
+ (NUMBERNS,u'denominator-value'),
+ ),
+ (NUMBERNS,u'hours'):(
+ (NUMBERNS,u'style'),
+ ),
+# allowed_attributes
+ (NUMBERNS,u'minutes'):(
+ (NUMBERNS,u'style'),
+ ),
+ (NUMBERNS,u'month'):(
+ (NUMBERNS,u'style'),
+ (NUMBERNS,u'calendar'),
+ (NUMBERNS,u'possessive-form'),
+ (NUMBERNS,u'textual'),
+ ),
+ (NUMBERNS,u'number'):(
+ (NUMBERNS,u'display-factor'),
+ (NUMBERNS,u'decimal-places'),
+ (NUMBERNS,u'decimal-replacement'),
+ (NUMBERNS,u'min-integer-digits'),
+ (NUMBERNS,u'grouping'),
+ ),
+ (NUMBERNS,u'number-style'):(
+ (NUMBERNS,u'transliteration-language'),
+ (STYLENS,u'name'),
+ (STYLENS,u'display-name'),
+ (NUMBERNS,u'language'),
+ (NUMBERNS,u'title'),
+ (NUMBERNS,u'country'),
+ (NUMBERNS,u'transliteration-format'),
+ (NUMBERNS,u'transliteration-style'),
+ (STYLENS,u'volatile'),
+ (NUMBERNS,u'transliteration-country'),
+ ),
+# allowed_attributes
+ (NUMBERNS,u'percentage-style'):(
+ (NUMBERNS,u'transliteration-language'),
+ (STYLENS,u'name'),
+ (STYLENS,u'display-name'),
+ (NUMBERNS,u'language'),
+ (NUMBERNS,u'title'),
+ (NUMBERNS,u'country'),
+ (NUMBERNS,u'transliteration-format'),
+ (NUMBERNS,u'transliteration-style'),
+ (STYLENS,u'volatile'),
+ (NUMBERNS,u'transliteration-country'),
+ ),
+ (NUMBERNS,u'quarter'):(
+ (NUMBERNS,u'style'),
+ (NUMBERNS,u'calendar'),
+ ),
+ (NUMBERNS,u'scientific-number'):(
+ (NUMBERNS,u'min-exponent-digits'),
+ (NUMBERNS,u'decimal-places'),
+ (NUMBERNS,u'min-integer-digits'),
+ (NUMBERNS,u'grouping'),
+ ),
+ (NUMBERNS,u'seconds'):(
+ (NUMBERNS,u'style'),
+ (NUMBERNS,u'decimal-places'),
+ ),
+ (NUMBERNS,u'text'):(
+ ),
+ (NUMBERNS,u'text-content'):(
+ ),
+ (NUMBERNS,u'text-style'):(
+ (NUMBERNS,u'transliteration-language'),
+ (STYLENS,u'name'),
+ (STYLENS,u'display-name'),
+ (NUMBERNS,u'language'),
+ (NUMBERNS,u'title'),
+ (NUMBERNS,u'country'),
+ (NUMBERNS,u'transliteration-format'),
+ (NUMBERNS,u'transliteration-style'),
+ (STYLENS,u'volatile'),
+ (NUMBERNS,u'transliteration-country'),
+ ),
+ (NUMBERNS,u'time-style'):(
+ (NUMBERNS,u'transliteration-language'),
+ (NUMBERNS,u'transliteration-format'),
+ (STYLENS,u'name'),
+ (STYLENS,u'display-name'),
+ (NUMBERNS,u'language'),
+ (NUMBERNS,u'title'),
+ (NUMBERNS,u'country'),
+ (NUMBERNS,u'truncate-on-overflow'),
+ (NUMBERNS,u'transliteration-style'),
+ (NUMBERNS,u'format-source'),
+ (STYLENS,u'volatile'),
+ (NUMBERNS,u'transliteration-country'),
+ ),
+ (NUMBERNS,u'week-of-year'):(
+ (NUMBERNS,u'calendar'),
+ ),
+ (NUMBERNS,u'year'):(
+ (NUMBERNS,u'style'),
+ (NUMBERNS,u'calendar'),
+ ),
+ (DR3DNS,u'cube'):(
+ (DR3DNS,u'min-edge'),
+ (DR3DNS,u'max-edge'),
+ (DRAWNS,u'layer'),
+ (DR3DNS,u'transform'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (DRAWNS,u'id'),
+ ),
+ (DR3DNS,u'extrude'):(
+ (DRAWNS,u'layer'),
+ (SVGNS,u'd'),
+ (DR3DNS,u'transform'),
+ (SVGNS,u'viewBox'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (DRAWNS,u'id'),
+ ),
+ (DR3DNS,u'light'):(
+ (DR3DNS,u'diffuse-color'),
+ (DR3DNS,u'direction'),
+ (DR3DNS,u'specular'),
+ (DR3DNS,u'enabled'),
+ ),
+ (DR3DNS,u'rotate'):(
+ (DRAWNS,u'layer'),
+ (SVGNS,u'd'),
+ (DR3DNS,u'transform'),
+ (SVGNS,u'viewBox'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (DRAWNS,u'id'),
+ ),
+# allowed_attributes
+ (DR3DNS,u'scene'):(
+ (DR3DNS,u'ambient-color'),
+ (DR3DNS,u'distance'),
+ (DR3DNS,u'focal-length'),
+ (DR3DNS,u'lighting-mode'),
+ (DR3DNS,u'projection'),
+ (DR3DNS,u'shade-mode'),
+ (DR3DNS,u'shadow-slant'),
+ (DR3DNS,u'transform'),
+ (DR3DNS,u'vpn'),
+ (DR3DNS,u'vrp'),
+ (DR3DNS,u'vup'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'caption-id'),
+ (DRAWNS,u'layer'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (PRESENTATIONNS,u'style-name'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (SVGNS,u'x'),
+ (SVGNS,u'y'),
+ (TABLENS,u'end-cell-address'),
+ (TABLENS,u'end-x'),
+ (TABLENS,u'end-y'),
+ (TABLENS,u'table-background'),
+ (TEXTNS,u'anchor-page-number'),
+ (TEXTNS,u'anchor-type'),
+ ),
+ (DR3DNS,u'sphere'):(
+ (DRAWNS,u'layer'),
+ (DR3DNS,u'center'),
+ (DR3DNS,u'transform'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (DRAWNS,u'id'),
+ (DR3DNS,u'size'),
+ ),
+ (DRAWNS,u'a'):(
+ (OFFICENS,u'name'),
+ (OFFICENS,u'title'),
+ (XLINKNS,u'show'),
+ (OFFICENS,u'target-frame-name'),
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ (OFFICENS,u'server-map'),
+ ),
+ (DRAWNS,u'applet'):(
+ (DRAWNS,u'code'),
+ (XLINKNS,u'show'),
+ (DRAWNS,u'object'),
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ (DRAWNS,u'archive'),
+ (DRAWNS,u'may-script'),
+ ),
+ (DRAWNS,u'area-circle'):(
+ (OFFICENS,u'name'),
+ (XLINKNS,u'show'),
+ (SVGNS,u'cx'),
+ (XLINKNS,u'type'),
+ (DRAWNS,u'nohref'),
+ (SVGNS,u'cy'),
+ (XLINKNS,u'href'),
+ (SVGNS,u'r'),
+ (OFFICENS,u'target-frame-name'),
+ ),
+ (DRAWNS,u'area-polygon'):(
+ (OFFICENS,u'name'),
+ (XLINKNS,u'show'),
+ (XLINKNS,u'type'),
+ (SVGNS,u'height'),
+ (DRAWNS,u'nohref'),
+ (SVGNS,u'width'),
+ (XLINKNS,u'href'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (OFFICENS,u'target-frame-name'),
+ (SVGNS,u'viewBox'),
+ (DRAWNS,u'points'),
+ ),
+ (DRAWNS,u'area-rectangle'):(
+ (OFFICENS,u'name'),
+ (XLINKNS,u'show'),
+ (XLINKNS,u'type'),
+ (SVGNS,u'height'),
+ (DRAWNS,u'nohref'),
+ (SVGNS,u'width'),
+ (XLINKNS,u'href'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (OFFICENS,u'target-frame-name'),
+ ),
+ (DRAWNS,u'caption'):(
+ (TABLENS,u'table-background'),
+ (DRAWNS,u'layer'),
+ (DRAWNS,u'caption-id'),
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'text-style-name'),
+ (DRAWNS,u'caption-point-y'),
+ (DRAWNS,u'caption-point-x'),
+ (DRAWNS,u'transform'),
+ (TABLENS,u'end-y'),
+ (DRAWNS,u'corner-radius'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (TABLENS,u'end-x'),
+ (TEXTNS,u'anchor-page-number'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (SVGNS,u'height'),
+ (DRAWNS,u'id'),
+ (TEXTNS,u'anchor-type'),
+ ),
+ (DRAWNS,u'circle'):(
+ (DRAWNS,u'end-angle'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'kind'),
+ (DRAWNS,u'layer'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'start-angle'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (DRAWNS,u'caption-id'),
+ (DRAWNS,u'text-style-name'),
+ (DRAWNS,u'transform'),
+ (DRAWNS,u'z-index'),
+ (PRESENTATIONNS,u'class-names'),
+ (PRESENTATIONNS,u'style-name'),
+ (SVGNS,u'cx'),
+ (SVGNS,u'cy'),
+ (SVGNS,u'height'),
+ (SVGNS,u'r'),
+ (SVGNS,u'width'),
+ (SVGNS,u'x'),
+ (SVGNS,u'y'),
+ (TABLENS,u'end-cell-address'),
+ (TABLENS,u'end-x'),
+ (TABLENS,u'end-y'),
+ (TABLENS,u'table-background'),
+ (TEXTNS,u'anchor-page-number'),
+ (TEXTNS,u'anchor-type'),
+ ),
+ (DRAWNS,u'connector'):(
+ (DRAWNS,u'layer'),
+ (DRAWNS,u'end-shape'),
+ (TEXTNS,u'anchor-page-number'),
+ (SVGNS,u'y1'),
+ (SVGNS,u'y2'),
+ (TABLENS,u'table-background'),
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'transform'),
+ (DRAWNS,u'id'),
+ (TABLENS,u'end-y'),
+ (TABLENS,u'end-x'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (DRAWNS,u'caption-id'),
+ (DRAWNS,u'type'),
+ (DRAWNS,u'start-shape'),
+ (DRAWNS,u'z-index'),
+ (PRESENTATIONNS,u'style-name'),
+ (DRAWNS,u'start-glue-point'),
+ (SVGNS,u'x2'),
+ (SVGNS,u'x1'),
+ (TEXTNS,u'anchor-type'),
+ (DRAWNS,u'line-skew'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'end-glue-point'),
+ (DRAWNS,u'text-style-name'),
+ ),
+ (DRAWNS,u'contour-path'):(
+ (SVGNS,u'd'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'recreate-on-edit'),
+ (SVGNS,u'viewBox'),
+ (SVGNS,u'height'),
+ ),
+ (DRAWNS,u'contour-polygon'):(
+ (SVGNS,u'width'),
+ (DRAWNS,u'points'),
+ (DRAWNS,u'recreate-on-edit'),
+ (SVGNS,u'viewBox'),
+ (SVGNS,u'height'),
+ ),
+ (DRAWNS,u'control'):(
+ (DRAWNS,u'control'),
+ (DRAWNS,u'layer'),
+ (DRAWNS,u'caption-id'),
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'text-style-name'),
+ (TABLENS,u'table-background'),
+ (DRAWNS,u'transform'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (TABLENS,u'end-x'),
+ (TEXTNS,u'anchor-page-number'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'end-y'),
+ (DRAWNS,u'id'),
+ (TEXTNS,u'anchor-type'),
+ ),
+ (DRAWNS,u'custom-shape'):(
+ (DRAWNS,u'engine'),
+ (DRAWNS,u'caption-id'),
+ (DRAWNS,u'layer'),
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'text-style-name'),
+ (TABLENS,u'table-background'),
+ (DRAWNS,u'transform'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (TABLENS,u'end-x'),
+ (TEXTNS,u'anchor-page-number'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'end-y'),
+ (DRAWNS,u'data'),
+ (DRAWNS,u'id'),
+ (TEXTNS,u'anchor-type'),
+ ),
+# allowed_attributes
+ (DRAWNS,u'ellipse'):(
+ (DRAWNS,u'layer'),
+ (DRAWNS,u'start-angle'),
+ (SVGNS,u'cy'),
+ (SVGNS,u'cx'),
+ (TABLENS,u'table-background'),
+ (TABLENS,u'end-cell-address'),
+ (SVGNS,u'rx'),
+ (DRAWNS,u'transform'),
+ (DRAWNS,u'id'),
+ (SVGNS,u'width'),
+ (TABLENS,u'end-y'),
+ (TABLENS,u'end-x'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (DRAWNS,u'end-angle'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'caption-id'),
+ (PRESENTATIONNS,u'style-name'),
+ (SVGNS,u'height'),
+ (TEXTNS,u'anchor-type'),
+ (SVGNS,u'ry'),
+ (DRAWNS,u'kind'),
+ (DRAWNS,u'name'),
+ (TEXTNS,u'anchor-page-number'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (DRAWNS,u'text-style-name'),
+ ),
+# allowed_attributes
+ (DRAWNS,u'enhanced-geometry'):(
+ (DRAWNS,u'extrusion-rotation-center'),
+ (DRAWNS,u'extrusion-shininess'),
+ (DRAWNS,u'extrusion-rotation-angle'),
+ (DRAWNS,u'extrusion-allowed'),
+ (DRAWNS,u'extrusion-first-light-level'),
+ (DRAWNS,u'extrusion-specularity'),
+ (DRAWNS,u'extrusion-viewpoint'),
+ (DRAWNS,u'extrusion-second-light-level'),
+ (DRAWNS,u'extrusion-origin'),
+ (DRAWNS,u'extrusion-color'),
+ (SVGNS,u'viewBox'),
+ (DR3DNS,u'projection'),
+ (DRAWNS,u'extrusion-metal'),
+ (DRAWNS,u'extrusion-number-of-line-segments'),
+ (DRAWNS,u'text-path-same-letter-heights'),
+ (DRAWNS,u'extrusion-first-light-harsh'),
+ (DRAWNS,u'enhanced-path'),
+ (DRAWNS,u'text-rotate-angle'),
+ (DRAWNS,u'type'),
+ (DRAWNS,u'glue-point-leaving-directions'),
+ (DRAWNS,u'concentric-gradient-fill-allowed'),
+ (DRAWNS,u'text-path-scale'),
+ (DRAWNS,u'extrusion-brightness'),
+ (DRAWNS,u'extrusion-first-light-direction'),
+ (DRAWNS,u'extrusion-light-face'),
+ (DRAWNS,u'text-path-allowed'),
+ (DRAWNS,u'glue-points'),
+ (DRAWNS,u'mirror-vertical'),
+ (DRAWNS,u'extrusion-depth'),
+ (DRAWNS,u'extrusion-diffusion'),
+ (DRAWNS,u'extrusion-second-light-direction'),
+ (DRAWNS,u'extrusion-skew'),
+ (DR3DNS,u'shade-mode'),
+ (DRAWNS,u'path-stretchpoint-y'),
+ (DRAWNS,u'modifiers'),
+ (DRAWNS,u'extrusion'),
+ (DRAWNS,u'path-stretchpoint-x'),
+ (DRAWNS,u'text-areas'),
+ (DRAWNS,u'mirror-horizontal'),
+ (DRAWNS,u'text-path-mode'),
+ (DRAWNS,u'extrusion-second-light-harsh'),
+ (DRAWNS,u'glue-point-type'),
+ (DRAWNS,u'text-path'),
+ ),
+# allowed_attributes
+ (DRAWNS,u'equation'):(
+ (DRAWNS,u'formula'),
+ (DRAWNS,u'name'),
+ ),
+ (DRAWNS,u'fill-image'):(
+ (DRAWNS,u'name'),
+ (XLINKNS,u'show'),
+ (XLINKNS,u'actuate'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (XLINKNS,u'href'),
+ (DRAWNS,u'display-name'),
+ (XLINKNS,u'type'),
+ ),
+ (DRAWNS,u'floating-frame'):(
+ (XLINKNS,u'href'),
+ (XLINKNS,u'actuate'),
+ (DRAWNS,u'frame-name'),
+ (XLINKNS,u'type'),
+ (XLINKNS,u'show'),
+ ),
+ (DRAWNS,u'frame'):(
+ (DRAWNS,u'copy-of'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'layer'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'caption-id'),
+ (DRAWNS,u'style-name'),
+ (DRAWNS,u'text-style-name'),
+ (DRAWNS,u'transform'),
+ (DRAWNS,u'z-index'),
+ (PRESENTATIONNS,u'class'),
+ (PRESENTATIONNS,u'class-names'),
+ (PRESENTATIONNS,u'placeholder'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'user-transformed'),
+ (STYLENS,u'rel-height'),
+ (STYLENS,u'rel-width'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (SVGNS,u'x'),
+ (SVGNS,u'y'),
+ (TABLENS,u'end-cell-address'),
+ (TABLENS,u'end-x'),
+ (TABLENS,u'end-y'),
+ (TABLENS,u'table-background'),
+ (TEXTNS,u'anchor-page-number'),
+ (TEXTNS,u'anchor-type'),
+ ),
+# allowed_attributes
+ (DRAWNS,u'g'):(
+ (DRAWNS,u'id'),
+ (DRAWNS,u'caption-id'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (DRAWNS,u'z-index'),
+ (PRESENTATIONNS,u'class-names'),
+ (PRESENTATIONNS,u'style-name'),
+ (SVGNS,u'y'),
+ (TABLENS,u'end-cell-address'),
+ (TABLENS,u'end-x'),
+ (TABLENS,u'end-y'),
+ (TABLENS,u'table-background'),
+ (TEXTNS,u'anchor-page-number'),
+ (TEXTNS,u'anchor-type'),
+ ),
+ (DRAWNS,u'glue-point'):(
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (DRAWNS,u'align'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'escape-direction'),
+ ),
+ (DRAWNS,u'gradient'):(
+ (DRAWNS,u'style'),
+ (DRAWNS,u'angle'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'end-color'),
+ (DRAWNS,u'start-color'),
+ (DRAWNS,u'cy'),
+ (DRAWNS,u'cx'),
+ (DRAWNS,u'display-name'),
+ (DRAWNS,u'border'),
+ (DRAWNS,u'end-intensity'),
+ (DRAWNS,u'start-intensity'),
+ ),
+ (DRAWNS,u'handle'):(
+ (DRAWNS,u'handle-radius-range-minimum'),
+ (DRAWNS,u'handle-switched'),
+ (DRAWNS,u'handle-range-y-maximum'),
+ (DRAWNS,u'handle-mirror-horizontal'),
+ (DRAWNS,u'handle-range-x-maximum'),
+ (DRAWNS,u'handle-mirror-vertical'),
+ (DRAWNS,u'handle-range-y-minimum'),
+ (DRAWNS,u'handle-radius-range-maximum'),
+ (DRAWNS,u'handle-range-x-minimum'),
+ (DRAWNS,u'handle-position'),
+ (DRAWNS,u'handle-polar'),
+ ),
+ (DRAWNS,u'hatch'):(
+ (DRAWNS,u'distance'),
+ (DRAWNS,u'style'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'color'),
+ (DRAWNS,u'display-name'),
+ (DRAWNS,u'rotation'),
+ ),
+ (DRAWNS,u'image'):(
+ (DRAWNS,u'filter-name'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'show'),
+ ),
+ (DRAWNS,u'image-map'):(
+ ),
+ (DRAWNS,u'layer'):(
+ (DRAWNS,u'protected'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'display'),
+ ),
+# allowed_attributes
+ (DRAWNS,u'layer-set'):(
+ ),
+ (DRAWNS,u'line'):(
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'caption-id'),
+ (DRAWNS,u'layer'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'style-name'),
+ (DRAWNS,u'text-style-name'),
+ (DRAWNS,u'transform'),
+ (DRAWNS,u'z-index'),
+ (PRESENTATIONNS,u'class-names'),
+ (PRESENTATIONNS,u'style-name'),
+ (SVGNS,u'x1'),
+ (SVGNS,u'x2'),
+ (SVGNS,u'y1'),
+ (SVGNS,u'y2'),
+ (TABLENS,u'end-cell-address'),
+ (TABLENS,u'end-x'),
+ (TABLENS,u'end-y'),
+ (TABLENS,u'table-background'),
+ (TEXTNS,u'anchor-page-number'),
+ (TEXTNS,u'anchor-type'),
+ ),
+ (DRAWNS,u'marker'):(
+ (SVGNS,u'd'),
+ (DRAWNS,u'display-name'),
+ (DRAWNS,u'name'),
+ (SVGNS,u'viewBox'),
+ ),
+# allowed_attributes
+ (DRAWNS,u'measure'):(
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'layer'),
+ (SVGNS,u'y2'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'text-style-name'),
+ (DRAWNS,u'transform'),
+ (TABLENS,u'table-background'),
+ (SVGNS,u'x2'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (TABLENS,u'end-x'),
+ (TEXTNS,u'anchor-page-number'),
+ (SVGNS,u'y1'),
+ (DRAWNS,u'caption-id'),
+ (TABLENS,u'end-y'),
+ (SVGNS,u'x1'),
+ (DRAWNS,u'id'),
+ (TEXTNS,u'anchor-type'),
+ ),
+ (DRAWNS,u'object'):(
+ (XLINKNS,u'type'),
+ (XLINKNS,u'href'),
+ (DRAWNS,u'notify-on-update-of-ranges'),
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'show'),
+ ),
+ (DRAWNS,u'object-ole'):(
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ (DRAWNS,u'class-id'),
+ (XLINKNS,u'show'),
+ ),
+ (DRAWNS,u'opacity'):(
+ (DRAWNS,u'style'),
+ (DRAWNS,u'angle'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'start'),
+ (DRAWNS,u'cy'),
+ (DRAWNS,u'cx'),
+ (DRAWNS,u'end'),
+ (DRAWNS,u'display-name'),
+ (DRAWNS,u'border'),
+ ),
+ (DRAWNS,u'page'):(
+ (PRESENTATIONNS,u'presentation-page-layout-name'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'nav-order'),
+ (PRESENTATIONNS,u'use-footer-name'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'use-header-name'),
+ (DRAWNS,u'master-page-name'),
+ (DRAWNS,u'id'),
+ (PRESENTATIONNS,u'use-date-time-name'),
+ ),
+ (DRAWNS,u'page-thumbnail'):(
+ (TABLENS,u'table-background'),
+ (DRAWNS,u'caption-id'),
+ (PRESENTATIONNS,u'user-transformed'),
+ (DRAWNS,u'layer'),
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'transform'),
+ (DRAWNS,u'page-number'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (TABLENS,u'end-x'),
+ (TEXTNS,u'anchor-page-number'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'end-y'),
+ (PRESENTATIONNS,u'placeholder'),
+ (PRESENTATIONNS,u'class'),
+ (TEXTNS,u'anchor-type'),
+ ),
+ (DRAWNS,u'param'):(
+ (DRAWNS,u'name'),
+ (DRAWNS,u'value'),
+ ),
+# allowed_attributes
+ (DRAWNS,u'path'):(
+ (TABLENS,u'table-background'),
+ (DRAWNS,u'layer'),
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'caption-id'),
+ (SVGNS,u'd'),
+ (DRAWNS,u'text-style-name'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'transform'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (TABLENS,u'end-x'),
+ (TEXTNS,u'anchor-type'),
+ (TEXTNS,u'anchor-page-number'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'end-y'),
+ (SVGNS,u'viewBox'),
+ (DRAWNS,u'name'),
+ ),
+ (DRAWNS,u'plugin'):(
+ (XLINKNS,u'type'),
+ (XLINKNS,u'href'),
+ (DRAWNS,u'mime-type'),
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'show'),
+ ),
+ (DRAWNS,u'polygon'):(
+ (DRAWNS,u'caption-id'),
+ (TABLENS,u'table-background'),
+ (DRAWNS,u'layer'),
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'text-style-name'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'transform'),
+ (PRESENTATIONNS,u'style-name'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'points'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (TABLENS,u'end-x'),
+ (TEXTNS,u'anchor-page-number'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'end-y'),
+ (SVGNS,u'viewBox'),
+ (TEXTNS,u'anchor-type'),
+ ),
+# allowed_attributes
+ (DRAWNS,u'polyline'):(
+ (TABLENS,u'table-background'),
+ (DRAWNS,u'layer'),
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'text-style-name'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'caption-id'),
+ (DRAWNS,u'transform'),
+ (PRESENTATIONNS,u'style-name'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'points'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (TABLENS,u'end-x'),
+ (TEXTNS,u'anchor-page-number'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'end-y'),
+ (SVGNS,u'viewBox'),
+ (TEXTNS,u'anchor-type'),
+ ),
+ (DRAWNS,u'rect'):(
+ (DRAWNS,u'corner-radius'),
+ (DRAWNS,u'caption-id'),
+ (DRAWNS,u'id'),
+ (DRAWNS,u'layer'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'text-style-name'),
+ (DRAWNS,u'transform'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (PRESENTATIONNS,u'style-name'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (SVGNS,u'x'),
+ (SVGNS,u'y'),
+ (TABLENS,u'end-cell-address'),
+ (TABLENS,u'end-x'),
+ (TABLENS,u'end-y'),
+ (TABLENS,u'table-background'),
+ (TEXTNS,u'anchor-page-number'),
+ (TEXTNS,u'anchor-type'),
+ ),
+# allowed_attributes
+ (DRAWNS,u'regular-polygon'):(
+ (TABLENS,u'table-background'),
+ (DRAWNS,u'layer'),
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'caption-id'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'text-style-name'),
+ (TEXTNS,u'anchor-page-number'),
+ (DRAWNS,u'concave'),
+ (DRAWNS,u'sharpness'),
+ (DRAWNS,u'transform'),
+ (SVGNS,u'height'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'z-index'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (TABLENS,u'end-x'),
+ (DRAWNS,u'corners'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'end-y'),
+ (DRAWNS,u'id'),
+ (TEXTNS,u'anchor-type'),
+ ),
+ (DRAWNS,u'stroke-dash'):(
+ (DRAWNS,u'distance'),
+ (DRAWNS,u'dots1-length'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'dots2-length'),
+ (DRAWNS,u'style'),
+ (DRAWNS,u'dots1'),
+ (DRAWNS,u'display-name'),
+ (DRAWNS,u'dots2'),
+ ),
+ (DRAWNS,u'text-box'):(
+ (FONS,u'min-width'),
+ (DRAWNS,u'corner-radius'),
+ (FONS,u'max-height'),
+ (FONS,u'min-height'),
+ (DRAWNS,u'chain-next-name'),
+ (FONS,u'max-width'),
+ (TEXTNS,u'id'),
+ ),
+# allowed_attributes
+ (FORMNS,u'button'):(
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'focus-on-click'),
+ (FORMNS,u'image-align'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'button-type'),
+ (FORMNS,u'title'),
+ (FORMNS,u'default-button'),
+ (FORMNS,u'value'),
+ (FORMNS,u'label'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'image-data'),
+ (XLINKNS,u'href'),
+ (FORMNS,u'toggle'),
+ (FORMNS,u'xforms-submission'),
+ (OFFICENS,u'target-frame'),
+ (FORMNS,u'id'),
+ (FORMNS,u'image-position'),
+ ),
+ (FORMNS,u'checkbox'):(
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'image-align'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'title'),
+ (FORMNS,u'is-tristate'),
+ (FORMNS,u'current-state'),
+ (FORMNS,u'value'),
+ (FORMNS,u'label'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'state'),
+ (FORMNS,u'visual-effect'),
+ (FORMNS,u'id'),
+ (FORMNS,u'image-position'),
+ ),
+ (FORMNS,u'column'):(
+ (FORMNS,u'control-implementation'),
+ (FORMNS,u'text-style-name'),
+ (FORMNS,u'name'),
+ (FORMNS,u'label'),
+ ),
+ (FORMNS,u'combobox'):(
+ (FORMNS,u'convert-empty-to-null'),
+ (FORMNS,u'max-length'),
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'name'),
+ (FORMNS,u'dropdown'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'auto-complete'),
+ (FORMNS,u'value'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'readonly'),
+ (FORMNS,u'list-source'),
+ (FORMNS,u'title'),
+ (FORMNS,u'list-source-type'),
+ (FORMNS,u'id'),
+ (FORMNS,u'current-value'),
+ (FORMNS,u'size'),
+ ),
+# allowed_attributes
+ (FORMNS,u'connection-resource'):(
+ (XLINKNS,u'href'),
+ ),
+ (FORMNS,u'date'):(
+ (FORMNS,u'convert-empty-to-null'),
+ (FORMNS,u'max-length'),
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (FORMNS,u'min-value'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'max-value'),
+ (FORMNS,u'value'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'readonly'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'title'),
+ (FORMNS,u'id'),
+ (FORMNS,u'current-value'),
+ ),
+ (FORMNS,u'file'):(
+ (FORMNS,u'max-length'),
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'title'),
+ (FORMNS,u'value'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'readonly'),
+ (FORMNS,u'id'),
+ (FORMNS,u'current-value'),
+ ),
+ (FORMNS,u'fixed-text'):(
+ (FORMNS,u'name'),
+ (FORMNS,u'for'),
+ (FORMNS,u'title'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'multi-line'),
+ (FORMNS,u'label'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'id'),
+ ),
+# allowed_attributes
+ (FORMNS,u'form'):(
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'href'),
+ (FORMNS,u'allow-deletes'),
+ (FORMNS,u'command-type'),
+ (FORMNS,u'apply-filter'),
+ (XLINKNS,u'type'),
+ (FORMNS,u'method'),
+ (OFFICENS,u'target-frame'),
+ (FORMNS,u'navigation-mode'),
+ (FORMNS,u'detail-fields'),
+ (FORMNS,u'master-fields'),
+ (FORMNS,u'allow-updates'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-cycle'),
+ (FORMNS,u'control-implementation'),
+ (FORMNS,u'escape-processing'),
+ (FORMNS,u'filter'),
+ (FORMNS,u'command'),
+ (FORMNS,u'datasource'),
+ (FORMNS,u'enctype'),
+ (FORMNS,u'allow-inserts'),
+ (FORMNS,u'ignore-result'),
+ (FORMNS,u'order'),
+ ),
+ (FORMNS,u'formatted-text'):(
+ (FORMNS,u'convert-empty-to-null'),
+ (FORMNS,u'max-length'),
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'max-value'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'title'),
+ (FORMNS,u'value'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'readonly'),
+ (FORMNS,u'min-value'),
+ (FORMNS,u'validation'),
+ (FORMNS,u'id'),
+ (FORMNS,u'current-value'),
+ ),
+ (FORMNS,u'frame'):(
+ (FORMNS,u'name'),
+ (FORMNS,u'for'),
+ (FORMNS,u'title'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'label'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'id'),
+ ),
+# allowed_attributes
+ (FORMNS,u'generic-control'):(
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'name'),
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'grid'):(
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'title'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'hidden'):(
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'name'),
+ (FORMNS,u'value'),
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'image'):(
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'button-type'),
+ (FORMNS,u'title'),
+ (FORMNS,u'value'),
+ (OFFICENS,u'target-frame'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'image-data'),
+ (XLINKNS,u'href'),
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'image-frame'):(
+ (FORMNS,u'name'),
+ (FORMNS,u'title'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'readonly'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'image-data'),
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'item'):(
+ (FORMNS,u'label'),
+ ),
+ (FORMNS,u'list-property'):(
+ (FORMNS,u'property-name'),
+ (OFFICENS,u'value-type'),
+ ),
+ (FORMNS,u'list-value'):(
+ (OFFICENS,u'string-value'),
+ ),
+# allowed_attributes
+ (FORMNS,u'listbox'):(
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'bound-column'),
+ (FORMNS,u'multiple'),
+ (FORMNS,u'name'),
+ (FORMNS,u'dropdown'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'list-source'),
+ (FORMNS,u'title'),
+ (FORMNS,u'list-source-type'),
+ (FORMNS,u'id'),
+ (FORMNS,u'xforms-list-source'),
+ (FORMNS,u'size'),
+ ),
+ (FORMNS,u'number'):(
+ (FORMNS,u'convert-empty-to-null'),
+ (FORMNS,u'max-length'),
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (FORMNS,u'min-value'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'max-value'),
+ (FORMNS,u'value'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'readonly'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'title'),
+ (FORMNS,u'id'),
+ (FORMNS,u'current-value'),
+ ),
+ (FORMNS,u'option'):(
+ (FORMNS,u'current-selected'),
+ (FORMNS,u'selected'),
+ (FORMNS,u'value'),
+ (FORMNS,u'label'),
+ ),
+ (FORMNS,u'password'):(
+ (FORMNS,u'convert-empty-to-null'),
+ (FORMNS,u'max-length'),
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'title'),
+ (FORMNS,u'value'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'echo-char'),
+ (FORMNS,u'id'),
+ ),
+ (FORMNS,u'properties'):(
+ ),
+ (FORMNS,u'property'):(
+ (OFFICENS,u'string-value'),
+ (OFFICENS,u'value'),
+ (OFFICENS,u'boolean-value'),
+ (FORMNS,u'property-name'),
+ (OFFICENS,u'currency'),
+ (OFFICENS,u'date-value'),
+ (OFFICENS,u'value-type'),
+ (OFFICENS,u'time-value'),
+ ),
+ (FORMNS,u'radio'):(
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'selected'),
+ (FORMNS,u'image-align'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'current-selected'),
+ (FORMNS,u'value'),
+ (FORMNS,u'label'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'title'),
+ (FORMNS,u'visual-effect'),
+ (FORMNS,u'id'),
+ (FORMNS,u'image-position'),
+ ),
+ (FORMNS,u'text'):(
+ (FORMNS,u'convert-empty-to-null'),
+ (FORMNS,u'max-length'),
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'title'),
+ (FORMNS,u'value'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'readonly'),
+ (FORMNS,u'id'),
+ (FORMNS,u'current-value'),
+ ),
+ (FORMNS,u'textarea'):(
+ (FORMNS,u'convert-empty-to-null'),
+ (FORMNS,u'max-length'),
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'title'),
+ (FORMNS,u'value'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'readonly'),
+ (FORMNS,u'id'),
+ (FORMNS,u'current-value'),
+ ),
+ (FORMNS,u'time'):(
+ (FORMNS,u'convert-empty-to-null'),
+ (FORMNS,u'max-length'),
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (FORMNS,u'min-value'),
+ (FORMNS,u'data-field'),
+ (FORMNS,u'max-value'),
+ (FORMNS,u'value'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'readonly'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'title'),
+ (FORMNS,u'id'),
+ (FORMNS,u'current-value'),
+ ),
+ (FORMNS,u'value-range'):(
+ (FORMNS,u'tab-stop'),
+ (FORMNS,u'max-value'),
+ (FORMNS,u'name'),
+ (FORMNS,u'tab-index'),
+ (FORMNS,u'control-implementation'),
+ (XFORMSNS,u'bind'),
+ (FORMNS,u'title'),
+ (FORMNS,u'value'),
+ (FORMNS,u'disabled'),
+ (FORMNS,u'printable'),
+ (FORMNS,u'orientation'),
+ (FORMNS,u'page-step-size'),
+ (FORMNS,u'delay-for-repeat'),
+ (FORMNS,u'min-value'),
+ (FORMNS,u'id'),
+ (FORMNS,u'step-size'),
+ ),
+ (MANIFESTNS,'algorithm') : (
+ (MANIFESTNS,'algorithm-name'),
+ (MANIFESTNS,'initialisation-vector'),
+ ),
+ (MANIFESTNS,'encryption-data') : (
+ (MANIFESTNS,'checksum-type'),
+ (MANIFESTNS,'checksum'),
+ ),
+ (MANIFESTNS,'file-entry') : (
+ (MANIFESTNS,'full-path'),
+ (MANIFESTNS,'media-type'),
+ (MANIFESTNS,'size'),
+ ),
+ (MANIFESTNS,'key-derivation') : (
+ (MANIFESTNS,'key-derivation-name'),
+ (MANIFESTNS,'salt'),
+ (MANIFESTNS,'iteration-count'),
+ ),
+ (MANIFESTNS,u'manifest'):(
+ ),
+# allowed_attributes
+ (METANS,u'auto-reload'):(
+ (METANS,u'delay'),
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ (XLINKNS,u'show'),
+ ),
+ (METANS,u'creation-date'):(
+ ),
+ (METANS,u'date-string'):(
+ ),
+ (METANS,u'document-statistic'):(
+ (METANS,u'non-whitespace-character-count'),
+ (METANS,u'ole-object-count'),
+ (METANS,u'table-count'),
+ (METANS,u'row-count'),
+ (METANS,u'character-count'),
+ (METANS,u'sentence-count'),
+ (METANS,u'draw-count'),
+ (METANS,u'paragraph-count'),
+ (METANS,u'word-count'),
+ (METANS,u'object-count'),
+ (METANS,u'syllable-count'),
+ (METANS,u'image-count'),
+ (METANS,u'page-count'),
+ (METANS,u'frame-count'),
+ (METANS,u'cell-count'),
+ ),
+ (METANS,u'editing-cycles'):(
+ ),
+ (METANS,u'editing-duration'):(
+ ),
+ (METANS,u'generator'):(
+ ),
+# allowed_attributes
+ (METANS,u'hyperlink-behaviour'):(
+ (OFFICENS,u'target-frame-name'),
+ (XLINKNS,u'show'),
+ ),
+ (METANS,u'initial-creator'):(
+ ),
+ (METANS,u'keyword'):(
+ ),
+ (METANS,u'print-date'):(
+ ),
+ (METANS,u'printed-by'):(
+ ),
+ (METANS,u'template'):(
+ (METANS,u'date'),
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ (XLINKNS,u'title'),
+ ),
+ (METANS,u'user-defined'):(
+ (METANS,u'name'),
+ (METANS,u'value-type'),
+ ),
+ (OFFICENS,u'annotation'):(
+ (DRAWNS,u'layer'),
+ (SVGNS,u'height'),
+ (TEXTNS,u'anchor-page-number'),
+ (TABLENS,u'table-background'),
+ (TABLENS,u'end-cell-address'),
+ (DRAWNS,u'transform'),
+ (DRAWNS,u'id'),
+ (SVGNS,u'width'),
+ (DRAWNS,u'class-names'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'class-names'),
+ (TABLENS,u'end-x'),
+ (DRAWNS,u'text-style-name'),
+ (DRAWNS,u'z-index'),
+ (PRESENTATIONNS,u'style-name'),
+ (TEXTNS,u'anchor-type'),
+ (DRAWNS,u'name'),
+ (DRAWNS,u'caption-point-y'),
+ (DRAWNS,u'caption-point-x'),
+ (DRAWNS,u'corner-radius'),
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (TABLENS,u'end-y'),
+ (OFFICENS,u'display'),
+ ),
+ (OFFICENS,u'automatic-styles'):(
+ ),
+ (OFFICENS,u'binary-data'):(
+ ),
+ (OFFICENS,u'body'):(
+ ),
+ (OFFICENS,u'change-info'):(
+ ),
+ (OFFICENS,u'chart'):(
+ ),
+ (OFFICENS,u'dde-source'):(
+ (OFFICENS,u'dde-application'),
+ (OFFICENS,u'automatic-update'),
+ (OFFICENS,u'conversion-mode'),
+ (OFFICENS,u'dde-item'),
+ (OFFICENS,u'dde-topic'),
+ (OFFICENS,u'name'),
+ ),
+ (OFFICENS,u'document'):(
+ (OFFICENS,u'mimetype'),
+ (OFFICENS,u'version'),
+ ),
+ (OFFICENS,u'document-content'):(
+ (OFFICENS,u'version'),
+ ),
+ (OFFICENS,u'document-meta'):(
+ (OFFICENS,u'version'),
+ ),
+ (OFFICENS,u'document-settings'):(
+ (OFFICENS,u'version'),
+ ),
+ (OFFICENS,u'document-styles'):(
+ (OFFICENS,u'version'),
+ ),
+ (OFFICENS,u'drawing'):(
+ ),
+ (OFFICENS,u'event-listeners'):(
+ ),
+ (OFFICENS,u'font-face-decls'):(
+ ),
+ (OFFICENS,u'forms'):(
+ (FORMNS,u'automatic-focus'),
+ (FORMNS,u'apply-design-mode'),
+ ),
+ (OFFICENS,u'image'):(
+ ),
+# allowed_attributes
+ (OFFICENS,u'master-styles'):(
+ ),
+ (OFFICENS,u'meta'):(
+ ),
+ (OFFICENS,u'presentation'):(
+ ),
+ (OFFICENS,u'script'):(
+ (SCRIPTNS,u'language'),
+ ),
+ (OFFICENS,u'scripts'):(
+ ),
+ (OFFICENS,u'settings'):(
+ ),
+ (OFFICENS,u'spreadsheet'):(
+ (TABLENS,u'structure-protected'),
+ (TABLENS,u'protection-key'),
+ ),
+ (OFFICENS,u'styles'):(
+ ),
+ (OFFICENS,u'text'):(
+ (TEXTNS,u'global'),
+ (TEXTNS,u'use-soft-page-breaks'),
+ ),
+ (PRESENTATIONNS,u'animation-group'):(
+ ),
+ (PRESENTATIONNS,u'animations'):(
+ ),
+ (PRESENTATIONNS,u'date-time'):(
+ ),
+ (PRESENTATIONNS,u'date-time-decl'):(
+ (PRESENTATIONNS,u'source'),
+ (STYLENS,u'data-style-name'),
+ (PRESENTATIONNS,u'name'),
+ ),
+ (PRESENTATIONNS,u'dim'):(
+ (DRAWNS,u'color'),
+ (DRAWNS,u'shape-id'),
+ ),
+ (PRESENTATIONNS,u'event-listener'):(
+ (PRESENTATIONNS,u'direction'),
+ (XLINKNS,u'show'),
+ (XLINKNS,u'type'),
+ (XLINKNS,u'actuate'),
+ (PRESENTATIONNS,u'effect'),
+ (SCRIPTNS,u'event-name'),
+ (PRESENTATIONNS,u'start-scale'),
+ (XLINKNS,u'href'),
+ (PRESENTATIONNS,u'verb'),
+ (PRESENTATIONNS,u'action'),
+ (PRESENTATIONNS,u'speed'),
+ ),
+ (PRESENTATIONNS,u'footer'):(
+ ),
+ (PRESENTATIONNS,u'footer-decl'):(
+ (PRESENTATIONNS,u'name'),
+ ),
+ (PRESENTATIONNS,u'header'):(
+ ),
+ (PRESENTATIONNS,u'header-decl'):(
+ (PRESENTATIONNS,u'name'),
+ ),
+ (PRESENTATIONNS,u'hide-shape'):(
+ (PRESENTATIONNS,u'direction'),
+ (PRESENTATIONNS,u'effect'),
+ (PRESENTATIONNS,u'delay'),
+ (PRESENTATIONNS,u'start-scale'),
+ (PRESENTATIONNS,u'path-id'),
+ (PRESENTATIONNS,u'speed'),
+ (DRAWNS,u'shape-id'),
+ ),
+# allowed_attributes
+ (PRESENTATIONNS,u'hide-text'):(
+ (PRESENTATIONNS,u'direction'),
+ (PRESENTATIONNS,u'effect'),
+ (PRESENTATIONNS,u'delay'),
+ (PRESENTATIONNS,u'start-scale'),
+ (PRESENTATIONNS,u'path-id'),
+ (PRESENTATIONNS,u'speed'),
+ (DRAWNS,u'shape-id'),
+ ),
+ (PRESENTATIONNS,u'notes'):(
+ (STYLENS,u'page-layout-name'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'use-header-name'),
+ (PRESENTATIONNS,u'use-date-time-name'),
+ (PRESENTATIONNS,u'use-footer-name'),
+ ),
+ (PRESENTATIONNS,u'placeholder'):(
+ (SVGNS,u'y'),
+ (SVGNS,u'x'),
+ (SVGNS,u'height'),
+ (PRESENTATIONNS,u'object'),
+ (SVGNS,u'width'),
+ ),
+ (PRESENTATIONNS,u'play'):(
+ (PRESENTATIONNS,u'speed'),
+ (DRAWNS,u'shape-id'),
+ ),
+# allowed_attributes
+ (PRESENTATIONNS,u'settings'):(
+ (PRESENTATIONNS,u'animations'),
+ (PRESENTATIONNS,u'endless'),
+ (PRESENTATIONNS,u'force-manual'),
+ (PRESENTATIONNS,u'full-screen'),
+ (PRESENTATIONNS,u'mouse-as-pen'),
+ (PRESENTATIONNS,u'mouse-visible'),
+ (PRESENTATIONNS,u'pause'),
+ (PRESENTATIONNS,u'show'),
+ (PRESENTATIONNS,u'show-end-of-presentation-slide'),
+ (PRESENTATIONNS,u'show-logo'),
+ (PRESENTATIONNS,u'start-page'),
+ (PRESENTATIONNS,u'start-with-navigator'),
+ (PRESENTATIONNS,u'stay-on-top'),
+ (PRESENTATIONNS,u'transition-on-click'),
+ ),
+ (PRESENTATIONNS,u'show'):(
+ (PRESENTATIONNS,u'name'),
+ (PRESENTATIONNS,u'pages'),
+ ),
+ (PRESENTATIONNS,u'show-shape'):(
+ (PRESENTATIONNS,u'direction'),
+ (PRESENTATIONNS,u'effect'),
+ (PRESENTATIONNS,u'delay'),
+ (PRESENTATIONNS,u'start-scale'),
+ (PRESENTATIONNS,u'path-id'),
+ (PRESENTATIONNS,u'speed'),
+ (DRAWNS,u'shape-id'),
+ ),
+ (PRESENTATIONNS,u'show-text'):(
+ (PRESENTATIONNS,u'direction'),
+ (PRESENTATIONNS,u'effect'),
+ (PRESENTATIONNS,u'delay'),
+ (PRESENTATIONNS,u'start-scale'),
+ (PRESENTATIONNS,u'path-id'),
+ (PRESENTATIONNS,u'speed'),
+ (DRAWNS,u'shape-id'),
+ ),
+ (PRESENTATIONNS,u'sound'):(
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ (PRESENTATIONNS,u'play-full'),
+ (XLINKNS,u'show'),
+ ),
+# allowed_attributes
+ (SCRIPTNS,u'event-listener'):(
+ (SCRIPTNS,u'language'),
+ (SCRIPTNS,u'macro-name'),
+ (XLINKNS,u'actuate'),
+ (SCRIPTNS,u'event-name'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ ),
+ (STYLENS,u'background-image'):(
+ (DRAWNS,u'opacity'),
+ (STYLENS,u'repeat'),
+ (XLINKNS,u'show'),
+ (XLINKNS,u'actuate'),
+ (STYLENS,u'filter-name'),
+ (XLINKNS,u'href'),
+ (STYLENS,u'position'),
+ (XLINKNS,u'type'),
+ ),
+ (STYLENS,u'chart-properties'): (
+ (CHARTNS,u'connect-bars'),
+ (CHARTNS,u'data-label-number'),
+ (CHARTNS,u'data-label-symbol'),
+ (CHARTNS,u'data-label-text'),
+ (CHARTNS,u'deep'),
+ (CHARTNS,u'display-label'),
+ (CHARTNS,u'error-category'),
+ (CHARTNS,u'error-lower-indicator'),
+ (CHARTNS,u'error-lower-limit'),
+ (CHARTNS,u'error-margin'),
+ (CHARTNS,u'error-percentage'),
+ (CHARTNS,u'error-upper-indicator'),
+ (CHARTNS,u'error-upper-limit'),
+ (CHARTNS,u'gap-width'),
+ (CHARTNS,u'interpolation'),
+ (CHARTNS,u'interval-major'),
+ (CHARTNS,u'interval-minor-divisor'),
+ (CHARTNS,u'japanese-candle-stick'),
+ (CHARTNS,u'label-arrangement'),
+ (CHARTNS,u'lines'),
+ (CHARTNS,u'link-data-style-to-source'),
+ (CHARTNS,u'logarithmic'),
+ (CHARTNS,u'maximum'),
+ (CHARTNS,u'mean-value'),
+ (CHARTNS,u'minimum'),
+ (CHARTNS,u'origin'),
+ (CHARTNS,u'overlap'),
+ (CHARTNS,u'percentage'),
+ (CHARTNS,u'pie-offset'),
+ (CHARTNS,u'regression-type'),
+ (CHARTNS,u'scale-text'),
+ (CHARTNS,u'series-source'),
+ (CHARTNS,u'solid-type'),
+ (CHARTNS,u'spline-order'),
+ (CHARTNS,u'spline-resolution'),
+ (CHARTNS,u'stacked'),
+ (CHARTNS,u'symbol-height'),
+ (CHARTNS,u'symbol-name'),
+ (CHARTNS,u'symbol-type'),
+ (CHARTNS,u'symbol-width'),
+ (CHARTNS,u'text-overlap'),
+ (CHARTNS,u'three-dimensional'),
+ (CHARTNS,u'tick-marks-major-inner'),
+ (CHARTNS,u'tick-marks-major-outer'),
+ (CHARTNS,u'tick-marks-minor-inner'),
+ (CHARTNS,u'tick-marks-minor-outer'),
+ (CHARTNS,u'vertical'),
+ (CHARTNS,u'visible'),
+ (STYLENS,u'direction'),
+ (STYLENS,u'rotation-angle'),
+ (TEXTNS,u'line-break'),
+ ),
+ (STYLENS,u'column'):(
+ (FONS,u'end-indent'),
+ (FONS,u'space-before'),
+ (FONS,u'start-indent'),
+ (FONS,u'space-after'),
+ (STYLENS,u'rel-width'),
+ ),
+ (STYLENS,u'column-sep'):(
+ (STYLENS,u'color'),
+ (STYLENS,u'width'),
+ (STYLENS,u'style'),
+ (STYLENS,u'vertical-align'),
+ (STYLENS,u'height'),
+ ),
+ (STYLENS,u'columns'):(
+ (FONS,u'column-count'),
+ (FONS,u'column-gap'),
+ ),
+ (STYLENS,u'default-style'):(
+ (STYLENS,u'family'),
+ ),
+# allowed_attributes
+ (STYLENS,u'drawing-page-properties'): (
+ (DRAWNS,u'fill'),
+ (DRAWNS,u'fill-color'),
+ (DRAWNS,u'secondary-fill-color'),
+ (DRAWNS,u'fill-gradient-name'),
+ (DRAWNS,u'gradient-step-count'),
+ (DRAWNS,u'fill-hatch-name'),
+ (DRAWNS,u'fill-hatch-solid'),
+ (DRAWNS,u'fill-image-name'),
+ (STYLENS,u'repeat'),
+ (DRAWNS,u'fill-image-width'),
+ (DRAWNS,u'fill-image-height'),
+ (DRAWNS,u'fill-image-ref-point-x'),
+ (DRAWNS,u'fill-image-ref-point-y'),
+ (DRAWNS,u'fill-image-ref-point'),
+ (DRAWNS,u'tile-repeat-offset'),
+ (DRAWNS,u'opacity'),
+ (DRAWNS,u'opacity-name'),
+ (SVGNS,u'fill-rule'),
+ (PRESENTATIONNS,u'transition-type'),
+ (PRESENTATIONNS,u'transition-style'),
+ (PRESENTATIONNS,u'transition-speed'),
+ (SMILNS,u'type'),
+ (SMILNS,u'subtype'),
+ (SMILNS,u'direction'),
+ (SMILNS,u'fadeColor'),
+ (PRESENTATIONNS,u'duration'),
+ (PRESENTATIONNS,u'visibility'),
+ (DRAWNS,u'background-size'),
+ (PRESENTATIONNS,u'background-objects-visible'),
+ (PRESENTATIONNS,u'background-visible'),
+ (PRESENTATIONNS,u'display-header'),
+ (PRESENTATIONNS,u'display-footer'),
+ (PRESENTATIONNS,u'display-page-number'),
+ (PRESENTATIONNS,u'display-date-time'),
+ ),
+ (STYLENS,u'drop-cap'):(
+ (STYLENS,u'distance'),
+ (STYLENS,u'length'),
+ (STYLENS,u'style-name'),
+ (STYLENS,u'lines'),
+ ),
+# allowed_attributes
+ (STYLENS,u'font-face'):(
+ (STYLENS,u'font-adornments'),
+ (STYLENS,u'font-charset'),
+ (STYLENS,u'font-family-generic'),
+ (STYLENS,u'font-pitch'),
+ (STYLENS,u'name'),
+ (SVGNS,u'accent-height'),
+ (SVGNS,u'alphabetic'),
+ (SVGNS,u'ascent'),
+ (SVGNS,u'bbox'),
+ (SVGNS,u'cap-height'),
+ (SVGNS,u'descent'),
+ (SVGNS,u'font-family'),
+ (SVGNS,u'font-size'),
+ (SVGNS,u'font-stretch'),
+ (SVGNS,u'font-style'),
+ (SVGNS,u'font-variant'),
+ (SVGNS,u'font-weight'),
+ (SVGNS,u'hanging'),
+ (SVGNS,u'ideographic'),
+ (SVGNS,u'mathematical'),
+ (SVGNS,u'overline-position'),
+ (SVGNS,u'overline-thickness'),
+ (SVGNS,u'panose-1'),
+ (SVGNS,u'slope'),
+ (SVGNS,u'stemh'),
+ (SVGNS,u'stemv'),
+ (SVGNS,u'strikethrough-position'),
+ (SVGNS,u'strikethrough-thickness'),
+ (SVGNS,u'underline-position'),
+ (SVGNS,u'underline-thickness'),
+ (SVGNS,u'unicode-range'),
+ (SVGNS,u'units-per-em'),
+ (SVGNS,u'v-alphabetic'),
+ (SVGNS,u'v-hanging'),
+ (SVGNS,u'v-ideographic'),
+ (SVGNS,u'v-mathematical'),
+ (SVGNS,u'widths'),
+ (SVGNS,u'x-height'),
+ ),
+ (STYLENS,u'footer'):(
+ (STYLENS,u'display'),
+ ),
+ (STYLENS,u'footer-left'):(
+ (STYLENS,u'display'),
+ ),
+ (STYLENS,u'footer-style'):(
+ ),
+ (STYLENS,u'footnote-sep'):(
+ (STYLENS,u'distance-after-sep'),
+ (STYLENS,u'color'),
+ (STYLENS,u'rel-width'),
+ (STYLENS,u'width'),
+ (STYLENS,u'distance-before-sep'),
+ (STYLENS,u'line-style'),
+ (STYLENS,u'adjustment'),
+ ),
+# allowed_attributes
+ (STYLENS,u'graphic-properties'): (
+ (DR3DNS,u'ambient-color'),
+ (DR3DNS,u'back-scale'),
+ (DR3DNS,u'backface-culling'),
+ (DR3DNS,u'close-back'),
+ (DR3DNS,u'close-front'),
+ (DR3DNS,u'depth'),
+ (DR3DNS,u'diffuse-color'),
+ (DR3DNS,u'edge-rounding'),
+ (DR3DNS,u'edge-rounding-mode'),
+ (DR3DNS,u'emissive-color'),
+ (DR3DNS,u'end-angle'),
+ (DR3DNS,u'horizontal-segments'),
+ (DR3DNS,u'lighting-mode'),
+ (DR3DNS,u'normals-direction'),
+ (DR3DNS,u'normals-kind'),
+ (DR3DNS,u'shadow'),
+ (DR3DNS,u'shininess'),
+ (DR3DNS,u'specular-color'),
+ (DR3DNS,u'texture-filter'),
+ (DR3DNS,u'texture-generation-mode-x'),
+ (DR3DNS,u'texture-generation-mode-y'),
+ (DR3DNS,u'texture-kind'),
+ (DR3DNS,u'texture-mode'),
+ (DR3DNS,u'vertical-segments'),
+ (DRAWNS,u'auto-grow-height'),
+ (DRAWNS,u'auto-grow-width'),
+ (DRAWNS,u'blue'),
+ (DRAWNS,u'caption-angle'),
+ (DRAWNS,u'caption-angle-type'),
+ (DRAWNS,u'caption-escape'),
+ (DRAWNS,u'caption-escape-direction'),
+ (DRAWNS,u'caption-fit-line-length'),
+ (DRAWNS,u'caption-gap'),
+ (DRAWNS,u'caption-line-length'),
+ (DRAWNS,u'caption-type'),
+ (DRAWNS,u'color-inversion'),
+ (DRAWNS,u'color-mode'),
+ (DRAWNS,u'contrast'),
+ (DRAWNS,u'decimal-places'),
+ (DRAWNS,u'end-guide'),
+ (DRAWNS,u'end-line-spacing-horizontal'),
+ (DRAWNS,u'end-line-spacing-vertical'),
+ (DRAWNS,u'fill'),
+ (DRAWNS,u'fill-color'),
+ (DRAWNS,u'fill-gradient-name'),
+ (DRAWNS,u'fill-hatch-name'),
+ (DRAWNS,u'fill-hatch-solid'),
+ (DRAWNS,u'fill-image-height'),
+ (DRAWNS,u'fill-image-name'),
+ (DRAWNS,u'fill-image-ref-point'),
+ (DRAWNS,u'fill-image-ref-point-x'),
+ (DRAWNS,u'fill-image-ref-point-y'),
+ (DRAWNS,u'fill-image-width'),
+# allowed_attributes
+ (DRAWNS,u'fit-to-contour'),
+ (DRAWNS,u'fit-to-size'),
+ (DRAWNS,u'frame-display-border'),
+ (DRAWNS,u'frame-display-scrollbar'),
+ (DRAWNS,u'frame-margin-horizontal'),
+ (DRAWNS,u'frame-margin-vertical'),
+ (DRAWNS,u'gamma'),
+ (DRAWNS,u'gradient-step-count'),
+ (DRAWNS,u'green'),
+ (DRAWNS,u'guide-distance'),
+ (DRAWNS,u'guide-overhang'),
+ (DRAWNS,u'image-opacity'),
+ (DRAWNS,u'line-distance'),
+ (DRAWNS,u'luminance'),
+ (DRAWNS,u'marker-end'),
+ (DRAWNS,u'marker-end-center'),
+ (DRAWNS,u'marker-end-width'),
+ (DRAWNS,u'marker-start'),
+ (DRAWNS,u'marker-start-center'),
+ (DRAWNS,u'marker-start-width'),
+ (DRAWNS,u'measure-align'),
+ (DRAWNS,u'measure-vertical-align'),
+ (DRAWNS,u'ole-draw-aspect'),
+ (DRAWNS,u'opacity'),
+ (DRAWNS,u'opacity-name'),
+ (DRAWNS,u'parallel'),
+ (DRAWNS,u'placing'),
+ (DRAWNS,u'red'),
+ (DRAWNS,u'secondary-fill-color'),
+ (DRAWNS,u'shadow'),
+ (DRAWNS,u'shadow-color'),
+ (DRAWNS,u'shadow-offset-x'),
+ (DRAWNS,u'shadow-offset-y'),
+ (DRAWNS,u'shadow-opacity'),
+ (DRAWNS,u'show-unit'),
+ (DRAWNS,u'start-guide'),
+ (DRAWNS,u'start-line-spacing-horizontal'),
+ (DRAWNS,u'start-line-spacing-vertical'),
+ (DRAWNS,u'stroke'),
+ (DRAWNS,u'stroke-dash'),
+ (DRAWNS,u'stroke-dash-names'),
+ (DRAWNS,u'stroke-linejoin'),
+ (DRAWNS,u'symbol-color'),
+ (DRAWNS,u'textarea-horizontal-align'),
+ (DRAWNS,u'textarea-vertical-align'),
+ (DRAWNS,u'tile-repeat-offset'),
+ (DRAWNS,u'unit'),
+ (DRAWNS,u'visible-area-height'),
+ (DRAWNS,u'visible-area-left'),
+ (DRAWNS,u'visible-area-top'),
+ (DRAWNS,u'visible-area-width'),
+ (DRAWNS,u'wrap-influence-on-position'),
+# allowed_attributes
+ (FONS,u'background-color'),
+ (FONS,u'border'),
+ (FONS,u'border-bottom'),
+ (FONS,u'border-left'),
+ (FONS,u'border-right'),
+ (FONS,u'border-top'),
+ (FONS,u'clip'),
+ (FONS,u'margin'),
+ (FONS,u'margin-bottom'),
+ (FONS,u'margin-left'),
+ (FONS,u'margin-right'),
+ (FONS,u'margin-top'),
+ (FONS,u'max-height'),
+ (FONS,u'max-width'),
+ (FONS,u'min-height'),
+ (FONS,u'min-width'),
+ (FONS,u'padding'),
+ (FONS,u'padding-bottom'),
+ (FONS,u'padding-left'),
+ (FONS,u'padding-right'),
+ (FONS,u'padding-top'),
+ (FONS,u'wrap-option'),
+ (STYLENS,u'border-line-width'),
+ (STYLENS,u'border-line-width-bottom'),
+ (STYLENS,u'border-line-width-left'),
+ (STYLENS,u'border-line-width-right'),
+ (STYLENS,u'border-line-width-top'),
+ (STYLENS,u'editable'),
+ (STYLENS,u'flow-with-text'),
+ (STYLENS,u'horizontal-pos'),
+ (STYLENS,u'horizontal-rel'),
+ (STYLENS,u'mirror'),
+ (STYLENS,u'number-wrapped-paragraphs'),
+ (STYLENS,u'overflow-behavior'),
+ (STYLENS,u'print-content'),
+ (STYLENS,u'protect'),
+ (STYLENS,u'rel-height'),
+ (STYLENS,u'rel-width'),
+ (STYLENS,u'repeat'),
+ (STYLENS,u'run-through'),
+ (STYLENS,u'shadow'),
+ (STYLENS,u'vertical-pos'),
+ (STYLENS,u'vertical-rel'),
+ (STYLENS,u'wrap'),
+ (STYLENS,u'wrap-contour'),
+ (STYLENS,u'wrap-contour-mode'),
+ (STYLENS,u'wrap-dynamic-threshold'),
+ (STYLENS,u'writing-mode'),
+ (SVGNS,u'fill-rule'),
+ (SVGNS,u'height'),
+ (SVGNS,u'stroke-color'),
+ (SVGNS,u'stroke-opacity'),
+ (SVGNS,u'stroke-width'),
+ (SVGNS,u'width'),
+ (SVGNS,u'x'),
+ (SVGNS,u'y'),
+ (TEXTNS,u'anchor-page-number'),
+ (TEXTNS,u'anchor-type'),
+ (TEXTNS,u'animation'),
+ (TEXTNS,u'animation-delay'),
+ (TEXTNS,u'animation-direction'),
+ (TEXTNS,u'animation-repeat'),
+ (TEXTNS,u'animation-start-inside'),
+ (TEXTNS,u'animation-steps'),
+ (TEXTNS,u'animation-stop-inside'),
+ ),
+ (STYLENS,u'handout-master'):(
+ (PRESENTATIONNS,u'presentation-page-layout-name'),
+ (STYLENS,u'page-layout-name'),
+ (PRESENTATIONNS,u'use-footer-name'),
+ (DRAWNS,u'style-name'),
+ (PRESENTATIONNS,u'use-header-name'),
+ (PRESENTATIONNS,u'use-date-time-name'),
+ ),
+# allowed_attributes
+ (STYLENS,u'header'):(
+ (STYLENS,u'display'),
+ ),
+ (STYLENS,u'header-footer-properties'): (
+ (FONS,u'background-color'),
+ (FONS,u'border'),
+ (FONS,u'border-bottom'),
+ (FONS,u'border-left'),
+ (FONS,u'border-right'),
+ (FONS,u'border-top'),
+ (FONS,u'margin'),
+ (FONS,u'margin-bottom'),
+ (FONS,u'margin-left'),
+ (FONS,u'margin-right'),
+ (FONS,u'margin-top'),
+ (FONS,u'min-height'),
+ (FONS,u'padding'),
+ (FONS,u'padding-bottom'),
+ (FONS,u'padding-left'),
+ (FONS,u'padding-right'),
+ (FONS,u'padding-top'),
+ (STYLENS,u'border-line-width'),
+ (STYLENS,u'border-line-width-bottom'),
+ (STYLENS,u'border-line-width-left'),
+ (STYLENS,u'border-line-width-right'),
+ (STYLENS,u'border-line-width-top'),
+ (STYLENS,u'dynamic-spacing'),
+ (STYLENS,u'shadow'),
+ (SVGNS,u'height'),
+ ),
+ (STYLENS,u'header-left'):(
+ (STYLENS,u'display'),
+ ),
+ (STYLENS,u'header-style'):(
+ ),
+# allowed_attributes
+ (STYLENS,u'list-level-properties'): (
+ (FONS,u'height'),
+ (FONS,u'text-align'),
+ (FONS,u'width'),
+ (STYLENS,u'font-name'),
+ (STYLENS,u'vertical-pos'),
+ (STYLENS,u'vertical-rel'),
+ (SVGNS,u'y'),
+ (TEXTNS,u'min-label-distance'),
+ (TEXTNS,u'min-label-width'),
+ (TEXTNS,u'space-before'),
+ ),
+ (STYLENS,u'map'):(
+ (STYLENS,u'apply-style-name'),
+ (STYLENS,u'base-cell-address'),
+ (STYLENS,u'condition'),
+ ),
+ (STYLENS,u'master-page'):(
+ (STYLENS,u'page-layout-name'),
+ (STYLENS,u'display-name'),
+ (DRAWNS,u'style-name'),
+ (STYLENS,u'name'),
+ (STYLENS,u'next-style-name'),
+ ),
+ (STYLENS,u'page-layout'):(
+ (STYLENS,u'name'),
+ (STYLENS,u'page-usage'),
+ ),
+# allowed_attributes
+ (STYLENS,u'page-layout-properties'): (
+ (FONS,u'background-color'),
+ (FONS,u'border'),
+ (FONS,u'border-bottom'),
+ (FONS,u'border-left'),
+ (FONS,u'border-right'),
+ (FONS,u'border-top'),
+ (FONS,u'margin'),
+ (FONS,u'margin-bottom'),
+ (FONS,u'margin-left'),
+ (FONS,u'margin-right'),
+ (FONS,u'margin-top'),
+ (FONS,u'padding'),
+ (FONS,u'padding-bottom'),
+ (FONS,u'padding-left'),
+ (FONS,u'padding-right'),
+ (FONS,u'padding-top'),
+ (FONS,u'page-height'),
+ (FONS,u'page-width'),
+ (STYLENS,u'border-line-width'),
+ (STYLENS,u'border-line-width-bottom'),
+ (STYLENS,u'border-line-width-left'),
+ (STYLENS,u'border-line-width-right'),
+ (STYLENS,u'border-line-width-top'),
+ (STYLENS,u'first-page-number'),
+ (STYLENS,u'footnote-max-height'),
+ (STYLENS,u'layout-grid-base-height'),
+ (STYLENS,u'layout-grid-color'),
+ (STYLENS,u'layout-grid-display'),
+ (STYLENS,u'layout-grid-lines'),
+ (STYLENS,u'layout-grid-mode'),
+ (STYLENS,u'layout-grid-print'),
+ (STYLENS,u'layout-grid-ruby-below'),
+ (STYLENS,u'layout-grid-ruby-height'),
+ (STYLENS,u'num-format'),
+ (STYLENS,u'num-letter-sync'),
+ (STYLENS,u'num-prefix'),
+ (STYLENS,u'num-suffix'),
+ (STYLENS,u'paper-tray-name'),
+ (STYLENS,u'print'),
+ (STYLENS,u'print-orientation'),
+ (STYLENS,u'print-page-order'),
+ (STYLENS,u'register-truth-ref-style-name'),
+ (STYLENS,u'scale-to'),
+ (STYLENS,u'scale-to-pages'),
+ (STYLENS,u'shadow'),
+ (STYLENS,u'table-centering'),
+ (STYLENS,u'writing-mode'),
+ ),
+# allowed_attributes
+ (STYLENS,u'paragraph-properties'): (
+ (FONS,u'background-color'),
+ (FONS,u'border'),
+ (FONS,u'border-bottom'),
+ (FONS,u'border-left'),
+ (FONS,u'border-right'),
+ (FONS,u'border-top'),
+ (FONS,u'break-after'),
+ (FONS,u'break-before'),
+ (FONS,u'hyphenation-keep'),
+ (FONS,u'hyphenation-ladder-count'),
+ (FONS,u'keep-together'),
+ (FONS,u'keep-with-next'),
+ (FONS,u'line-height'),
+ (FONS,u'margin'),
+ (FONS,u'margin-bottom'),
+ (FONS,u'margin-left'),
+ (FONS,u'margin-right'),
+ (FONS,u'margin-top'),
+ (FONS,u'orphans'),
+ (FONS,u'padding'),
+ (FONS,u'padding-bottom'),
+ (FONS,u'padding-left'),
+ (FONS,u'padding-right'),
+ (FONS,u'padding-top'),
+ (FONS,u'text-align'),
+ (FONS,u'text-align-last'),
+ (FONS,u'text-indent'),
+ (FONS,u'widows'),
+ (STYLENS,u'auto-text-indent'),
+ (STYLENS,u'background-transparency'),
+ (STYLENS,u'border-line-width'),
+ (STYLENS,u'border-line-width-bottom'),
+ (STYLENS,u'border-line-width-left'),
+ (STYLENS,u'border-line-width-right'),
+ (STYLENS,u'border-line-width-top'),
+ (STYLENS,u'font-independent-line-spacing'),
+ (STYLENS,u'justify-single-word'),
+ (STYLENS,u'line-break'),
+ (STYLENS,u'line-height-at-least'),
+ (STYLENS,u'line-spacing'),
+ (STYLENS,u'page-number'),
+ (STYLENS,u'punctuation-wrap'),
+ (STYLENS,u'register-true'),
+ (STYLENS,u'shadow'),
+ (STYLENS,u'snap-to-layout-grid'),
+ (STYLENS,u'tab-stop-distance'),
+ (STYLENS,u'text-autospace'),
+ (STYLENS,u'vertical-align'),
+ (STYLENS,u'writing-mode'),
+ (STYLENS,u'writing-mode-automatic'),
+ (TEXTNS,u'line-number'),
+ (TEXTNS,u'number-lines'),
+ ),
+ (STYLENS,u'presentation-page-layout'):(
+ (STYLENS,u'display-name'),
+ (STYLENS,u'name'),
+ ),
+# allowed_attributes
+ (STYLENS,u'region-center'):(
+ ),
+ (STYLENS,u'region-left'):(
+ ),
+ (STYLENS,u'region-right'):(
+ ),
+ (STYLENS,u'ruby-properties'): (
+ (STYLENS,u'ruby-position'),
+ (STYLENS,u'ruby-align'),
+ ),
+ (STYLENS,u'section-properties'): (
+ (FONS,u'background-color'),
+ (FONS,u'margin-left'),
+ (FONS,u'margin-right'),
+ (STYLENS,u'protect'),
+ (STYLENS,u'writing-mode'),
+ (TEXTNS,u'dont-balance-text-columns'),
+ ),
+ (STYLENS,u'style'):(
+ (STYLENS,u'family'),
+ (STYLENS,u'list-style-name'),
+ (STYLENS,u'name'),
+ (STYLENS,u'auto-update'),
+ (STYLENS,u'default-outline-level'),
+ (STYLENS,u'class'),
+ (STYLENS,u'next-style-name'),
+ (STYLENS,u'data-style-name'),
+ (STYLENS,u'master-page-name'),
+ (STYLENS,u'display-name'),
+ (STYLENS,u'parent-style-name'),
+ ),
+# allowed_attributes
+ (STYLENS,u'tab-stop'):(
+ (STYLENS,u'leader-text-style'),
+ (STYLENS,u'leader-width'),
+ (STYLENS,u'leader-style'),
+ (STYLENS,u'char'),
+ (STYLENS,u'leader-color'),
+ (STYLENS,u'position'),
+ (STYLENS,u'leader-text'),
+ (STYLENS,u'type'),
+ (STYLENS,u'leader-type'),
+ ),
+ (STYLENS,u'tab-stops'):(
+ ),
+ (STYLENS,u'table-cell-properties'): (
+ (FONS,u'background-color'),
+ (FONS,u'border'),
+ (FONS,u'border-bottom'),
+ (FONS,u'border-left'),
+ (FONS,u'border-right'),
+ (FONS,u'border-top'),
+ (FONS,u'padding'),
+ (FONS,u'padding-bottom'),
+ (FONS,u'padding-left'),
+ (FONS,u'padding-right'),
+ (FONS,u'padding-top'),
+ (FONS,u'wrap-option'),
+ (STYLENS,u'border-line-width'),
+ (STYLENS,u'border-line-width-bottom'),
+ (STYLENS,u'border-line-width-left'),
+ (STYLENS,u'border-line-width-right'),
+ (STYLENS,u'border-line-width-top'),
+ (STYLENS,u'cell-protect'),
+ (STYLENS,u'decimal-places'),
+ (STYLENS,u'diagonal-bl-tr'),
+ (STYLENS,u'diagonal-bl-tr-widths'),
+ (STYLENS,u'diagonal-tl-br'),
+ (STYLENS,u'diagonal-tl-br-widths'),
+ (STYLENS,u'direction'),
+ (STYLENS,u'glyph-orientation-vertical'),
+ (STYLENS,u'print-content'),
+ (STYLENS,u'repeat-content'),
+ (STYLENS,u'rotation-align'),
+ (STYLENS,u'rotation-angle'),
+ (STYLENS,u'shadow'),
+ (STYLENS,u'shrink-to-fit'),
+ (STYLENS,u'text-align-source'),
+ (STYLENS,u'vertical-align'),
+ ),
+# allowed_attributes
+ (STYLENS,u'table-column-properties'): (
+ (FONS,u'break-after'),
+ (FONS,u'break-before'),
+ (STYLENS,u'column-width'),
+ (STYLENS,u'rel-column-width'),
+ (STYLENS,u'use-optimal-column-width'),
+ ),
+ (STYLENS,u'table-properties'): (
+ (FONS,u'background-color'),
+ (FONS,u'break-after'),
+ (FONS,u'break-before'),
+ (FONS,u'keep-with-next'),
+ (FONS,u'margin'),
+ (FONS,u'margin-bottom'),
+ (FONS,u'margin-left'),
+ (FONS,u'margin-right'),
+ (FONS,u'margin-top'),
+ (STYLENS,u'may-break-between-rows'),
+ (STYLENS,u'page-number'),
+ (STYLENS,u'rel-width'),
+ (STYLENS,u'shadow'),
+ (STYLENS,u'width'),
+ (STYLENS,u'writing-mode'),
+ (TABLENS,u'align'),
+ (TABLENS,u'border-model'),
+ (TABLENS,u'display'),
+ ),
+ (STYLENS,u'table-row-properties'): (
+ (FONS,u'background-color'),
+ (FONS,u'break-after'),
+ (FONS,u'break-before'),
+ (FONS,u'keep-together'),
+ (STYLENS,u'min-row-height'),
+ (STYLENS,u'row-height'),
+ (STYLENS,u'use-optimal-row-height'),
+ ),
+# allowed_attributes
+ (STYLENS,u'text-properties'): (
+ (FONS,u'background-color'),
+ (FONS,u'color'),
+ (FONS,u'country'),
+ (FONS,u'font-family'),
+ (FONS,u'font-size'),
+ (FONS,u'font-style'),
+ (FONS,u'font-variant'),
+ (FONS,u'font-weight'),
+ (FONS,u'hyphenate'),
+ (FONS,u'hyphenation-push-char-count'),
+ (FONS,u'hyphenation-remain-char-count'),
+ (FONS,u'language'),
+ (FONS,u'letter-spacing'),
+ (FONS,u'text-shadow'),
+ (FONS,u'text-transform'),
+ (STYLENS,u'country-asian'),
+ (STYLENS,u'country-complex'),
+ (STYLENS,u'font-charset'),
+ (STYLENS,u'font-charset-asian'),
+ (STYLENS,u'font-charset-complex'),
+ (STYLENS,u'font-family-asian'),
+ (STYLENS,u'font-family-complex'),
+ (STYLENS,u'font-family-generic'),
+ (STYLENS,u'font-family-generic-asian'),
+ (STYLENS,u'font-family-generic-complex'),
+ (STYLENS,u'font-name'),
+ (STYLENS,u'font-name-asian'),
+ (STYLENS,u'font-name-complex'),
+ (STYLENS,u'font-pitch'),
+ (STYLENS,u'font-pitch-asian'),
+ (STYLENS,u'font-pitch-complex'),
+ (STYLENS,u'font-relief'),
+ (STYLENS,u'font-size-asian'),
+ (STYLENS,u'font-size-complex'),
+ (STYLENS,u'font-size-rel'),
+ (STYLENS,u'font-size-rel-asian'),
+ (STYLENS,u'font-size-rel-complex'),
+ (STYLENS,u'font-style-asian'),
+ (STYLENS,u'font-style-complex'),
+ (STYLENS,u'font-style-name'),
+ (STYLENS,u'font-style-name-asian'),
+ (STYLENS,u'font-style-name-complex'),
+ (STYLENS,u'font-weight-asian'),
+ (STYLENS,u'font-weight-complex'),
+ (STYLENS,u'language-asian'),
+ (STYLENS,u'language-complex'),
+ (STYLENS,u'letter-kerning'),
+ (STYLENS,u'script-type'),
+ (STYLENS,u'text-blinking'),
+ (STYLENS,u'text-combine'),
+ (STYLENS,u'text-combine-end-char'),
+ (STYLENS,u'text-combine-start-char'),
+ (STYLENS,u'text-emphasize'),
+ (STYLENS,u'text-line-through-color'),
+ (STYLENS,u'text-line-through-mode'),
+ (STYLENS,u'text-line-through-style'),
+ (STYLENS,u'text-line-through-text'),
+ (STYLENS,u'text-line-through-text-style'),
+ (STYLENS,u'text-line-through-type'),
+ (STYLENS,u'text-line-through-width'),
+ (STYLENS,u'text-outline'),
+ (STYLENS,u'text-position'),
+ (STYLENS,u'text-rotation-angle'),
+ (STYLENS,u'text-rotation-scale'),
+ (STYLENS,u'text-scale'),
+ (STYLENS,u'text-underline-color'),
+ (STYLENS,u'text-underline-mode'),
+ (STYLENS,u'text-underline-style'),
+ (STYLENS,u'text-underline-type'),
+ (STYLENS,u'text-underline-width'),
+ (STYLENS,u'use-window-font-color'),
+ (TEXTNS,u'condition'),
+ (TEXTNS,u'display'),
+ ),
+ (SVGNS,u'definition-src'):(
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ ),
+ (SVGNS,u'desc'):(
+ ),
+ (SVGNS,u'font-face-format'):(
+ (SVGNS,u'string'),
+ ),
+# allowed_attributes
+ (SVGNS,u'font-face-name'):(
+ (SVGNS,u'name'),
+ ),
+ (SVGNS,u'font-face-src'):(
+ ),
+ (SVGNS,u'font-face-uri'):(
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ ),
+ (SVGNS,u'linearGradient'):(
+ (SVGNS,u'y2'),
+ (DRAWNS,u'name'),
+ (SVGNS,u'spreadMethod'),
+ (SVGNS,u'gradientUnits'),
+ (SVGNS,u'x2'),
+ (SVGNS,u'gradientTransform'),
+ (SVGNS,u'y1'),
+ (DRAWNS,u'display-name'),
+ (SVGNS,u'x1'),
+ ),
+ (SVGNS,u'radialGradient'):(
+ (DRAWNS,u'name'),
+ (SVGNS,u'fx'),
+ (SVGNS,u'fy'),
+ (SVGNS,u'spreadMethod'),
+ (SVGNS,u'gradientUnits'),
+ (SVGNS,u'cy'),
+ (SVGNS,u'cx'),
+ (SVGNS,u'gradientTransform'),
+ (DRAWNS,u'display-name'),
+ (SVGNS,u'r'),
+ ),
+ (SVGNS,u'stop'):(
+ (SVGNS,u'stop-color'),
+ (SVGNS,u'stop-opacity'),
+ (SVGNS,u'offset'),
+ ),
+ (SVGNS,u'title'):(
+ ),
+# allowed_attributes
+ (TABLENS,u'body'):(
+ (TEXTNS,u'paragraph-style-name'),
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'calculation-settings'):(
+ (TABLENS,u'automatic-find-labels'),
+ (TABLENS,u'case-sensitive'),
+ (TABLENS,u'search-criteria-must-apply-to-whole-cell'),
+ (TABLENS,u'precision-as-shown'),
+ (TABLENS,u'use-regular-expressions'),
+ (TABLENS,u'null-year'),
+ ),
+ (TABLENS,u'cell-address'):(
+ (TABLENS,u'column'),
+ (TABLENS,u'table'),
+ (TABLENS,u'row'),
+ ),
+ (TABLENS,u'cell-content-change'):(
+ (TABLENS,u'id'),
+ (TABLENS,u'rejecting-change-id'),
+ (TABLENS,u'acceptance-state'),
+ ),
+ (TABLENS,u'cell-content-deletion'):(
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'cell-range-source'):(
+ (TABLENS,u'last-row-spanned'),
+ (TABLENS,u'last-column-spanned'),
+ (TABLENS,u'name'),
+ (TABLENS,u'filter-options'),
+ (XLINKNS,u'actuate'),
+ (TABLENS,u'filter-name'),
+ (XLINKNS,u'href'),
+ (TABLENS,u'refresh-delay'),
+ (XLINKNS,u'type'),
+ ),
+ (TABLENS,u'change-deletion'):(
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'change-track-table-cell'):(
+ (OFFICENS,u'string-value'),
+ (TABLENS,u'cell-address'),
+ (TABLENS,u'number-matrix-columns-spanned'),
+ (TABLENS,u'number-matrix-rows-spanned'),
+ (TABLENS,u'matrix-covered'),
+ (OFFICENS,u'value-type'),
+ (OFFICENS,u'boolean-value'),
+ (OFFICENS,u'currency'),
+ (OFFICENS,u'date-value'),
+ (OFFICENS,u'value'),
+ (TABLENS,u'formula'),
+ (OFFICENS,u'time-value'),
+ ),
+ (TABLENS,u'consolidation'):(
+ (TABLENS,u'function'),
+ (TABLENS,u'source-cell-range-addresses'),
+ (TABLENS,u'target-cell-address'),
+ (TABLENS,u'link-to-source-data'),
+ (TABLENS,u'use-labels'),
+ ),
+ (TABLENS,u'content-validation'):(
+ (TABLENS,u'base-cell-address'),
+ (TABLENS,u'display-list'),
+ (TABLENS,u'allow-empty-cell'),
+ (TABLENS,u'name'),
+ (TABLENS,u'condition'),
+ ),
+ (TABLENS,u'content-validations'):(
+ ),
+# allowed_attributes
+ (TABLENS,u'covered-table-cell'):(
+ (TABLENS,u'protect'),
+ (OFFICENS,u'string-value'),
+ (OFFICENS,u'value'),
+ (OFFICENS,u'boolean-value'),
+ (OFFICENS,u'currency'),
+ (OFFICENS,u'date-value'),
+ (TABLENS,u'style-name'),
+ (TABLENS,u'content-validation-name'),
+ (OFFICENS,u'value-type'),
+ (TABLENS,u'number-columns-repeated'),
+ (TABLENS,u'formula'),
+ (OFFICENS,u'time-value'),
+ ),
+ (TABLENS,u'cut-offs'):(
+ ),
+ (TABLENS,u'data-pilot-display-info'):(
+ (TABLENS,u'member-count'),
+ (TABLENS,u'data-field'),
+ (TABLENS,u'enabled'),
+ (TABLENS,u'display-member-mode'),
+ ),
+ (TABLENS,u'data-pilot-field'):(
+ (TABLENS,u'selected-page'),
+ (TABLENS,u'function'),
+ (TABLENS,u'orientation'),
+ (TABLENS,u'used-hierarchy'),
+ (TABLENS,u'is-data-layout-field'),
+ (TABLENS,u'source-field-name'),
+ ),
+ (TABLENS,u'data-pilot-field-reference'):(
+ (TABLENS,u'member-name'),
+ (TABLENS,u'field-name'),
+ (TABLENS,u'member-type'),
+ (TABLENS,u'type'),
+ ),
+# allowed_attributes
+ (TABLENS,u'data-pilot-group'):(
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'data-pilot-group-member'):(
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'data-pilot-groups'):(
+ (TABLENS,u'date-end'),
+ (TABLENS,u'end'),
+ (TABLENS,u'start'),
+ (TABLENS,u'source-field-name'),
+ (TABLENS,u'step'),
+ (TABLENS,u'date-start'),
+ (TABLENS,u'grouped-by'),
+ ),
+ (TABLENS,u'data-pilot-layout-info'):(
+ (TABLENS,u'add-empty-lines'),
+ (TABLENS,u'layout-mode'),
+ ),
+ (TABLENS,u'data-pilot-level'):(
+ (TABLENS,u'show-empty'),
+ ),
+# allowed_attributes
+ (TABLENS,u'data-pilot-member'):(
+ (TABLENS,u'show-details'),
+ (TABLENS,u'name'),
+ (TABLENS,u'display'),
+ ),
+ (TABLENS,u'data-pilot-members'):(
+ ),
+ (TABLENS,u'data-pilot-sort-info'):(
+ (TABLENS,u'data-field'),
+ (TABLENS,u'sort-mode'),
+ (TABLENS,u'order'),
+ ),
+ (TABLENS,u'data-pilot-subtotal'):(
+ (TABLENS,u'function'),
+ ),
+ (TABLENS,u'data-pilot-subtotals'):(
+ ),
+ (TABLENS,u'data-pilot-table'):(
+ (TABLENS,u'buttons'),
+ (TABLENS,u'application-data'),
+ (TABLENS,u'name'),
+ (TABLENS,u'drill-down-on-double-click'),
+ (TABLENS,u'target-range-address'),
+ (TABLENS,u'ignore-empty-rows'),
+ (TABLENS,u'identify-categories'),
+ (TABLENS,u'show-filter-button'),
+ (TABLENS,u'grand-total'),
+ ),
+# allowed_attributes
+ (TABLENS,u'data-pilot-tables'):(
+ ),
+ (TABLENS,u'database-range'):(
+ (TABLENS,u'orientation'),
+ (TABLENS,u'target-range-address'),
+ (TABLENS,u'contains-header'),
+ (TABLENS,u'on-update-keep-size'),
+ (TABLENS,u'name'),
+ (TABLENS,u'is-selection'),
+ (TABLENS,u'refresh-delay'),
+ (TABLENS,u'display-filter-buttons'),
+ (TABLENS,u'has-persistent-data'),
+ (TABLENS,u'on-update-keep-styles'),
+ ),
+ (TABLENS,u'database-ranges'):(
+ ),
+ (TABLENS,u'database-source-query'):(
+ (TABLENS,u'query-name'),
+ (TABLENS,u'database-name'),
+ ),
+# allowed_attributes
+ (TABLENS,u'database-source-sql'):(
+ (TABLENS,u'parse-sql-statement'),
+ (TABLENS,u'database-name'),
+ (TABLENS,u'sql-statement'),
+ ),
+ (TABLENS,u'database-source-table'):(
+ (TABLENS,u'database-table-name'),
+ (TABLENS,u'database-name'),
+ ),
+ (TABLENS,u'dde-link'):(
+ ),
+ (TABLENS,u'dde-links'):(
+ ),
+ (TABLENS,u'deletion'):(
+ (TABLENS,u'rejecting-change-id'),
+ (TABLENS,u'multi-deletion-spanned'),
+ (TABLENS,u'acceptance-state'),
+ (TABLENS,u'table'),
+ (TABLENS,u'position'),
+ (TABLENS,u'type'),
+ (TABLENS,u'id'),
+ ),
+# allowed_attributes
+ (TABLENS,u'deletions'):(
+ ),
+ (TABLENS,u'dependencies'):(
+ ),
+ (TABLENS,u'dependency'):(
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'detective'):(
+ ),
+ (TABLENS,u'error-macro'):(
+ (TABLENS,u'execute'),
+ ),
+ (TABLENS,u'error-message'):(
+ (TABLENS,u'display'),
+ (TABLENS,u'message-type'),
+ (TABLENS,u'title'),
+ ),
+ (TABLENS,u'even-columns'):(
+ (TEXTNS,u'paragraph-style-name'),
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'even-rows'):(
+ (TEXTNS,u'paragraph-style-name'),
+ (TEXTNS,u'style-name'),
+ ),
+# allowed_attributes
+ (TABLENS,u'filter'):(
+ (TABLENS,u'target-range-address'),
+ (TABLENS,u'display-duplicates'),
+ (TABLENS,u'condition-source-range-address'),
+ (TABLENS,u'condition-source'),
+ ),
+ (TABLENS,u'filter-and'):(
+ ),
+ (TABLENS,u'filter-condition'):(
+ (TABLENS,u'operator'),
+ (TABLENS,u'field-number'),
+ (TABLENS,u'data-type'),
+ (TABLENS,u'case-sensitive'),
+ (TABLENS,u'value'),
+ ),
+ (TABLENS,u'filter-or'):(
+ ),
+ (TABLENS,u'first-column'):(
+ (TEXTNS,u'paragraph-style-name'),
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'first-row'):(
+ (TEXTNS,u'paragraph-style-name'),
+ (TEXTNS,u'style-name'),
+ ),
+# allowed_attributes
+ (TABLENS,u'help-message'):(
+ (TABLENS,u'display'),
+ (TABLENS,u'title'),
+ ),
+ (TABLENS,u'highlighted-range'):(
+ (TABLENS,u'contains-error'),
+ (TABLENS,u'direction'),
+ (TABLENS,u'marked-invalid'),
+ (TABLENS,u'cell-range-address'),
+ ),
+ (TABLENS,u'insertion'):(
+ (TABLENS,u'count'),
+ (TABLENS,u'rejecting-change-id'),
+ (TABLENS,u'acceptance-state'),
+ (TABLENS,u'table'),
+ (TABLENS,u'position'),
+ (TABLENS,u'type'),
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'insertion-cut-off'):(
+ (TABLENS,u'position'),
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'iteration'):(
+ (TABLENS,u'status'),
+ (TABLENS,u'maximum-difference'),
+ (TABLENS,u'steps'),
+ ),
+# allowed_attributes
+ (TABLENS,u'label-range'):(
+ (TABLENS,u'label-cell-range-address'),
+ (TABLENS,u'data-cell-range-address'),
+ (TABLENS,u'orientation'),
+ ),
+ (TABLENS,u'label-ranges'):(
+ ),
+ (TABLENS,u'last-column'):(
+ (TEXTNS,u'paragraph-style-name'),
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'last-row'):(
+ (TEXTNS,u'paragraph-style-name'),
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'movement'):(
+ (TABLENS,u'id'),
+ (TABLENS,u'rejecting-change-id'),
+ (TABLENS,u'acceptance-state'),
+ ),
+ (TABLENS,u'movement-cut-off'):(
+ (TABLENS,u'position'),
+ (TABLENS,u'end-position'),
+ (TABLENS,u'start-position'),
+ ),
+ (TABLENS,u'named-expression'):(
+ (TABLENS,u'base-cell-address'),
+ (TABLENS,u'expression'),
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'named-expressions'):(
+ ),
+ (TABLENS,u'named-range'):(
+ (TABLENS,u'range-usable-as'),
+ (TABLENS,u'base-cell-address'),
+ (TABLENS,u'name'),
+ (TABLENS,u'cell-range-address'),
+ ),
+ (TABLENS,u'null-date'):(
+ (TABLENS,u'date-value'),
+ (TABLENS,u'value-type'),
+ ),
+ (TABLENS,u'odd-columns'):(
+ (TEXTNS,u'paragraph-style-name'),
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'odd-rows'):(
+ (TEXTNS,u'paragraph-style-name'),
+ (TEXTNS,u'style-name'),
+ ),
+ (TABLENS,u'operation'):(
+ (TABLENS,u'index'),
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'previous'):(
+ (TABLENS,u'id'),
+ ),
+ (TABLENS,u'scenario'):(
+ (TABLENS,u'comment'),
+ (TABLENS,u'border-color'),
+ (TABLENS,u'copy-back'),
+ (TABLENS,u'is-active'),
+ (TABLENS,u'protected'),
+ (TABLENS,u'copy-formulas'),
+ (TABLENS,u'copy-styles'),
+ (TABLENS,u'scenario-ranges'),
+ (TABLENS,u'display-border'),
+ ),
+ (TABLENS,u'shapes'):(
+ ),
+ (TABLENS,u'sort'):(
+ (TABLENS,u'case-sensitive'),
+ (TABLENS,u'algorithm'),
+ (TABLENS,u'target-range-address'),
+ (TABLENS,u'country'),
+ (TABLENS,u'language'),
+ (TABLENS,u'bind-styles-to-content'),
+ ),
+ (TABLENS,u'sort-by'):(
+ (TABLENS,u'field-number'),
+ (TABLENS,u'data-type'),
+ (TABLENS,u'order'),
+ ),
+ (TABLENS,u'sort-groups'):(
+ (TABLENS,u'data-type'),
+ (TABLENS,u'order'),
+ ),
+ (TABLENS,u'source-cell-range'):(
+ (TABLENS,u'cell-range-address'),
+ ),
+ (TABLENS,u'source-range-address'):(
+ (TABLENS,u'column'),
+ (TABLENS,u'end-column'),
+ (TABLENS,u'start-table'),
+ (TABLENS,u'end-row'),
+ (TABLENS,u'table'),
+ (TABLENS,u'start-row'),
+ (TABLENS,u'row'),
+ (TABLENS,u'end-table'),
+ (TABLENS,u'start-column'),
+ ),
+# allowed_attributes
+ (TABLENS,u'source-service'):(
+ (TABLENS,u'user-name'),
+ (TABLENS,u'source-name'),
+ (TABLENS,u'password'),
+ (TABLENS,u'object-name'),
+ (TABLENS,u'name'),
+ ),
+ (TABLENS,u'subtotal-field'):(
+ (TABLENS,u'function'),
+ (TABLENS,u'field-number'),
+ ),
+ (TABLENS,u'subtotal-rule'):(
+ (TABLENS,u'group-by-field-number'),
+ ),
+ (TABLENS,u'subtotal-rules'):(
+ (TABLENS,u'bind-styles-to-content'),
+ (TABLENS,u'page-breaks-on-group-change'),
+ (TABLENS,u'case-sensitive'),
+ ),
+ (TABLENS,u'table'):(
+ (TABLENS,u'name'),
+ (TABLENS,u'is-sub-table'),
+ (TABLENS,u'style-name'),
+ (TABLENS,u'protected'),
+ (TABLENS,u'print-ranges'),
+ (TABLENS,u'print'),
+ (TABLENS,u'protection-key'),
+ ),
+ (TABLENS,u'table-cell'):(
+ (TABLENS,u'protect'),
+ (TABLENS,u'number-matrix-rows-spanned'),
+ (TABLENS,u'number-matrix-columns-spanned'),
+ (OFFICENS,u'string-value'),
+ (TABLENS,u'number-columns-spanned'),
+ (OFFICENS,u'value'),
+ (OFFICENS,u'boolean-value'),
+ (OFFICENS,u'currency'),
+ (OFFICENS,u'date-value'),
+ (TABLENS,u'style-name'),
+ (TABLENS,u'content-validation-name'),
+ (OFFICENS,u'value-type'),
+ (TABLENS,u'number-rows-spanned'),
+ (TABLENS,u'number-columns-repeated'),
+ (TABLENS,u'formula'),
+ (OFFICENS,u'time-value'),
+ ),
+# allowed_attributes
+ (TABLENS,u'table-column'):(
+ (TABLENS,u'style-name'),
+ (TABLENS,u'default-cell-style-name'),
+ (TABLENS,u'visibility'),
+ (TABLENS,u'number-columns-repeated'),
+ ),
+ (TABLENS,u'table-column-group'):(
+ (TABLENS,u'display'),
+ ),
+ (TABLENS,u'table-columns'):(
+ ),
+ (TABLENS,u'table-header-columns'):(
+ ),
+ (TABLENS,u'table-header-rows'):(
+ ),
+ (TABLENS,u'table-row'):(
+ (TABLENS,u'number-rows-repeated'),
+ (TABLENS,u'style-name'),
+ (TABLENS,u'visibility'),
+ (TABLENS,u'default-cell-style-name'),
+ ),
+ (TABLENS,u'table-row-group'):(
+ (TABLENS,u'display'),
+ ),
+ (TABLENS,u'table-rows'):(
+ ),
+ (TABLENS,u'table-source'):(
+ (TABLENS,u'filter-options'),
+ (XLINKNS,u'actuate'),
+ (TABLENS,u'filter-name'),
+ (XLINKNS,u'href'),
+ (TABLENS,u'mode'),
+ (TABLENS,u'table-name'),
+ (XLINKNS,u'type'),
+ (TABLENS,u'refresh-delay'),
+ ),
+ (TABLENS,u'table-template'):(
+ (TEXTNS,u'last-row-end-column'),
+ (TEXTNS,u'first-row-end-column'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'last-row-start-column'),
+ (TEXTNS,u'first-row-start-column'),
+ ),
+ (TABLENS,u'target-range-address'):(
+ (TABLENS,u'column'),
+ (TABLENS,u'end-column'),
+ (TABLENS,u'start-table'),
+ (TABLENS,u'end-row'),
+ (TABLENS,u'table'),
+ (TABLENS,u'start-row'),
+ (TABLENS,u'row'),
+ (TABLENS,u'end-table'),
+ (TABLENS,u'start-column'),
+ ),
+ (TABLENS,u'tracked-changes'):(
+ (TABLENS,u'track-changes'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'a'):(
+ (TEXTNS,u'visited-style-name'),
+ (OFFICENS,u'name'),
+ (OFFICENS,u'title'),
+ (XLINKNS,u'show'),
+ (OFFICENS,u'target-frame-name'),
+ (XLINKNS,u'actuate'),
+ (TEXTNS,u'style-name'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ ),
+ (TEXTNS,u'alphabetical-index'):(
+ (TEXTNS,u'protected'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'protection-key'),
+ ),
+ (TEXTNS,u'alphabetical-index-auto-mark-file'):(
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ ),
+ (TEXTNS,u'alphabetical-index-entry-template'):(
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'alphabetical-index-mark'):(
+ (TEXTNS,u'main-entry'),
+ (TEXTNS,u'key1-phonetic'),
+ (TEXTNS,u'key2'),
+ (TEXTNS,u'key1'),
+ (TEXTNS,u'string-value'),
+ (TEXTNS,u'key2-phonetic'),
+ (TEXTNS,u'string-value-phonetic'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'alphabetical-index-mark-end'):(
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'alphabetical-index-mark-start'):(
+ (TEXTNS,u'main-entry'),
+ (TEXTNS,u'key1-phonetic'),
+ (TEXTNS,u'key2'),
+ (TEXTNS,u'key1'),
+ (TEXTNS,u'string-value-phonetic'),
+ (TEXTNS,u'key2-phonetic'),
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'alphabetical-index-source'):(
+ (TEXTNS,u'capitalize-entries'),
+ (FONS,u'language'),
+ (TEXTNS,u'relative-tab-stop-position'),
+ (TEXTNS,u'alphabetical-separators'),
+ (TEXTNS,u'combine-entries-with-pp'),
+ (TEXTNS,u'combine-entries-with-dash'),
+ (TEXTNS,u'sort-algorithm'),
+ (TEXTNS,u'ignore-case'),
+ (TEXTNS,u'combine-entries'),
+ (TEXTNS,u'comma-separated'),
+ (FONS,u'country'),
+ (TEXTNS,u'index-scope'),
+ (TEXTNS,u'main-entry-style-name'),
+ (TEXTNS,u'use-keys-as-entries'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'author-initials'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'author-name'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'bibliography'):(
+ (TEXTNS,u'protected'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'protection-key'),
+ ),
+ (TEXTNS,u'bibliography-configuration'):(
+ (TEXTNS,u'suffix'),
+ (FONS,u'language'),
+ (TEXTNS,u'numbered-entries'),
+ (FONS,u'country'),
+ (TEXTNS,u'sort-by-position'),
+ (TEXTNS,u'sort-algorithm'),
+ (TEXTNS,u'prefix'),
+ ),
+ (TEXTNS,u'bibliography-entry-template'):(
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'bibliography-type'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'bibliography-mark'):(
+ (TEXTNS,u'address'),
+ (TEXTNS,u'annote'),
+ (TEXTNS,u'author'),
+ (TEXTNS,u'bibliography-type'),
+ (TEXTNS,u'booktitle'),
+ (TEXTNS,u'chapter'),
+ (TEXTNS,u'custom1'),
+ (TEXTNS,u'custom2'),
+ (TEXTNS,u'custom3'),
+ (TEXTNS,u'custom4'),
+ (TEXTNS,u'custom5'),
+ (TEXTNS,u'edition'),
+ (TEXTNS,u'editor'),
+ (TEXTNS,u'howpublished'),
+ (TEXTNS,u'identifier'),
+ (TEXTNS,u'institution'),
+ (TEXTNS,u'isbn'),
+ (TEXTNS,u'issn'),
+ (TEXTNS,u'journal'),
+ (TEXTNS,u'month'),
+ (TEXTNS,u'note'),
+ (TEXTNS,u'number'),
+ (TEXTNS,u'organizations'),
+ (TEXTNS,u'pages'),
+ (TEXTNS,u'publisher'),
+ (TEXTNS,u'report-type'),
+ (TEXTNS,u'school'),
+ (TEXTNS,u'series'),
+ (TEXTNS,u'title'),
+ (TEXTNS,u'url'),
+ (TEXTNS,u'volume'),
+ (TEXTNS,u'year'),
+ ),
+ (TEXTNS,u'bibliography-source'):(
+ ),
+ (TEXTNS,u'bookmark'):(
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'bookmark-end'):(
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'bookmark-ref'):(
+ (TEXTNS,u'ref-name'),
+ (TEXTNS,u'reference-format'),
+ ),
+ (TEXTNS,u'bookmark-start'):(
+ (TEXTNS,u'name'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'change'):(
+ (TEXTNS,u'change-id'),
+ ),
+ (TEXTNS,u'change-end'):(
+ (TEXTNS,u'change-id'),
+ ),
+ (TEXTNS,u'change-start'):(
+ (TEXTNS,u'change-id'),
+ ),
+ (TEXTNS,u'changed-region'):(
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'chapter'):(
+ (TEXTNS,u'display'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'conditional-text'):(
+ (TEXTNS,u'string-value-if-true'),
+ (TEXTNS,u'current-value'),
+ (TEXTNS,u'string-value-if-false'),
+ (TEXTNS,u'condition'),
+ ),
+ (TEXTNS,u'creation-date'):(
+ (TEXTNS,u'date-value'),
+ (TEXTNS,u'fixed'),
+ (STYLENS,u'data-style-name'),
+ ),
+ (TEXTNS,u'creation-time'):(
+ (TEXTNS,u'fixed'),
+ (TEXTNS,u'time-value'),
+ (STYLENS,u'data-style-name'),
+ ),
+ (TEXTNS,u'creator'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'database-display'):(
+ (TEXTNS,u'column-name'),
+ (TEXTNS,u'table-name'),
+ (TEXTNS,u'table-type'),
+ (TEXTNS,u'database-name'),
+ (STYLENS,u'data-style-name'),
+ ),
+ (TEXTNS,u'database-name'):(
+ (TEXTNS,u'table-name'),
+ (TEXTNS,u'table-type'),
+ (TEXTNS,u'database-name'),
+ ),
+ (TEXTNS,u'database-next'):(
+ (TEXTNS,u'table-name'),
+ (TEXTNS,u'table-type'),
+ (TEXTNS,u'database-name'),
+ (TEXTNS,u'condition'),
+ ),
+ (TEXTNS,u'database-row-number'):(
+ (STYLENS,u'num-format'),
+ (TEXTNS,u'database-name'),
+ (TEXTNS,u'value'),
+ (STYLENS,u'num-letter-sync'),
+ (TEXTNS,u'table-name'),
+ (TEXTNS,u'table-type'),
+ ),
+ (TEXTNS,u'database-row-select'):(
+ (TEXTNS,u'row-number'),
+ (TEXTNS,u'table-name'),
+ (TEXTNS,u'table-type'),
+ (TEXTNS,u'database-name'),
+ (TEXTNS,u'condition'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'date'):(
+ (TEXTNS,u'date-value'),
+ (TEXTNS,u'fixed'),
+ (TEXTNS,u'date-adjust'),
+ (STYLENS,u'data-style-name'),
+ ),
+ (TEXTNS,u'dde-connection'):(
+ (TEXTNS,u'connection-name'),
+ ),
+ (TEXTNS,u'dde-connection-decl'):(
+ (OFFICENS,u'automatic-update'),
+ (OFFICENS,u'dde-topic'),
+ (OFFICENS,u'dde-application'),
+ (OFFICENS,u'name'),
+ (OFFICENS,u'dde-item'),
+ ),
+ (TEXTNS,u'dde-connection-decls'):(
+ ),
+ (TEXTNS,u'deletion'):(
+ ),
+ (TEXTNS,u'description'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'editing-cycles'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'editing-duration'):(
+ (TEXTNS,u'duration'),
+ (TEXTNS,u'fixed'),
+ (STYLENS,u'data-style-name'),
+ ),
+ (TEXTNS,u'execute-macro'):(
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'expression'):(
+ (TEXTNS,u'display'),
+ (OFFICENS,u'string-value'),
+ (OFFICENS,u'value'),
+ (OFFICENS,u'boolean-value'),
+ (OFFICENS,u'currency'),
+ (OFFICENS,u'date-value'),
+ (STYLENS,u'data-style-name'),
+ (OFFICENS,u'value-type'),
+ (TEXTNS,u'formula'),
+ (OFFICENS,u'time-value'),
+ ),
+ (TEXTNS,u'file-name'):(
+ (TEXTNS,u'fixed'),
+ (TEXTNS,u'display'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'format-change'):(
+ ),
+ (TEXTNS,u'h'):(
+ (TEXTNS,u'restart-numbering'),
+ (TEXTNS,u'cond-style-name'),
+ (TEXTNS,u'is-list-header'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'class-names'),
+ (TEXTNS,u'start-value'),
+ (TEXTNS,u'id'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'hidden-paragraph'):(
+ (TEXTNS,u'is-hidden'),
+ (TEXTNS,u'condition'),
+ ),
+ (TEXTNS,u'hidden-text'):(
+ (TEXTNS,u'string-value'),
+ (TEXTNS,u'is-hidden'),
+ (TEXTNS,u'condition'),
+ ),
+ (TEXTNS,u'illustration-index'):(
+ (TEXTNS,u'protected'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'protection-key'),
+ ),
+ (TEXTNS,u'illustration-index-entry-template'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'illustration-index-source'):(
+ (TEXTNS,u'index-scope'),
+ (TEXTNS,u'caption-sequence-name'),
+ (TEXTNS,u'use-caption'),
+ (TEXTNS,u'caption-sequence-format'),
+ (TEXTNS,u'relative-tab-stop-position'),
+ ),
+ (TEXTNS,u'index-body'):(
+ ),
+ (TEXTNS,u'index-entry-bibliography'):(
+ (TEXTNS,u'bibliography-data-field'),
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'index-entry-chapter'):(
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'display'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'index-entry-link-end'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'index-entry-link-start'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'index-entry-page-number'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'index-entry-span'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'index-entry-tab-stop'):(
+ (STYLENS,u'position'),
+ (TEXTNS,u'style-name'),
+ (STYLENS,u'type'),
+ (STYLENS,u'leader-char'),
+ ),
+ (TEXTNS,u'index-entry-text'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'index-source-style'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'index-source-styles'):(
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'index-title'):(
+ (TEXTNS,u'protected'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'protection-key'),
+ ),
+ (TEXTNS,u'index-title-template'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'initial-creator'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'insertion'):(
+ ),
+# allowed_attributes
+ (TEXTNS,u'keywords'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'line-break'):(
+ ),
+ (TEXTNS,u'linenumbering-configuration'):(
+ (TEXTNS,u'number-position'),
+ (TEXTNS,u'number-lines'),
+ (STYLENS,u'num-format'),
+ (TEXTNS,u'count-empty-lines'),
+ (TEXTNS,u'count-in-text-boxes'),
+ (TEXTNS,u'style-name'),
+ (STYLENS,u'num-letter-sync'),
+ (TEXTNS,u'increment'),
+ (TEXTNS,u'offset'),
+ (TEXTNS,u'restart-on-page'),
+ ),
+ (TEXTNS,u'linenumbering-separator'):(
+ (TEXTNS,u'increment'),
+ ),
+ (TEXTNS,u'list'):(
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'continue-numbering'),
+ ),
+ (TEXTNS,u'list-header'):(
+ ),
+ (TEXTNS,u'list-item'):(
+ (TEXTNS,u'start-value'),
+ ),
+ (TEXTNS,u'list-level-style-bullet'):(
+ (TEXTNS,u'level'),
+ (STYLENS,u'num-prefix'),
+ (STYLENS,u'num-suffix'),
+ (TEXTNS,u'bullet-relative-size'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'bullet-char'),
+ ),
+ (TEXTNS,u'list-level-style-image'):(
+ (XLINKNS,u'show'),
+ (XLINKNS,u'actuate'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ (TEXTNS,u'level'),
+ ),
+ (TEXTNS,u'list-level-style-number'):(
+ (TEXTNS,u'level'),
+ (TEXTNS,u'display-levels'),
+ (STYLENS,u'num-format'),
+ (STYLENS,u'num-suffix'),
+ (TEXTNS,u'style-name'),
+ (STYLENS,u'num-prefix'),
+ (STYLENS,u'num-letter-sync'),
+ (TEXTNS,u'start-value'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'list-style'):(
+ (TEXTNS,u'consecutive-numbering'),
+ (STYLENS,u'display-name'),
+ (STYLENS,u'name'),
+ ),
+ (TEXTNS,u'measure'):(
+ (TEXTNS,u'kind'),
+ ),
+ (TEXTNS,u'modification-date'):(
+ (TEXTNS,u'date-value'),
+ (TEXTNS,u'fixed'),
+ (STYLENS,u'data-style-name'),
+ ),
+ (TEXTNS,u'modification-time'):(
+ (TEXTNS,u'fixed'),
+ (TEXTNS,u'time-value'),
+ (STYLENS,u'data-style-name'),
+ ),
+ (TEXTNS,u'note'):(
+ (TEXTNS,u'note-class'),
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'note-body'):(
+ ),
+ (TEXTNS,u'note-citation'):(
+ (TEXTNS,u'label'),
+ ),
+ (TEXTNS,u'note-continuation-notice-backward'):(
+ ),
+ (TEXTNS,u'note-continuation-notice-forward'):(
+ ),
+ (TEXTNS,u'note-ref'):(
+ (TEXTNS,u'ref-name'),
+ (TEXTNS,u'note-class'),
+ (TEXTNS,u'reference-format'),
+ ),
+ (TEXTNS,u'notes-configuration'):(
+ (TEXTNS,u'citation-body-style-name'),
+ (STYLENS,u'num-format'),
+ (TEXTNS,u'default-style-name'),
+ (STYLENS,u'num-suffix'),
+ (TEXTNS,u'start-numbering-at'),
+ (STYLENS,u'num-prefix'),
+ (STYLENS,u'num-letter-sync'),
+ (TEXTNS,u'citation-style-name'),
+ (TEXTNS,u'footnotes-position'),
+ (TEXTNS,u'master-page-name'),
+ (TEXTNS,u'start-value'),
+ (TEXTNS,u'note-class'),
+ ),
+ (TEXTNS,u'number'):(
+ ),
+ (TEXTNS,u'numbered-paragraph'):(
+ (TEXTNS,u'continue-numbering'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'start-value'),
+ (TEXTNS,u'level'),
+ ),
+ (TEXTNS,u'object-count'):(
+ (STYLENS,u'num-format'),
+ (STYLENS,u'num-letter-sync'),
+ ),
+ (TEXTNS,u'object-index'):(
+ (TEXTNS,u'protected'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'protection-key'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'object-index-entry-template'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'object-index-source'):(
+ (TEXTNS,u'use-draw-objects'),
+ (TEXTNS,u'use-math-objects'),
+ (TEXTNS,u'relative-tab-stop-position'),
+ (TEXTNS,u'use-chart-objects'),
+ (TEXTNS,u'index-scope'),
+ (TEXTNS,u'use-spreadsheet-objects'),
+ (TEXTNS,u'use-other-objects'),
+ ),
+ (TEXTNS,u'outline-level-style'):(
+ (TEXTNS,u'level'),
+ (TEXTNS,u'display-levels'),
+ (STYLENS,u'num-format'),
+ (STYLENS,u'num-suffix'),
+ (TEXTNS,u'style-name'),
+ (STYLENS,u'num-prefix'),
+ (STYLENS,u'num-letter-sync'),
+ (TEXTNS,u'start-value'),
+ ),
+ (TEXTNS,u'outline-style'):(
+ ),
+ (TEXTNS,u'p'):(
+ (TEXTNS,u'cond-style-name'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'class-names'),
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'page'):(
+ (TEXTNS,u'master-page-name'),
+ ),
+ (TEXTNS,u'page-continuation'):(
+ (TEXTNS,u'string-value'),
+ (TEXTNS,u'select-page'),
+ ),
+ (TEXTNS,u'page-number'):(
+ (TEXTNS,u'page-adjust'),
+ (STYLENS,u'num-format'),
+ (TEXTNS,u'fixed'),
+ (STYLENS,u'num-letter-sync'),
+ (TEXTNS,u'select-page'),
+ ),
+ (TEXTNS,u'page-sequence'):(
+ ),
+ (TEXTNS,u'page-variable-get'):(
+ (STYLENS,u'num-format'),
+ (STYLENS,u'num-letter-sync'),
+ ),
+ (TEXTNS,u'page-variable-set'):(
+ (TEXTNS,u'active'),
+ (TEXTNS,u'page-adjust'),
+ ),
+ (TEXTNS,u'placeholder'):(
+ (TEXTNS,u'placeholder-type'),
+ (TEXTNS,u'description'),
+ ),
+ (TEXTNS,u'print-date'):(
+ (TEXTNS,u'date-value'),
+ (TEXTNS,u'fixed'),
+ (STYLENS,u'data-style-name'),
+ ),
+ (TEXTNS,u'print-time'):(
+ (TEXTNS,u'fixed'),
+ (TEXTNS,u'time-value'),
+ (STYLENS,u'data-style-name'),
+ ),
+ (TEXTNS,u'printed-by'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'reference-mark'):(
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'reference-mark-end'):(
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'reference-mark-start'):(
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'ruby'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'ruby-base'):(
+ ),
+ (TEXTNS,u'ruby-text'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u's'):(
+ (TEXTNS,u'c'),
+ ),
+ (TEXTNS,u'script'):(
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ (SCRIPTNS,u'language'),
+ ),
+ (TEXTNS,u'section'):(
+ (TEXTNS,u'name'),
+ (TEXTNS,u'protection-key'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'protected'),
+ (TEXTNS,u'display'),
+ (TEXTNS,u'condition'),
+ ),
+ (TEXTNS,u'section-source'):(
+ (TEXTNS,u'filter-name'),
+ (XLINKNS,u'href'),
+ (XLINKNS,u'type'),
+ (TEXTNS,u'section-name'),
+ (XLINKNS,u'show'),
+ ),
+ (TEXTNS,u'sender-city'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-company'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-country'):(
+ (TEXTNS,u'fixed'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'sender-email'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-fax'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-firstname'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-initials'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-lastname'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-phone-private'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-phone-work'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-position'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-postal-code'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-state-or-province'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-street'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sender-title'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'sequence'):(
+ (TEXTNS,u'formula'),
+ (STYLENS,u'num-format'),
+ (STYLENS,u'num-letter-sync'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'ref-name'),
+ ),
+ (TEXTNS,u'sequence-decl'):(
+ (TEXTNS,u'separation-character'),
+ (TEXTNS,u'display-outline-level'),
+ (TEXTNS,u'name'),
+ ),
+ (TEXTNS,u'sequence-decls'):(
+ ),
+ (TEXTNS,u'sequence-ref'):(
+ (TEXTNS,u'ref-name'),
+ (TEXTNS,u'reference-format'),
+ ),
+ (TEXTNS,u'sheet-name'):(
+ ),
+ (TEXTNS,u'soft-page-break'):(
+ ),
+ (TEXTNS,u'sort-key'):(
+ (TEXTNS,u'sort-ascending'),
+ (TEXTNS,u'key'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'span'):(
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'class-names'),
+ ),
+ (TEXTNS,u'subject'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'tab'):(
+ (TEXTNS,u'tab-ref'),
+ ),
+ (TEXTNS,u'table-formula'):(
+ (TEXTNS,u'formula'),
+ (STYLENS,u'data-style-name'),
+ (TEXTNS,u'display'),
+ ),
+ (TEXTNS,u'table-index'):(
+ (TEXTNS,u'protected'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'protection-key'),
+ ),
+ (TEXTNS,u'table-index-entry-template'):(
+ (TEXTNS,u'style-name'),
+ ),
+ (TEXTNS,u'table-index-source'):(
+ (TEXTNS,u'index-scope'),
+ (TEXTNS,u'caption-sequence-name'),
+ (TEXTNS,u'use-caption'),
+ (TEXTNS,u'caption-sequence-format'),
+ (TEXTNS,u'relative-tab-stop-position'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'table-of-content'):(
+ (TEXTNS,u'protected'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'protection-key'),
+ ),
+ (TEXTNS,u'table-of-content-entry-template'):(
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'table-of-content-source'):(
+ (TEXTNS,u'index-scope'),
+ (TEXTNS,u'outline-level'),
+ (TEXTNS,u'relative-tab-stop-position'),
+ (TEXTNS,u'use-index-marks'),
+ (TEXTNS,u'use-outline-level'),
+ (TEXTNS,u'use-index-source-styles'),
+ ),
+ (TEXTNS,u'template-name'):(
+ (TEXTNS,u'display'),
+ ),
+ (TEXTNS,u'text-input'):(
+ (TEXTNS,u'description'),
+ ),
+ (TEXTNS,u'time'):(
+ (TEXTNS,u'time-adjust'),
+ (TEXTNS,u'fixed'),
+ (TEXTNS,u'time-value'),
+ (STYLENS,u'data-style-name'),
+ ),
+ (TEXTNS,u'title'):(
+ (TEXTNS,u'fixed'),
+ ),
+ (TEXTNS,u'toc-mark'):(
+ (TEXTNS,u'string-value'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'toc-mark-end'):(
+ (TEXTNS,u'id'),
+ ),
+ (TEXTNS,u'toc-mark-start'):(
+ (TEXTNS,u'id'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'tracked-changes'):(
+ (TEXTNS,u'track-changes'),
+ ),
+ (TEXTNS,u'user-defined'):(
+ (TEXTNS,u'name'),
+ (OFFICENS,u'string-value'),
+ (OFFICENS,u'value'),
+ (OFFICENS,u'boolean-value'),
+ (OFFICENS,u'date-value'),
+ (STYLENS,u'data-style-name'),
+ (TEXTNS,u'fixed'),
+ (OFFICENS,u'time-value'),
+ ),
+ (TEXTNS,u'user-field-decl'):(
+ (TEXTNS,u'name'),
+ (OFFICENS,u'string-value'),
+ (OFFICENS,u'value'),
+ (OFFICENS,u'boolean-value'),
+ (OFFICENS,u'currency'),
+ (OFFICENS,u'date-value'),
+ (OFFICENS,u'value-type'),
+ (TEXTNS,u'formula'),
+ (OFFICENS,u'time-value'),
+ ),
+ (TEXTNS,u'user-field-decls'):(
+ ),
+ (TEXTNS,u'user-field-get'):(
+ (STYLENS,u'data-style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'display'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'user-field-input'):(
+ (STYLENS,u'data-style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'description'),
+ ),
+ (TEXTNS,u'user-index'):(
+ (TEXTNS,u'protected'),
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'protection-key'),
+ ),
+ (TEXTNS,u'user-index-entry-template'):(
+ (TEXTNS,u'style-name'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'user-index-mark'):(
+ (TEXTNS,u'index-name'),
+ (TEXTNS,u'string-value'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'user-index-mark-end'):(
+ (TEXTNS,u'id'),
+ (TEXTNS,u'outline-level'),
+ ),
+ (TEXTNS,u'user-index-mark-start'):(
+ (TEXTNS,u'index-name'),
+ (TEXTNS,u'id'),
+ (TEXTNS,u'outline-level'),
+ ),
+# allowed_attributes
+ (TEXTNS,u'user-index-source'):(
+ (TEXTNS,u'copy-outline-levels'),
+ (TEXTNS,u'index-name'),
+ (TEXTNS,u'index-scope'),
+ (TEXTNS,u'relative-tab-stop-position'),
+ (TEXTNS,u'use-floating-frames'),
+ (TEXTNS,u'use-graphics'),
+ (TEXTNS,u'use-index-marks'),
+ (TEXTNS,u'use-objects'),
+ (TEXTNS,u'use-tables'),
+ ),
+ (TEXTNS,u'variable-decl'):(
+ (TEXTNS,u'name'),
+ (OFFICENS,u'value-type'),
+ ),
+ (TEXTNS,u'variable-decls'):(
+ ),
+ (TEXTNS,u'variable-get'):(
+ (STYLENS,u'data-style-name'),
+ (TEXTNS,u'name'),
+ (TEXTNS,u'display'),
+ ),
+ (TEXTNS,u'variable-input'):(
+ (STYLENS,u'data-style-name'),
+ (TEXTNS,u'display'),
+ (TEXTNS,u'name'),
+ (OFFICENS,u'value-type'),
+ (TEXTNS,u'description'),
+ ),
+ (TEXTNS,u'variable-set'):(
+ (TEXTNS,u'name'),
+ (TEXTNS,u'display'),
+ (OFFICENS,u'string-value'),
+ (OFFICENS,u'value'),
+ (OFFICENS,u'boolean-value'),
+ (OFFICENS,u'currency'),
+ (OFFICENS,u'date-value'),
+ (STYLENS,u'data-style-name'),
+ (OFFICENS,u'value-type'),
+ (TEXTNS,u'formula'),
+ (OFFICENS,u'time-value'),
+ ),
+# allowed_attributes
+}
diff --git a/util/odf/manifest.py b/util/odf/manifest.py
new file mode 100644
index 0000000..de59048
--- /dev/null
+++ b/util/odf/manifest.py
@@ -0,0 +1,41 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2006-2007 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+#
+
+from namespaces import MANIFESTNS
+from element import Element
+
+# Autogenerated
+def Manifest(**args):
+ return Element(qname = (MANIFESTNS,'manifest'), **args)
+
+def FileEntry(**args):
+ return Element(qname = (MANIFESTNS,'file-entry'), **args)
+
+def EncryptionData(**args):
+ return Element(qname = (MANIFESTNS,'encryption-data'), **args)
+
+def Algorithm(**args):
+ return Element(qname = (MANIFESTNS,'algorithm'), **args)
+
+def KeyDerivation(**args):
+ return Element(qname = (MANIFESTNS,'key-derivation'), **args)
+
diff --git a/util/odf/meta.py b/util/odf/meta.py
new file mode 100644
index 0000000..dc03181
--- /dev/null
+++ b/util/odf/meta.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2006-2007 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+
+from namespaces import METANS
+from element import Element
+
+# Autogenerated
+def AutoReload(**args):
+ return Element(qname = (METANS,'auto-reload'), **args)
+
+def CreationDate(**args):
+ return Element(qname = (METANS,'creation-date'), **args)
+
+def DateString(**args):
+ return Element(qname = (METANS,'date-string'), **args)
+
+def DocumentStatistic(**args):
+ return Element(qname = (METANS,'document-statistic'), **args)
+
+def EditingCycles(**args):
+ return Element(qname = (METANS,'editing-cycles'), **args)
+
+def EditingDuration(**args):
+ return Element(qname = (METANS,'editing-duration'), **args)
+
+def Generator(**args):
+ return Element(qname = (METANS,'generator'), **args)
+
+def HyperlinkBehaviour(**args):
+ return Element(qname = (METANS,'hyperlink-behaviour'), **args)
+
+def InitialCreator(**args):
+ return Element(qname = (METANS,'initial-creator'), **args)
+
+def Keyword(**args):
+ return Element(qname = (METANS,'keyword'), **args)
+
+def PrintDate(**args):
+ return Element(qname = (METANS,'print-date'), **args)
+
+def PrintedBy(**args):
+ return Element(qname = (METANS,'printed-by'), **args)
+
+def Template(**args):
+ return Element(qname = (METANS,'template'), **args)
+
+def UserDefined(**args):
+ return Element(qname = (METANS,'user-defined'), **args)
+
diff --git a/util/odf/namespaces.py b/util/odf/namespaces.py
new file mode 100644
index 0000000..bf9ce61
--- /dev/null
+++ b/util/odf/namespaces.py
@@ -0,0 +1,107 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2006-2010 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+TOOLSVERSION = u"ODFPY/0.9.6"
+
+ANIMNS = u"urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
+CHARTNS = u"urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+CHARTOOONS = u"http://openoffice.org/2010/chart"
+CONFIGNS = u"urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+CSS3TNS = u"http://www.w3.org/TR/css3-text/"
+#DBNS = u"http://openoffice.org/2004/database"
+DBNS = u"urn:oasis:names:tc:opendocument:xmlns:database:1.0"
+DCNS = u"http://purl.org/dc/elements/1.1/"
+DOMNS = u"http://www.w3.org/2001/xml-events"
+DR3DNS = u"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+DRAWNS = u"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+FIELDNS = u"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0"
+FONS = u"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+FORMNS = u"urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+FORMXNS = u"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
+GRDDLNS = u"http://www.w3.org/2003/g/data-view#"
+KOFFICENS = u"http://www.koffice.org/2005/"
+MANIFESTNS = u"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"
+MATHNS = u"http://www.w3.org/1998/Math/MathML"
+METANS = u"urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+NUMBERNS = u"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+OFFICENS = u"urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+OFNS = u"urn:oasis:names:tc:opendocument:xmlns:of:1.2"
+OOOCNS = u"http://openoffice.org/2004/calc"
+OOONS = u"http://openoffice.org/2004/office"
+OOOWNS = u"http://openoffice.org/2004/writer"
+PRESENTATIONNS = u"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+RDFANS = u"http://docs.oasis-open.org/opendocument/meta/rdfa#"
+RPTNS = u"http://openoffice.org/2005/report"
+SCRIPTNS = u"urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+SMILNS = u"urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
+STYLENS = u"urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+SVGNS = u"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+TABLENS = u"urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+TABLEOOONS = u"http://openoffice.org/2009/table"
+TEXTNS = u"urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+XFORMSNS = u"http://www.w3.org/2002/xforms"
+XHTMLNS = u"http://www.w3.org/1999/xhtml"
+XLINKNS = u"http://www.w3.org/1999/xlink"
+XMLNS = u"http://www.w3.org/XML/1998/namespace"
+XSDNS = u"http://www.w3.org/2001/XMLSchema"
+XSINS = u"http://www.w3.org/2001/XMLSchema-instance"
+
+nsdict = {
+ ANIMNS: u'anim',
+ CHARTNS: u'chart',
+ CHARTOOONS: u'chartooo',
+ CONFIGNS: u'config',
+ CSS3TNS: u'css3t',
+ DBNS: u'db',
+ DCNS: u'dc',
+ DOMNS: u'dom',
+ DR3DNS: u'dr3d',
+ DRAWNS: u'draw',
+ FIELDNS: u'field',
+ FONS: u'fo',
+ FORMNS: u'form',
+ FORMXNS: u'formx',
+ GRDDLNS: u'grddl',
+ KOFFICENS: u'koffice',
+ MANIFESTNS: u'manifest',
+ MATHNS: u'math',
+ METANS: u'meta',
+ NUMBERNS: u'number',
+ OFFICENS: u'office',
+ OFNS: u'of',
+ OOONS: u'ooo',
+ OOOWNS: u'ooow',
+ OOOCNS: u'oooc',
+ PRESENTATIONNS: u'presentation',
+ RDFANS: u'rdfa',
+ RPTNS: u'rpt',
+ SCRIPTNS: u'script',
+ SMILNS: u'smil',
+ STYLENS: u'style',
+ SVGNS: u'svg',
+ TABLENS: u'table',
+ TABLEOOONS: u'tableooo',
+ TEXTNS: u'text',
+ XFORMSNS: u'xforms',
+ XLINKNS: u'xlink',
+ XHTMLNS: u'xhtml',
+ XMLNS: u'xml',
+ XSDNS: u'xsd',
+ XSINS: u'xsi',
+}
diff --git a/util/odf/odfmanifest.py b/util/odf/odfmanifest.py
new file mode 100644
index 0000000..07754fd
--- /dev/null
+++ b/util/odf/odfmanifest.py
@@ -0,0 +1,115 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2006-2007 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+
+# This script lists the content of the manifest.xml file
+import zipfile
+from xml.sax import make_parser,handler
+from xml.sax.xmlreader import InputSource
+import xml.sax.saxutils
+from cStringIO import StringIO
+
+MANIFESTNS="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"
+
+#-----------------------------------------------------------------------------
+#
+# ODFMANIFESTHANDLER
+#
+#-----------------------------------------------------------------------------
+
+class ODFManifestHandler(handler.ContentHandler):
+ """ The ODFManifestHandler parses a manifest file and produces a list of
+ content """
+
+ def __init__(self):
+ self.manifest = {}
+
+ # Tags
+ # FIXME: Also handle encryption data
+ self.elements = {
+ (MANIFESTNS, 'file-entry'): (self.s_file_entry, self.donothing),
+ }
+
+ def handle_starttag(self, tag, method, attrs):
+ method(tag,attrs)
+
+ def handle_endtag(self, tag, method):
+ method(tag)
+
+ def startElementNS(self, tag, qname, attrs):
+ method = self.elements.get(tag, (None, None))[0]
+ if method:
+ self.handle_starttag(tag, method, attrs)
+ else:
+ self.unknown_starttag(tag,attrs)
+
+ def endElementNS(self, tag, qname):
+ method = self.elements.get(tag, (None, None))[1]
+ if method:
+ self.handle_endtag(tag, method)
+ else:
+ self.unknown_endtag(tag)
+
+ def unknown_starttag(self, tag, attrs):
+ pass
+
+ def unknown_endtag(self, tag):
+ pass
+
+ def donothing(self, tag, attrs=None):
+ pass
+
+ def s_file_entry(self, tag, attrs):
+ m = attrs.get((MANIFESTNS, 'media-type'),"application/octet-stream")
+ p = attrs.get((MANIFESTNS, 'full-path'))
+ self.manifest[p] = { 'media-type':m, 'full-path':p }
+
+
+#-----------------------------------------------------------------------------
+#
+# Reading the file
+#
+#-----------------------------------------------------------------------------
+
+def manifestlist(manifestxml):
+ odhandler = ODFManifestHandler()
+ parser = make_parser()
+ parser.setFeature(handler.feature_namespaces, 1)
+ parser.setContentHandler(odhandler)
+ parser.setErrorHandler(handler.ErrorHandler())
+
+ inpsrc = InputSource()
+ inpsrc.setByteStream(StringIO(manifestxml))
+ parser.parse(inpsrc)
+
+ return odhandler.manifest
+
+def odfmanifest(odtfile):
+ z = zipfile.ZipFile(odtfile)
+ manifest = z.read('META-INF/manifest.xml')
+ z.close()
+ return manifestlist(manifest)
+
+if __name__ == "__main__":
+ import sys
+ result = odfmanifest(sys.argv[1])
+ for file in result.values():
+ print "%-40s %-40s" % (file['media-type'], file['full-path'])
+
diff --git a/util/odf/office.py b/util/odf/office.py
new file mode 100644
index 0000000..085e251
--- /dev/null
+++ b/util/odf/office.py
@@ -0,0 +1,104 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2006-2007 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+
+from namespaces import OFFICENS
+from element import Element
+from draw import StyleRefElement
+
+# Autogenerated
+def Annotation(**args):
+ return StyleRefElement(qname = (OFFICENS,'annotation'), **args)
+
+def AutomaticStyles(**args):
+ return Element(qname = (OFFICENS, 'automatic-styles'), **args)
+
+def BinaryData(**args):
+ return Element(qname = (OFFICENS,'binary-data'), **args)
+
+def Body(**args):
+ return Element(qname = (OFFICENS, 'body'), **args)
+
+def ChangeInfo(**args):
+ return Element(qname = (OFFICENS,'change-info'), **args)
+
+def Chart(**args):
+ return Element(qname = (OFFICENS,'chart'), **args)
+
+def DdeSource(**args):
+ return Element(qname = (OFFICENS,'dde-source'), **args)
+
+def Document(version="1.1", **args):
+ return Element(qname = (OFFICENS,'document'), version=version, **args)
+
+def DocumentContent(version="1.1", **args):
+ return Element(qname = (OFFICENS, 'document-content'), version=version, **args)
+
+def DocumentMeta(version="1.1", **args):
+ return Element(qname = (OFFICENS, 'document-meta'), version=version, **args)
+
+def DocumentSettings(version="1.1", **args):
+ return Element(qname = (OFFICENS, 'document-settings'), version=version, **args)
+
+def DocumentStyles(version="1.1", **args):
+ return Element(qname = (OFFICENS, 'document-styles'), version=version, **args)
+
+def Drawing(**args):
+ return Element(qname = (OFFICENS,'drawing'), **args)
+
+def EventListeners(**args):
+ return Element(qname = (OFFICENS,'event-listeners'), **args)
+
+def FontFaceDecls(**args):
+ return Element(qname = (OFFICENS, 'font-face-decls'), **args)
+
+def Forms(**args):
+ return Element(qname = (OFFICENS,'forms'), **args)
+
+def Image(**args):
+ return Element(qname = (OFFICENS,'image'), **args)
+
+def MasterStyles(**args):
+ return Element(qname = (OFFICENS, 'master-styles'), **args)
+
+def Meta(**args):
+ return Element(qname = (OFFICENS, 'meta'), **args)
+
+def Presentation(**args):
+ return Element(qname = (OFFICENS,'presentation'), **args)
+
+def Script(**args):
+ return Element(qname = (OFFICENS, 'script'), **args)
+
+def Scripts(**args):
+ return Element(qname = (OFFICENS, 'scripts'), **args)
+
+def Settings(**args):
+ return Element(qname = (OFFICENS, 'settings'), **args)
+
+def Spreadsheet(**args):
+ return Element(qname = (OFFICENS, 'spreadsheet'), **args)
+
+def Styles(**args):
+ return Element(qname = (OFFICENS, 'styles'), **args)
+
+def Text(**args):
+ return Element(qname = (OFFICENS, 'text'), **args)
+
+# Autogenerated end
diff --git a/util/odf/opendocument.py b/util/odf/opendocument.py
new file mode 100644
index 0000000..69ada21
--- /dev/null
+++ b/util/odf/opendocument.py
@@ -0,0 +1,656 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2006-2010 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+
+__doc__="""Use OpenDocument to generate your documents."""
+
+import zipfile, time, sys, mimetypes, copy
+from cStringIO import StringIO
+from namespaces import *
+import manifest, meta
+from office import *
+import element
+from attrconverters import make_NCName
+from xml.sax.xmlreader import InputSource
+from odfmanifest import manifestlist
+
+__version__= TOOLSVERSION
+
+_XMLPROLOGUE = u"<?xml version='1.0' encoding='UTF-8'?>\n"
+
+UNIXPERMS = 0100644 << 16L # -rw-r--r--
+
+IS_FILENAME = 0
+IS_IMAGE = 1
+# We need at least Python 2.2
+assert sys.version_info[0]>=2 and sys.version_info[1] >= 2
+
+#sys.setrecursionlimit(100)
+#The recursion limit is set conservative so mistakes like
+# s=content() s.addElement(s) won't eat up too much processor time.
+
+odmimetypes = {
+ 'application/vnd.oasis.opendocument.text': '.odt',
+ 'application/vnd.oasis.opendocument.text-template': '.ott',
+ 'application/vnd.oasis.opendocument.graphics': '.odg',
+ 'application/vnd.oasis.opendocument.graphics-template': '.otg',
+ 'application/vnd.oasis.opendocument.presentation': '.odp',
+ 'application/vnd.oasis.opendocument.presentation-template': '.otp',
+ 'application/vnd.oasis.opendocument.spreadsheet': '.ods',
+ 'application/vnd.oasis.opendocument.spreadsheet-template': '.ots',
+ 'application/vnd.oasis.opendocument.chart': '.odc',
+ 'application/vnd.oasis.opendocument.chart-template': '.otc',
+ 'application/vnd.oasis.opendocument.image': '.odi',
+ 'application/vnd.oasis.opendocument.image-template': '.oti',
+ 'application/vnd.oasis.opendocument.formula': '.odf',
+ 'application/vnd.oasis.opendocument.formula-template': '.otf',
+ 'application/vnd.oasis.opendocument.text-master': '.odm',
+ 'application/vnd.oasis.opendocument.text-web': '.oth',
+}
+
+class OpaqueObject:
+ def __init__(self, filename, mediatype, content=None):
+ self.mediatype = mediatype
+ self.filename = filename
+ self.content = content
+
+class OpenDocument:
+ """ A class to hold the content of an OpenDocument document
+ Use the xml method to write the XML
+ source to the screen or to a file
+ d = OpenDocument(mimetype)
+ fd.write(d.xml())
+ """
+ thumbnail = None
+
+ def __init__(self, mimetype, add_generator=True):
+ self.mimetype = mimetype
+ self.childobjects = []
+ self._extra = []
+ self.folder = "" # Always empty for toplevel documents
+ self.topnode = Document(mimetype=self.mimetype)
+ self.topnode.ownerDocument = self
+
+ self.clear_caches()
+
+ self.Pictures = {}
+ self.meta = Meta()
+ self.topnode.addElement(self.meta)
+ if add_generator:
+ self.meta.addElement(meta.Generator(text=TOOLSVERSION))
+ self.scripts = Scripts()
+ self.topnode.addElement(self.scripts)
+ self.fontfacedecls = FontFaceDecls()
+ self.topnode.addElement(self.fontfacedecls)
+ self.settings = Settings()
+ self.topnode.addElement(self.settings)
+ self.styles = Styles()
+ self.topnode.addElement(self.styles)
+ self.automaticstyles = AutomaticStyles()
+ self.topnode.addElement(self.automaticstyles)
+ self.masterstyles = MasterStyles()
+ self.topnode.addElement(self.masterstyles)
+ self.body = Body()
+ self.topnode.addElement(self.body)
+
+ def rebuild_caches(self, node=None):
+ if node is None: node = self.topnode
+ self.build_caches(node)
+ for e in node.childNodes:
+ if e.nodeType == element.Node.ELEMENT_NODE:
+ self.rebuild_caches(e)
+
+ def clear_caches(self):
+ self.element_dict = {}
+ self._styles_dict = {}
+ self._styles_ooo_fix = {}
+
+ def build_caches(self, element):
+ """ Called from element.py
+ """
+ if not self.element_dict.has_key(element.qname):
+ self.element_dict[element.qname] = []
+ self.element_dict[element.qname].append(element)
+ if element.qname == (STYLENS, u'style'):
+ self.__register_stylename(element) # Add to style dictionary
+ styleref = element.getAttrNS(TEXTNS,u'style-name')
+ if styleref is not None and self._styles_ooo_fix.has_key(styleref):
+ element.setAttrNS(TEXTNS,u'style-name', self._styles_ooo_fix[styleref])
+
+ def __register_stylename(self, element):
+ ''' Register a style. But there are three style dictionaries:
+ office:styles, office:automatic-styles and office:master-styles
+ Chapter 14
+ '''
+ name = element.getAttrNS(STYLENS, u'name')
+ if name is None:
+ return
+ if element.parentNode.qname in ((OFFICENS,u'styles'), (OFFICENS,u'automatic-styles')):
+ if self._styles_dict.has_key(name):
+ newname = 'M'+name # Rename style
+ self._styles_ooo_fix[name] = newname
+ # From here on all references to the old name will refer to the new one
+ name = newname
+ element.setAttrNS(STYLENS, u'name', name)
+ self._styles_dict[name] = element
+
+ def toXml(self, filename=''):
+ xml=StringIO()
+ xml.write(_XMLPROLOGUE)
+ self.body.toXml(0, xml)
+ if not filename:
+ return xml.getvalue()
+ else:
+ f=file(filename,'w')
+ f.write(xml.getvalue())
+ f.close()
+
+ def xml(self):
+ """ Generates the full document as an XML file
+ Always written as a bytestream in UTF-8 encoding
+ """
+ self.__replaceGenerator()
+ xml=StringIO()
+ xml.write(_XMLPROLOGUE)
+ self.topnode.toXml(0, xml)
+ return xml.getvalue()
+
+
+ def contentxml(self):
+ """ Generates the content.xml file
+ Always written as a bytestream in UTF-8 encoding
+ """
+ xml=StringIO()
+ xml.write(_XMLPROLOGUE)
+ x = DocumentContent()
+ x.write_open_tag(0, xml)
+ if self.scripts.hasChildNodes():
+ self.scripts.toXml(1, xml)
+ if self.fontfacedecls.hasChildNodes():
+ self.fontfacedecls.toXml(1, xml)
+ a = AutomaticStyles()
+ stylelist = self._used_auto_styles([self.styles, self.automaticstyles, self.body])
+ if len(stylelist) > 0:
+ a.write_open_tag(1, xml)
+ for s in stylelist:
+ s.toXml(2, xml)
+ a.write_close_tag(1, xml)
+ else:
+ a.toXml(1, xml)
+ self.body.toXml(1, xml)
+ x.write_close_tag(0, xml)
+ return xml.getvalue()
+
+ def __manifestxml(self):
+ """ Generates the manifest.xml file
+ The self.manifest isn't avaible unless the document is being saved
+ """
+ xml=StringIO()
+ xml.write(_XMLPROLOGUE)
+ self.manifest.toXml(0,xml)
+ return xml.getvalue()
+
+ def metaxml(self):
+ """ Generates the meta.xml file """
+ self.__replaceGenerator()
+ x = DocumentMeta()
+ x.addElement(self.meta)
+ xml=StringIO()
+ xml.write(_XMLPROLOGUE)
+ x.toXml(0,xml)
+ return xml.getvalue()
+
+ def settingsxml(self):
+ """ Generates the settings.xml file """
+ x = DocumentSettings()
+ x.addElement(self.settings)
+ xml=StringIO()
+ xml.write(_XMLPROLOGUE)
+ x.toXml(0,xml)
+ return xml.getvalue()
+
+ def _parseoneelement(self, top, stylenamelist):
+ """ Finds references to style objects in master-styles
+ and add the style name to the style list if not already there.
+ Recursive
+ """
+ for e in top.childNodes:
+ if e.nodeType == element.Node.ELEMENT_NODE:
+ for styleref in (
+ (CHARTNS,u'style-name'),
+ (DRAWNS,u'style-name'),
+ (DRAWNS,u'text-style-name'),
+ (PRESENTATIONNS,u'style-name'),
+ (STYLENS,u'data-style-name'),
+ (STYLENS,u'list-style-name'),
+ (STYLENS,u'page-layout-name'),
+ (STYLENS,u'style-name'),
+ (TABLENS,u'default-cell-style-name'),
+ (TABLENS,u'style-name'),
+ (TEXTNS,u'style-name') ):
+ if e.getAttrNS(styleref[0],styleref[1]):
+ stylename = e.getAttrNS(styleref[0],styleref[1])
+ if stylename not in stylenamelist:
+ stylenamelist.append(stylename)
+ stylenamelist = self._parseoneelement(e, stylenamelist)
+ return stylenamelist
+
+ def _used_auto_styles(self, segments):
+ """ Loop through the masterstyles elements, and find the automatic
+ styles that are used. These will be added to the automatic-styles
+ element in styles.xml
+ """
+ stylenamelist = []
+ for top in segments:
+ stylenamelist = self._parseoneelement(top, stylenamelist)
+ stylelist = []
+ for e in self.automaticstyles.childNodes:
+ if e.getAttrNS(STYLENS,u'name') in stylenamelist:
+ stylelist.append(e)
+ return stylelist
+
+ def stylesxml(self):
+ """ Generates the styles.xml file """
+ xml=StringIO()
+ xml.write(_XMLPROLOGUE)
+ x = DocumentStyles()
+ x.write_open_tag(0, xml)
+ if self.fontfacedecls.hasChildNodes():
+ self.fontfacedecls.toXml(1, xml)
+ self.styles.toXml(1, xml)
+ a = AutomaticStyles()
+ a.write_open_tag(1, xml)
+ for s in self._used_auto_styles([self.masterstyles]):
+ s.toXml(2, xml)
+ a.write_close_tag(1, xml)
+ if self.masterstyles.hasChildNodes():
+ self.masterstyles.toXml(1, xml)
+ x.write_close_tag(0, xml)
+ return xml.getvalue()
+
+ def addPicture(self, filename, mediatype=None, content=None):
+ """ Add a picture
+ It uses the same convention as OOo, in that it saves the picture in
+ the zipfile in the subdirectory 'Pictures'
+ If passed a file ptr, mediatype must be set
+ """
+ if content is None:
+ if mediatype is None:
+ mediatype, encoding = mimetypes.guess_type(filename)
+ if mediatype is None:
+ mediatype = ''
+ try: ext = filename[filename.rindex('.'):]
+ except: ext=''
+ else:
+ ext = mimetypes.guess_extension(mediatype)
+ manifestfn = "Pictures/%0.0f%s" % ((time.time()*10000000000), ext)
+ self.Pictures[manifestfn] = (IS_FILENAME, filename, mediatype)
+ else:
+ manifestfn = filename
+ self.Pictures[manifestfn] = (IS_IMAGE, content, mediatype)
+ return manifestfn
+
+ def addPictureFromFile(self, filename, mediatype=None):
+ """ Add a picture
+ It uses the same convention as OOo, in that it saves the picture in
+ the zipfile in the subdirectory 'Pictures'.
+ If mediatype is not given, it will be guessed from the filename
+ extension.
+ """
+ if mediatype is None:
+ mediatype, encoding = mimetypes.guess_type(filename)
+ if mediatype is None:
+ mediatype = ''
+ try: ext = filename[filename.rindex('.'):]
+ except ValueError: ext=''
+ else:
+ ext = mimetypes.guess_extension(mediatype)
+ manifestfn = "Pictures/%0.0f%s" % ((time.time()*10000000000), ext)
+ self.Pictures[manifestfn] = (IS_FILENAME, filename, mediatype)
+ return manifestfn
+
+ def addPictureFromString(self, content, mediatype):
+ """ Add a picture
+ It uses the same convention as OOo, in that it saves the picture in
+ the zipfile in the subdirectory 'Pictures'. The content variable
+ is a string that contains the binary image data. The mediatype
+ indicates the image format.
+ """
+ ext = mimetypes.guess_extension(mediatype)
+ manifestfn = "Pictures/%0.0f%s" % ((time.time()*10000000000), ext)
+ self.Pictures[manifestfn] = (IS_IMAGE, content, mediatype)
+ return manifestfn
+
+ def addThumbnail(self, filecontent=None):
+ """ Add a fixed thumbnail
+ The thumbnail in the library is big, so this is pretty useless.
+ """
+ if filecontent is None:
+ import thumbnail
+ self.thumbnail = thumbnail.thumbnail()
+ else:
+ self.thumbnail = filecontent
+
+ def addObject(self, document, objectname=None):
+ """ Adds an object (subdocument). The object must be an OpenDocument class
+ The return value will be the folder in the zipfile the object is stored in
+ """
+ self.childobjects.append(document)
+ if objectname is None:
+ document.folder = "%s/Object %d" % (self.folder, len(self.childobjects))
+ else:
+ document.folder = objectname
+ return ".%s" % document.folder
+
+ def _savePictures(self, object, folder):
+ hasPictures = False
+ for arcname, picturerec in object.Pictures.items():
+ what_it_is, fileobj, mediatype = picturerec
+ self.manifest.addElement(manifest.FileEntry(fullpath="%s%s" % ( folder ,arcname), mediatype=mediatype))
+ hasPictures = True
+ if what_it_is == IS_FILENAME:
+ self._z.write(fileobj, arcname, zipfile.ZIP_STORED)
+ else:
+ zi = zipfile.ZipInfo(str(arcname), self._now)
+ zi.compress_type = zipfile.ZIP_STORED
+ zi.external_attr = UNIXPERMS
+ self._z.writestr(zi, fileobj)
+ # According to section 17.7.3 in ODF 1.1, the pictures folder should not have a manifest entry
+# if hasPictures:
+# self.manifest.addElement(manifest.FileEntry(fullpath="%sPictures/" % folder, mediatype=""))
+ # Look in subobjects
+ subobjectnum = 1
+ for subobject in object.childobjects:
+ self._savePictures(subobject,'%sObject %d/' % (folder, subobjectnum))
+ subobjectnum += 1
+
+ def __replaceGenerator(self):
+ """ Section 3.1.1: The application MUST NOT export the original identifier
+ belonging to the application that created the document.
+ """
+ for m in self.meta.childNodes[:]:
+ if m.qname == (METANS, u'generator'):
+ self.meta.removeChild(m)
+ self.meta.addElement(meta.Generator(text=TOOLSVERSION))
+
+ def save(self, outputfile, addsuffix=False):
+ """ Save the document under the filename.
+ If the filename is '-' then save to stdout
+ """
+ if outputfile == '-':
+ outputfp = zipfile.ZipFile(sys.stdout,"w")
+ else:
+ if addsuffix:
+ outputfile = outputfile + odmimetypes.get(self.mimetype,'.xxx')
+ outputfp = zipfile.ZipFile(outputfile, "w")
+ self.__zipwrite(outputfp)
+ outputfp.close()
+
+ def write(self, outputfp):
+ """ User API to write the ODF file to an open file descriptor
+ Writes the ZIP format
+ """
+ zipoutputfp = zipfile.ZipFile(outputfp,"w")
+ self.__zipwrite(zipoutputfp)
+
+ def __zipwrite(self, outputfp):
+ """ Write the document to an open file pointer
+ This is where the real work is done
+ """
+ self._z = outputfp
+ self._now = time.localtime()[:6]
+ self.manifest = manifest.Manifest()
+
+ # Write mimetype
+ zi = zipfile.ZipInfo('mimetype', self._now)
+ zi.compress_type = zipfile.ZIP_STORED
+ zi.external_attr = UNIXPERMS
+ self._z.writestr(zi, self.mimetype)
+
+ self._saveXmlObjects(self,"")
+
+ # Write pictures
+ self._savePictures(self,"")
+
+ # Write the thumbnail
+ if self.thumbnail is not None:
+ self.manifest.addElement(manifest.FileEntry(fullpath="Thumbnails/", mediatype=''))
+ self.manifest.addElement(manifest.FileEntry(fullpath="Thumbnails/thumbnail.png", mediatype=''))
+ zi = zipfile.ZipInfo("Thumbnails/thumbnail.png", self._now)
+ zi.compress_type = zipfile.ZIP_DEFLATED
+ zi.external_attr = UNIXPERMS
+ self._z.writestr(zi, self.thumbnail)
+
+ # Write any extra files
+ for op in self._extra:
+ if op.filename == "META-INF/documentsignatures.xml": continue # Don't save signatures
+ self.manifest.addElement(manifest.FileEntry(fullpath=op.filename, mediatype=op.mediatype))
+ zi = zipfile.ZipInfo(op.filename.encode('utf-8'), self._now)
+ zi.compress_type = zipfile.ZIP_DEFLATED
+ zi.external_attr = UNIXPERMS
+ if op.content is not None:
+ self._z.writestr(zi, op.content)
+ # Write manifest
+ zi = zipfile.ZipInfo("META-INF/manifest.xml", self._now)
+ zi.compress_type = zipfile.ZIP_DEFLATED
+ zi.external_attr = UNIXPERMS
+ self._z.writestr(zi, self.__manifestxml() )
+ del self._z
+ del self._now
+ del self.manifest
+
+
+ def _saveXmlObjects(self, object, folder):
+ if self == object:
+ self.manifest.addElement(manifest.FileEntry(fullpath="/", mediatype=object.mimetype))
+ else:
+ self.manifest.addElement(manifest.FileEntry(fullpath=folder, mediatype=object.mimetype))
+ # Write styles
+ self.manifest.addElement(manifest.FileEntry(fullpath="%sstyles.xml" % folder, mediatype="text/xml"))
+ zi = zipfile.ZipInfo("%sstyles.xml" % folder, self._now)
+ zi.compress_type = zipfile.ZIP_DEFLATED
+ zi.external_attr = UNIXPERMS
+ self._z.writestr(zi, object.stylesxml() )
+
+ # Write content
+ self.manifest.addElement(manifest.FileEntry(fullpath="%scontent.xml" % folder, mediatype="text/xml"))
+ zi = zipfile.ZipInfo("%scontent.xml" % folder, self._now)
+ zi.compress_type = zipfile.ZIP_DEFLATED
+ zi.external_attr = UNIXPERMS
+ self._z.writestr(zi, object.contentxml() )
+
+ # Write settings
+ if object.settings.hasChildNodes():
+ self.manifest.addElement(manifest.FileEntry(fullpath="%ssettings.xml" % folder, mediatype="text/xml"))
+ zi = zipfile.ZipInfo("%ssettings.xml" % folder, self._now)
+ zi.compress_type = zipfile.ZIP_DEFLATED
+ zi.external_attr = UNIXPERMS
+ self._z.writestr(zi, object.settingsxml() )
+
+ # Write meta
+ if self == object:
+ self.manifest.addElement(manifest.FileEntry(fullpath="meta.xml", mediatype="text/xml"))
+ zi = zipfile.ZipInfo("meta.xml", self._now)
+ zi.compress_type = zipfile.ZIP_DEFLATED
+ zi.external_attr = UNIXPERMS
+ self._z.writestr(zi, object.metaxml() )
+
+ # Write subobjects
+ subobjectnum = 1
+ for subobject in object.childobjects:
+ self._saveXmlObjects(subobject, '%sObject %d/' % (folder, subobjectnum))
+ subobjectnum += 1
+
+# Document's DOM methods
+ def createElement(self, element):
+ """ Inconvenient interface to create an element, but follows XML-DOM.
+ Does not allow attributes as argument, therefore can't check grammar.
+ """
+ return element(check_grammar=False)
+
+ def createTextNode(self, data):
+ """ Method to create a text node """
+ return element.Text(data)
+
+ def createCDATASection(self, data):
+ """ Method to create a CDATA section """
+ return element.CDATASection(cdata)
+
+ def getMediaType(self):
+ """ Returns the media type """
+ return self.mimetype
+
+ def getStyleByName(self, name):
+ """ Finds a style object based on the name """
+ ncname = make_NCName(name)
+ if self._styles_dict == {}:
+ self.rebuild_caches()
+ return self._styles_dict.get(ncname, None)
+
+ def getElementsByType(self, element):
+ """ Gets elements based on the type, which is function from text.py, draw.py etc. """
+ obj = element(check_grammar=False)
+ if self.element_dict == {}:
+ self.rebuild_caches()
+ return self.element_dict.get(obj.qname, [])
+
+# Convenience functions
+def OpenDocumentChart():
+ """ Creates a chart document """
+ doc = OpenDocument('application/vnd.oasis.opendocument.chart')
+ doc.chart = Chart()
+ doc.body.addElement(doc.chart)
+ return doc
+
+def OpenDocumentDrawing():
+ """ Creates a drawing document """
+ doc = OpenDocument('application/vnd.oasis.opendocument.graphics')
+ doc.drawing = Drawing()
+ doc.body.addElement(doc.drawing)
+ return doc
+
+def OpenDocumentImage():
+ """ Creates an image document """
+ doc = OpenDocument('application/vnd.oasis.opendocument.image')
+ doc.image = Image()
+ doc.body.addElement(doc.image)
+ return doc
+
+def OpenDocumentPresentation():
+ """ Creates a presentation document """
+ doc = OpenDocument('application/vnd.oasis.opendocument.presentation')
+ doc.presentation = Presentation()
+ doc.body.addElement(doc.presentation)
+ return doc
+
+def OpenDocumentSpreadsheet():
+ """ Creates a spreadsheet document """
+ doc = OpenDocument('application/vnd.oasis.opendocument.spreadsheet')
+ doc.spreadsheet = Spreadsheet()
+ doc.body.addElement(doc.spreadsheet)
+ return doc
+
+def OpenDocumentText():
+ """ Creates a text document """
+ doc = OpenDocument('application/vnd.oasis.opendocument.text')
+ doc.text = Text()
+ doc.body.addElement(doc.text)
+ return doc
+
+def OpenDocumentTextMaster():
+ """ Creates a text master document """
+ doc = OpenDocument('application/vnd.oasis.opendocument.text-master')
+ doc.text = Text()
+ doc.body.addElement(doc.text)
+ return doc
+
+def __loadxmlparts(z, manifest, doc, objectpath):
+ from load import LoadParser
+ from xml.sax import make_parser, handler
+
+ for xmlfile in (objectpath+'settings.xml', objectpath+'meta.xml', objectpath+'content.xml', objectpath+'styles.xml'):
+ if not manifest.has_key(xmlfile):
+ continue
+ try:
+ xmlpart = z.read(xmlfile)
+ doc._parsing = xmlfile
+
+ parser = make_parser()
+ parser.setFeature(handler.feature_namespaces, 1)
+ parser.setContentHandler(LoadParser(doc))
+ parser.setErrorHandler(handler.ErrorHandler())
+
+ inpsrc = InputSource()
+ inpsrc.setByteStream(StringIO(xmlpart))
+ parser.parse(inpsrc)
+ del doc._parsing
+ except KeyError, v: pass
+
+def load(odffile):
+ """ Load an ODF file into memory
+ Returns a reference to the structure
+ """
+ z = zipfile.ZipFile(odffile)
+ mimetype = z.read('mimetype')
+ doc = OpenDocument(mimetype, add_generator=False)
+
+ # Look in the manifest file to see if which of the four files there are
+ manifestpart = z.read('META-INF/manifest.xml')
+ manifest = manifestlist(manifestpart)
+ __loadxmlparts(z, manifest, doc, '')
+ for mentry,mvalue in manifest.items():
+ if mentry[:9] == "Pictures/" and len(mentry) > 9:
+ doc.addPicture(mvalue['full-path'], mvalue['media-type'], z.read(mentry))
+ elif mentry == "Thumbnails/thumbnail.png":
+ doc.addThumbnail(z.read(mentry))
+ elif mentry in ('settings.xml', 'meta.xml', 'content.xml', 'styles.xml'):
+ pass
+ # Load subobjects into structure
+ elif mentry[:7] == "Object " and len(mentry) < 11 and mentry[-1] == "/":
+ subdoc = OpenDocument(mvalue['media-type'], add_generator=False)
+ doc.addObject(subdoc, "/" + mentry[:-1])
+ __loadxmlparts(z, manifest, subdoc, mentry)
+ elif mentry[:7] == "Object ":
+ pass # Don't load subobjects as opaque objects
+ else:
+ if mvalue['full-path'][-1] == '/':
+ doc._extra.append(OpaqueObject(mvalue['full-path'], mvalue['media-type'], None))
+ else:
+ doc._extra.append(OpaqueObject(mvalue['full-path'], mvalue['media-type'], z.read(mentry)))
+ # Add the SUN junk here to the struct somewhere
+ # It is cached data, so it can be out-of-date
+ z.close()
+ b = doc.getElementsByType(Body)
+ if mimetype[:39] == 'application/vnd.oasis.opendocument.text':
+ doc.text = b[0].firstChild
+ elif mimetype[:43] == 'application/vnd.oasis.opendocument.graphics':
+ doc.graphics = b[0].firstChild
+ elif mimetype[:47] == 'application/vnd.oasis.opendocument.presentation':
+ doc.presentation = b[0].firstChild
+ elif mimetype[:46] == 'application/vnd.oasis.opendocument.spreadsheet':
+ doc.spreadsheet = b[0].firstChild
+ elif mimetype[:40] == 'application/vnd.oasis.opendocument.chart':
+ doc.chart = b[0].firstChild
+ elif mimetype[:40] == 'application/vnd.oasis.opendocument.image':
+ doc.image = b[0].firstChild
+ elif mimetype[:42] == 'application/vnd.oasis.opendocument.formula':
+ doc.formula = b[0].firstChild
+ return doc
+
+# vim: set expandtab sw=4 :
diff --git a/util/odf/style.py b/util/odf/style.py
new file mode 100644
index 0000000..f64d7c8
--- /dev/null
+++ b/util/odf/style.py
@@ -0,0 +1,148 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2006-2007 Søren Roug, European Environment Agency
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Contributor(s):
+#
+
+from namespaces import STYLENS
+from element import Element
+
+def StyleElement(**args):
+ e = Element(**args)
+ if args.get('check_grammar', True) == True:
+ if not args.has_key('displayname'):
+ e.setAttrNS(STYLENS,'display-name', args.get('name'))
+ return e
+
+# Autogenerated
+def BackgroundImage(**args):
+ return Element(qname = (STYLENS,'background-image'), **args)
+
+def ChartProperties(**args):
+ return Element(qname = (STYLENS,'chart-properties'), **args)
+
+def Column(**args):
+ return Element(qname = (STYLENS,'column'), **args)
+
+def ColumnSep(**args):
+ return Element(qname = (STYLENS,'column-sep'), **args)
+
+def Columns(**args):
+ return Element(qname = (STYLENS,'columns'), **args)
+
+def DefaultStyle(**args):
+ return Element(qname = (STYLENS,'default-style'), **args)
+
+def DrawingPageProperties(**args):
+ return Element(qname = (STYLENS,'drawing-page-properties'), **args)
+
+def DropCap(**args):
+ return Element(qname = (STYLENS,'drop-cap'), **args)
+
+def FontFace(**args):
+ return Element(qname = (STYLENS,'font-face'), **args)
+
+def Footer(**args):
+ return Element(qname = (STYLENS,'footer'), **args)
+
+def FooterLeft(**args):
+ return Element(qname = (STYLENS,'footer-left'), **args)
+
+def FooterStyle(**args):
+ return Element(qname = (STYLENS,'footer-style'), **args)
+
+def FootnoteSep(**args):
+ return Element(qname = (STYLENS,'footnote-sep'), **args)
+
+def GraphicProperties(**args):
+ return Element(qname = (STYLENS,'graphic-properties'), **args)
+
+def HandoutMaster(**args):
+ return Element(qname = (STYLENS,'handout-master'), **args)
+
+def Header(**args):
+ return Element(qname = (STYLENS,'header'), **args)
+
+def HeaderFooterProperties(**args):
+ return Element(qname = (STYLENS,'header-footer-properties'), **args)
+
+def HeaderLeft(**args):
+ return Element(qname = (STYLENS,'header-left'), **args)
+
+def HeaderStyle(**args):
+ return Element(qname = (STYLENS,'header-style'), **args)
+
+def ListLevelProperties(**args):
+ return Element(qname = (STYLENS,'list-level-properties'), **args)
+
+def Map(**args):
+ return Element(qname = (STYLENS,'map'), **args)
+
+def MasterPage(**args):
+ return StyleElement(qname = (STYLENS,'master-page'), **args)
+
+def PageLayout(**args):
+ return Element(qname = (STYLENS,'page-layout'), **args)
+
+def PageLayoutProperties(**args):
+ return Element(qname = (STYLENS,'page-layout-properties'), **args)
+
+def ParagraphProperties(**args):
+ return Element(qname = (STYLENS,'paragraph-properties'), **args)
+
+def PresentationPageLayout(**args):
+ return StyleElement(qname = (STYLENS,'presentation-page-layout'), **args)
+
+def RegionCenter(**args):
+ return Element(qname = (STYLENS,'region-center'), **args)
+
+def RegionLeft(**args):
+ return Element(qname = (STYLENS,'region-left'), **args)
+
+def RegionRight(**args):
+ return Element(qname = (STYLENS,'region-right'), **args)
+
+def RubyProperties(**args):
+ return Element(qname = (STYLENS,'ruby-properties'), **args)
+
+def SectionProperties(**args):
+ return Element(qname = (STYLENS,'section-properties'), **args)
+
+def Style(**args):
+ return StyleElement(qname = (STYLENS,'style'), **args)
+
+def TabStop(**args):
+ return Element(qname = (STYLENS,'tab-stop'), **args)
+
+def TabStops(**args):
+ return Element(qname = (STYLENS,'tab-stops'), **args)
+
+def TableCellProperties(**args):
+ return Element(qname = (STYLENS,'table-cell-properties'), **args)
+
+def TableColumnProperties(**args):
+ return Element(qname = (STYLENS,'table-column-properties'), **args)
+
+def TableProperties(**args):
+ return Element(qname = (STYLENS,'table-properties'), **args)
+
+def TableRowProperties(**args):
+ return Element(qname = (STYLENS,'table-row-properties'), **args)
+
+def TextProperties(**args):
+ return Element(qname = (STYLENS,'text-properties'), **args)
+