# 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 (
    ANIMNS,
    CHARTNS,
    CONFIGNS,
    DCNS,
    DR3DNS,
    DRAWNS,
    FONS,
    FORMNS,
    MANIFESTNS,
    MATHNS,
    METANS,
    NUMBERNS,
    OFFICENS,
    PRESENTATIONNS,
    SCRIPTNS,
    SMILNS,
    STYLENS,
    SVGNS,
    TABLENS,
    TEXTNS,
    XFORMSNS,
    XLINKNS,
)

# 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, 'creator'): (),
    (DCNS, 'date'): (),
    (DCNS, 'description'): (),
    (DCNS, 'language'): (),
    (DCNS, 'subject'): (),
    (DCNS, '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, 'math'): None,
    (XFORMSNS, 'model'): None,
    (ANIMNS, 'animate'): (),
    (ANIMNS, 'animateColor'): (),
    (ANIMNS, 'animateMotion'): (),
    (ANIMNS, 'animateTransform'): (),
    (ANIMNS, 'audio'): (),
    (ANIMNS, 'command'): ((ANIMNS, 'param'),),
    # allowed_children
    (ANIMNS, 'iterate'): (
        (ANIMNS, 'animate'),
        (ANIMNS, 'animateColor'),
        (ANIMNS, 'animateMotion'),
        (ANIMNS, 'animateTransform'),
        (ANIMNS, 'audio'),
        (ANIMNS, 'command'),
        (ANIMNS, 'iterate'),
        (ANIMNS, 'par'),
        (ANIMNS, 'seq'),
        (ANIMNS, 'set'),
        (ANIMNS, 'transitionFilter'),
    ),
    (ANIMNS, 'par'): (
        (ANIMNS, 'animate'),
        (ANIMNS, 'animateColor'),
        (ANIMNS, 'animateMotion'),
        (ANIMNS, 'animateTransform'),
        (ANIMNS, 'audio'),
        (ANIMNS, 'command'),
        (ANIMNS, 'iterate'),
        (ANIMNS, 'par'),
        (ANIMNS, 'seq'),
        (ANIMNS, 'set'),
        (ANIMNS, 'transitionFilter'),
    ),
    # allowed_children
    (ANIMNS, 'param'): (),
    (ANIMNS, 'seq'): (
        (ANIMNS, 'animate'),
        (ANIMNS, 'animateColor'),
        (ANIMNS, 'animateMotion'),
        (ANIMNS, 'animateTransform'),
        (ANIMNS, 'audio'),
        (ANIMNS, 'command'),
        (ANIMNS, 'iterate'),
        (ANIMNS, 'par'),
        (ANIMNS, 'seq'),
        (ANIMNS, 'set'),
        (ANIMNS, 'transitionFilter'),
    ),
    (ANIMNS, 'set'): (),
    (ANIMNS, 'transitionFilter'): (),
    (CHARTNS, 'axis'): (
        (CHARTNS, 'categories'),
        (CHARTNS, 'grid'),
        (CHARTNS, 'title'),
    ),
    # allowed_children
    (CHARTNS, 'categories'): (),
    (CHARTNS, 'chart'): (
        (CHARTNS, 'footer'),
        (CHARTNS, 'legend'),
        (CHARTNS, 'plot-area'),
        (CHARTNS, 'subtitle'),
        (CHARTNS, 'title'),
        (TABLENS, 'table'),
    ),
    (CHARTNS, 'data-point'): (),
    (CHARTNS, 'domain'): (),
    (CHARTNS, 'error-indicator'): (),
    (CHARTNS, 'floor'): (),
    (CHARTNS, 'footer'): ((TEXTNS, 'p'),),
    (CHARTNS, 'grid'): (),
    (CHARTNS, 'legend'): (),
    # allowed_children
    (CHARTNS, 'mean-value'): (),
    (CHARTNS, 'plot-area'): (
        (CHARTNS, 'axis'),
        (CHARTNS, 'floor'),
        (CHARTNS, 'series'),
        (CHARTNS, 'stock-gain-marker'),
        (CHARTNS, 'stock-loss-marker'),
        (CHARTNS, 'stock-range-line'),
        (CHARTNS, 'wall'),
        (DR3DNS, 'light'),
    ),
    (CHARTNS, 'regression-curve'): (),
    (CHARTNS, 'series'): (
        (CHARTNS, 'data-point'),
        (CHARTNS, 'domain'),
        (CHARTNS, 'error-indicator'),
        (CHARTNS, 'mean-value'),
        (CHARTNS, 'regression-curve'),
    ),
    (CHARTNS, 'stock-gain-marker'): (),
    (CHARTNS, 'stock-loss-marker'): (),
    # allowed_children
    (CHARTNS, 'stock-range-line'): (),
    (CHARTNS, 'subtitle'): ((TEXTNS, 'p'),),
    (CHARTNS, 'symbol-image'): (),
    (CHARTNS, 'title'): ((TEXTNS, 'p'),),
    (CHARTNS, 'wall'): (),
    (CONFIGNS, 'config-item'): (),
    (CONFIGNS, 'config-item-map-entry'): (
        (CONFIGNS, 'config-item'),
        (CONFIGNS, 'config-item-map-indexed'),
        (CONFIGNS, 'config-item-map-named'),
        (CONFIGNS, 'config-item-set'),
    ),
    (CONFIGNS, 'config-item-map-indexed'): ((CONFIGNS, 'config-item-map-entry'),),
    (CONFIGNS, 'config-item-map-named'): ((CONFIGNS, 'config-item-map-entry'),),
    # allowed_children
    (CONFIGNS, 'config-item-set'): (
        (CONFIGNS, 'config-item'),
        (CONFIGNS, 'config-item-map-indexed'),
        (CONFIGNS, 'config-item-map-named'),
        (CONFIGNS, 'config-item-set'),
    ),
    (MANIFESTNS, 'algorithm'): (),
    (MANIFESTNS, 'encryption-data'): (
        (MANIFESTNS, 'algorithm'),
        (MANIFESTNS, 'key-derivation'),
    ),
    (MANIFESTNS, 'file-entry'): ((MANIFESTNS, 'encryption-data'),),
    (MANIFESTNS, 'key-derivation'): (),
    (MANIFESTNS, 'manifest'): ((MANIFESTNS, 'file-entry'),),
    (NUMBERNS, 'am-pm'): (),
    (NUMBERNS, 'boolean'): (),
    # allowed_children
    (NUMBERNS, 'boolean-style'): (
        (NUMBERNS, 'boolean'),
        (NUMBERNS, 'text'),
        (STYLENS, 'map'),
        (STYLENS, 'text-properties'),
    ),
    (NUMBERNS, 'currency-style'): (
        (NUMBERNS, 'currency-symbol'),
        (NUMBERNS, 'number'),
        (NUMBERNS, 'text'),
        (STYLENS, 'map'),
        (STYLENS, 'text-properties'),
    ),
    (NUMBERNS, 'currency-symbol'): (),
    (NUMBERNS, 'date-style'): (
        (NUMBERNS, 'am-pm'),
        (NUMBERNS, 'day'),
        (NUMBERNS, 'day-of-week'),
        (NUMBERNS, 'era'),
        (NUMBERNS, 'hours'),
        (NUMBERNS, 'minutes'),
        (NUMBERNS, 'month'),
        (NUMBERNS, 'quarter'),
        (NUMBERNS, 'seconds'),
        (NUMBERNS, 'text'),
        (NUMBERNS, 'week-of-year'),
        (NUMBERNS, 'year'),
        (STYLENS, 'map'),
        (STYLENS, 'text-properties'),
    ),
    # allowed_children
    (NUMBERNS, 'day'): (),
    (NUMBERNS, 'day-of-week'): (),
    (NUMBERNS, 'embedded-text'): (),
    (NUMBERNS, 'era'): (),
    (NUMBERNS, 'fraction'): (),
    (NUMBERNS, 'hours'): (),
    (NUMBERNS, 'minutes'): (),
    (NUMBERNS, 'month'): (),
    (NUMBERNS, 'number'): ((NUMBERNS, 'embedded-text'),),
    (NUMBERNS, 'number-style'): (
        (NUMBERNS, 'fraction'),
        (NUMBERNS, 'number'),
        (NUMBERNS, 'scientific-number'),
        (NUMBERNS, 'text'),
        (STYLENS, 'map'),
        (STYLENS, 'text-properties'),
    ),
    # allowed_children
    (NUMBERNS, 'percentage-style'): (
        (NUMBERNS, 'number'),
        (NUMBERNS, 'text'),
        (STYLENS, 'map'),
        (STYLENS, 'text-properties'),
    ),
    (NUMBERNS, 'quarter'): (),
    (NUMBERNS, 'scientific-number'): (),
    (NUMBERNS, 'seconds'): (),
    (NUMBERNS, 'text'): (),
    (NUMBERNS, 'text-content'): (),
    (NUMBERNS, 'text-style'): (
        (NUMBERNS, 'text'),
        (NUMBERNS, 'text-content'),
        (STYLENS, 'map'),
        (STYLENS, 'text-properties'),
    ),
    # allowed_children
    (NUMBERNS, 'time-style'): (
        (NUMBERNS, 'am-pm'),
        (NUMBERNS, 'hours'),
        (NUMBERNS, 'minutes'),
        (NUMBERNS, 'seconds'),
        (NUMBERNS, 'text'),
        (STYLENS, 'map'),
        (STYLENS, 'text-properties'),
    ),
    # allowed_children
    (NUMBERNS, 'week-of-year'): (),
    (NUMBERNS, 'year'): (),
    (DR3DNS, 'cube'): (),
    (DR3DNS, 'extrude'): (),
    (DR3DNS, 'light'): (),
    (DR3DNS, 'rotate'): (),
    (DR3DNS, 'scene'): (
        (DR3DNS, 'cube'),
        (DR3DNS, 'extrude'),
        (DR3DNS, 'light'),
        (DR3DNS, 'rotate'),
        (DR3DNS, 'scene'),
        (DR3DNS, 'sphere'),
        (SVGNS, 'title'),
        (SVGNS, 'desc'),
    ),
    (DR3DNS, 'sphere'): (),
    (DRAWNS, 'a'): ((DRAWNS, 'frame'),),
    # allowed_children
    (DRAWNS, 'applet'): ((DRAWNS, 'param'),),
    (DRAWNS, 'area-circle'): (
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
    ),
    (DRAWNS, 'area-polygon'): (
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
    ),
    (DRAWNS, 'area-rectangle'): (
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
    ),
    (DRAWNS, 'caption'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    (DRAWNS, 'circle'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    # allowed_children
    (DRAWNS, 'connector'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    (DRAWNS, 'contour-path'): (),
    (DRAWNS, 'contour-polygon'): (),
    (DRAWNS, 'control'): (
        (DRAWNS, 'glue-point'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
    ),
    (DRAWNS, 'custom-shape'): (
        (DRAWNS, 'enhanced-geometry'),
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    # allowed_children
    (DRAWNS, 'ellipse'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    (DRAWNS, 'enhanced-geometry'): (
        (DRAWNS, 'equation'),
        (DRAWNS, 'handle'),
    ),
    (DRAWNS, 'equation'): (),
    # allowed_children
    (DRAWNS, 'fill-image'): (),
    (DRAWNS, 'floating-frame'): (),
    (DRAWNS, 'frame'): (
        (DRAWNS, 'applet'),
        (DRAWNS, 'contour-path'),
        (DRAWNS, 'contour-polygon'),
        (DRAWNS, 'floating-frame'),
        (DRAWNS, 'glue-point'),
        (DRAWNS, 'image'),
        (DRAWNS, 'image-map'),
        (DRAWNS, 'object'),
        (DRAWNS, 'object-ole'),
        (DRAWNS, 'plugin'),
        (DRAWNS, 'text-box'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
    ),
    # allowed_children
    (DRAWNS, 'g'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'glue-point'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (OFFICENS, 'event-listeners'),
    ),
    (DRAWNS, 'glue-point'): (),
    (DRAWNS, 'gradient'): (),
    (DRAWNS, 'handle'): (),
    (DRAWNS, 'hatch'): (),
    # allowed_children
    (DRAWNS, 'image'): (
        (OFFICENS, 'binary-data'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    (DRAWNS, 'image-map'): (
        (DRAWNS, 'area-circle'),
        (DRAWNS, 'area-polygon'),
        (DRAWNS, 'area-rectangle'),
    ),
    (DRAWNS, 'layer'): (
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
    ),
    (DRAWNS, 'layer-set'): ((DRAWNS, 'layer'),),
    (DRAWNS, 'line'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    (DRAWNS, 'marker'): (),
    (DRAWNS, 'measure'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
        (SVGNS, 'title'),
        (SVGNS, 'desc'),
    ),
    (DRAWNS, 'object'): (
        (MATHNS, 'math'),
        (OFFICENS, 'document'),
    ),
    # allowed_children
    (DRAWNS, 'object-ole'): ((OFFICENS, 'binary-data'),),
    (DRAWNS, 'opacity'): (),
    (DRAWNS, 'page'): (
        (ANIMNS, 'animate'),
        (ANIMNS, 'animateColor'),
        (ANIMNS, 'animateMotion'),
        (ANIMNS, 'animateTransform'),
        (ANIMNS, 'audio'),
        (ANIMNS, 'command'),
        (ANIMNS, 'iterate'),
        (ANIMNS, 'par'),
        (ANIMNS, 'seq'),
        (ANIMNS, 'set'),
        (ANIMNS, 'transitionFilter'),
        (DR3DNS, 'scene'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'forms'),
        (PRESENTATIONNS, 'animations'),
        (PRESENTATIONNS, 'notes'),
    ),
    # allowed_children
    (DRAWNS, 'page-thumbnail'): (
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
    ),
    (DRAWNS, 'param'): (),
    (DRAWNS, 'path'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    (DRAWNS, 'plugin'): ((DRAWNS, 'param'),),
    (DRAWNS, 'polygon'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'title'),
        (SVGNS, 'desc'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    (DRAWNS, 'polyline'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    # allowed_children
    (DRAWNS, 'rect'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    (DRAWNS, 'regular-polygon'): (
        (DRAWNS, 'glue-point'),
        (OFFICENS, 'event-listeners'),
        (SVGNS, 'desc'),
        (SVGNS, 'title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    (DRAWNS, 'stroke-dash'): (),
    (DRAWNS, 'text-box'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'list'),
        (TEXTNS, 'numbered-paragraph'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'user-index'),
    ),
    # allowed_children
    (FORMNS, 'button'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'checkbox'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'column'): (
        (FORMNS, 'checkbox'),
        (FORMNS, 'combobox'),
        (FORMNS, 'date'),
        (FORMNS, 'formatted-text'),
        (FORMNS, 'listbox'),
        (FORMNS, 'number'),
        (FORMNS, 'text'),
        (FORMNS, 'textarea'),
    ),
    (FORMNS, 'combobox'): (
        (FORMNS, 'item'),
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'connection-resource'): (),
    (FORMNS, 'date'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'file'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'fixed-text'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    # allowed_children
    (FORMNS, 'form'): (
        (FORMNS, 'button'),
        (FORMNS, 'checkbox'),
        (FORMNS, 'combobox'),
        (FORMNS, 'connection-resource'),
        (FORMNS, 'date'),
        (FORMNS, 'file'),
        (FORMNS, 'fixed-text'),
        (FORMNS, 'form'),
        (FORMNS, 'formatted-text'),
        (FORMNS, 'frame'),
        (FORMNS, 'generic-control'),
        (FORMNS, 'grid'),
        (FORMNS, 'hidden'),
        (FORMNS, 'image'),
        (FORMNS, 'image-frame'),
        (FORMNS, 'listbox'),
        (FORMNS, 'number'),
        (FORMNS, 'password'),
        (FORMNS, 'properties'),
        (FORMNS, 'radio'),
        (FORMNS, 'text'),
        (FORMNS, 'textarea'),
        (FORMNS, 'time'),
        (FORMNS, 'value-range'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'formatted-text'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'frame'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'generic-control'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'grid'): (
        (FORMNS, 'column'),
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'hidden'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'image'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    # allowed_children
    (FORMNS, 'image-frame'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'item'): (),
    (FORMNS, 'list-property'): (
        (FORMNS, 'list-value'),
        (FORMNS, 'list-value'),
        (FORMNS, 'list-value'),
        (FORMNS, 'list-value'),
        (FORMNS, 'list-value'),
        (FORMNS, 'list-value'),
        (FORMNS, 'list-value'),
    ),
    (FORMNS, 'list-value'): (),
    (FORMNS, 'listbox'): (
        (FORMNS, 'option'),
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'number'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'option'): (),
    (FORMNS, 'password'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'properties'): (
        (FORMNS, 'list-property'),
        (FORMNS, 'property'),
    ),
    (FORMNS, 'property'): (),
    (FORMNS, 'radio'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'text'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'textarea'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
        (TEXTNS, 'p'),
    ),
    (FORMNS, 'time'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (FORMNS, 'value-range'): (
        (FORMNS, 'properties'),
        (OFFICENS, 'event-listeners'),
    ),
    (METANS, 'auto-reload'): (),
    (METANS, 'creation-date'): (),
    (METANS, 'date-string'): (),
    (METANS, 'document-statistic'): (),
    (METANS, 'editing-cycles'): (),
    (METANS, 'editing-duration'): (),
    (METANS, 'generator'): (),
    (METANS, 'hyperlink-behaviour'): (),
    (METANS, 'initial-creator'): (),
    (METANS, 'keyword'): (),
    (METANS, 'print-date'): (),
    (METANS, 'printed-by'): (),
    (METANS, 'template'): (),
    (METANS, 'user-defined'): (),
    # allowed_children
    (OFFICENS, 'annotation'): (
        (DCNS, 'creator'),
        (DCNS, 'date'),
        (METANS, 'date-string'),
        (TEXTNS, 'list'),
        (TEXTNS, 'p'),
    ),
    (OFFICENS, 'automatic-styles'): (
        (NUMBERNS, 'boolean-style'),
        (NUMBERNS, 'currency-style'),
        (NUMBERNS, 'date-style'),
        (NUMBERNS, 'number-style'),
        (NUMBERNS, 'percentage-style'),
        (NUMBERNS, 'text-style'),
        (NUMBERNS, 'time-style'),
        (STYLENS, 'page-layout'),
        (STYLENS, 'style'),
        (TEXTNS, 'list-style'),
    ),
    (OFFICENS, 'binary-data'): (),
    (OFFICENS, 'body'): (
        (OFFICENS, 'chart'),
        (OFFICENS, 'drawing'),
        (OFFICENS, 'image'),
        (OFFICENS, 'presentation'),
        (OFFICENS, 'spreadsheet'),
        (OFFICENS, 'text'),
    ),
    (OFFICENS, 'change-info'): (
        (DCNS, 'creator'),
        (DCNS, 'date'),
        (TEXTNS, 'p'),
    ),
    (OFFICENS, 'chart'): (
        (CHARTNS, 'chart'),
        (TABLENS, 'calculation-settings'),
        (TABLENS, 'consolidation'),
        (TABLENS, 'content-validations'),
        (TABLENS, 'data-pilot-tables'),
        (TABLENS, 'database-ranges'),
        (TABLENS, 'dde-links'),
        (TABLENS, 'label-ranges'),
        (TABLENS, 'named-expressions'),
        (TEXTNS, 'alphabetical-index-auto-mark-file'),
        (TEXTNS, 'dde-connection-decls'),
        (TEXTNS, 'sequence-decls'),
        (TEXTNS, 'user-field-decls'),
        (TEXTNS, 'variable-decls'),
    ),
    (OFFICENS, 'dde-source'): (),
    (OFFICENS, 'document'): (
        (OFFICENS, 'automatic-styles'),
        (OFFICENS, 'body'),
        (OFFICENS, 'font-face-decls'),
        (OFFICENS, 'master-styles'),
        (OFFICENS, 'meta'),
        (OFFICENS, 'scripts'),
        (OFFICENS, 'settings'),
        (OFFICENS, 'styles'),
    ),
    (OFFICENS, 'document-content'): (
        (OFFICENS, 'automatic-styles'),
        (OFFICENS, 'body'),
        (OFFICENS, 'font-face-decls'),
        (OFFICENS, 'scripts'),
    ),
    (OFFICENS, 'document-meta'): ((OFFICENS, 'meta'),),
    (OFFICENS, 'document-settings'): ((OFFICENS, 'settings'),),
    (OFFICENS, 'document-styles'): (
        (OFFICENS, 'automatic-styles'),
        (OFFICENS, 'font-face-decls'),
        (OFFICENS, 'master-styles'),
        (OFFICENS, 'styles'),
    ),
    (OFFICENS, 'drawing'): (
        (DRAWNS, 'page'),
        (TABLENS, 'calculation-settings'),
        (TABLENS, 'consolidation'),
        (TABLENS, 'content-validations'),
        (TABLENS, 'data-pilot-tables'),
        (TABLENS, 'database-ranges'),
        (TABLENS, 'dde-links'),
        (TABLENS, 'label-ranges'),
        (TABLENS, 'named-expressions'),
        (TEXTNS, 'alphabetical-index-auto-mark-file'),
        (TEXTNS, 'dde-connection-decls'),
        (TEXTNS, 'sequence-decls'),
        (TEXTNS, 'user-field-decls'),
        (TEXTNS, 'variable-decls'),
    ),
    (OFFICENS, 'event-listeners'): (
        (PRESENTATIONNS, 'event-listener'),
        (SCRIPTNS, 'event-listener'),
    ),
    (OFFICENS, 'font-face-decls'): ((STYLENS, 'font-face'),),
    # allowed_children
    (OFFICENS, 'forms'): (
        (XFORMSNS, 'model'),
        (FORMNS, 'form'),
    ),
    (OFFICENS, 'image'): ((DRAWNS, 'frame'),),
    (OFFICENS, 'master-styles'): (
        (DRAWNS, 'layer-set'),
        (STYLENS, 'handout-master'),
        (STYLENS, 'master-page'),
        (TABLENS, 'table-template'),
    ),
    (OFFICENS, 'meta'): (
        (DCNS, 'creator'),
        (DCNS, 'date'),
        (DCNS, 'description'),
        (DCNS, 'language'),
        (DCNS, 'subject'),
        (DCNS, '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, 'auto-reload'),
        (METANS, 'creation-date'),
        (METANS, 'document-statistic'),
        (METANS, 'editing-cycles'),
        (METANS, 'editing-duration'),
        (METANS, 'generator'),
        (METANS, 'hyperlink-behaviour'),
        (METANS, 'initial-creator'),
        (METANS, 'keyword'),
        (METANS, 'print-date'),
        (METANS, 'printed-by'),
        (METANS, 'template'),
        (METANS, 'user-defined'),
    ),
    (OFFICENS, 'presentation'): (
        (DRAWNS, 'page'),
        (PRESENTATIONNS, 'date-time-decl'),
        (PRESENTATIONNS, 'footer-decl'),
        (PRESENTATIONNS, 'header-decl'),
        (PRESENTATIONNS, 'settings'),
        (TABLENS, 'calculation-settings'),
        (TABLENS, 'consolidation'),
        (TABLENS, 'content-validations'),
        (TABLENS, 'data-pilot-tables'),
        (TABLENS, 'database-ranges'),
        (TABLENS, 'dde-links'),
        (TABLENS, 'label-ranges'),
        (TABLENS, 'named-expressions'),
        (TEXTNS, 'alphabetical-index-auto-mark-file'),
        (TEXTNS, 'dde-connection-decls'),
        (TEXTNS, 'sequence-decls'),
        (TEXTNS, 'user-field-decls'),
        (TEXTNS, 'variable-decls'),
    ),
    # allowed_children
    (OFFICENS, 'script'): None,
    (OFFICENS, 'scripts'): (
        (OFFICENS, 'event-listeners'),
        (OFFICENS, 'script'),
    ),
    (OFFICENS, 'settings'): ((CONFIGNS, 'config-item-set'),),
    (OFFICENS, 'spreadsheet'): (
        (TABLENS, 'calculation-settings'),
        (TABLENS, 'consolidation'),
        (TABLENS, 'content-validations'),
        (TABLENS, 'data-pilot-tables'),
        (TABLENS, 'database-ranges'),
        (TABLENS, 'dde-links'),
        (TABLENS, 'label-ranges'),
        (TABLENS, 'named-expressions'),
        (TABLENS, 'table'),
        (TABLENS, 'tracked-changes'),
        (TEXTNS, 'alphabetical-index-auto-mark-file'),
        (TEXTNS, 'dde-connection-decls'),
        (TEXTNS, 'sequence-decls'),
        (TEXTNS, 'user-field-decls'),
        (TEXTNS, 'variable-decls'),
    ),
    (OFFICENS, 'styles'): (
        (NUMBERNS, 'boolean-style'),
        (NUMBERNS, 'currency-style'),
        (NUMBERNS, 'date-style'),
        (NUMBERNS, 'number-style'),
        (NUMBERNS, 'percentage-style'),
        (NUMBERNS, 'text-style'),
        (NUMBERNS, 'time-style'),
        (DRAWNS, 'fill-image'),
        (DRAWNS, 'gradient'),
        (DRAWNS, 'hatch'),
        (DRAWNS, 'marker'),
        (DRAWNS, 'opacity'),
        (DRAWNS, 'stroke-dash'),
        (STYLENS, 'default-style'),
        (STYLENS, 'presentation-page-layout'),
        (STYLENS, 'style'),
        (SVGNS, 'linearGradient'),
        (SVGNS, 'radialGradient'),
        (TEXTNS, 'bibliography-configuration'),
        (TEXTNS, 'linenumbering-configuration'),
        (TEXTNS, 'list-style'),
        (TEXTNS, 'notes-configuration'),
        (TEXTNS, 'outline-style'),
    ),
    (OFFICENS, 'text'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'forms'),
        (TABLENS, 'calculation-settings'),
        (TABLENS, 'consolidation'),
        (TABLENS, 'content-validations'),
        (TABLENS, 'data-pilot-tables'),
        (TABLENS, 'database-ranges'),
        (TABLENS, 'dde-links'),
        (TABLENS, 'label-ranges'),
        (TABLENS, 'named-expressions'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'alphabetical-index-auto-mark-file'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'dde-connection-decls'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'list'),
        (TEXTNS, 'numbered-paragraph'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'page-sequence'),
        (TEXTNS, 'section'),
        (TEXTNS, 'sequence-decls'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'tracked-changes'),
        (TEXTNS, 'user-field-decls'),
        (TEXTNS, 'user-index'),
        (TEXTNS, 'variable-decls'),
    ),
    (PRESENTATIONNS, 'animation-group'): (
        (PRESENTATIONNS, 'dim'),
        (PRESENTATIONNS, 'hide-shape'),
        (PRESENTATIONNS, 'hide-text'),
        (PRESENTATIONNS, 'play'),
        (PRESENTATIONNS, 'show-shape'),
        (PRESENTATIONNS, 'show-text'),
    ),
    (PRESENTATIONNS, 'animations'): (
        (PRESENTATIONNS, 'animation-group'),
        (PRESENTATIONNS, 'dim'),
        (PRESENTATIONNS, 'hide-shape'),
        (PRESENTATIONNS, 'hide-text'),
        (PRESENTATIONNS, 'play'),
        (PRESENTATIONNS, 'show-shape'),
        (PRESENTATIONNS, 'show-text'),
    ),
    (PRESENTATIONNS, 'date-time'): (),
    (PRESENTATIONNS, 'date-time-decl'): (),
    (PRESENTATIONNS, 'dim'): ((PRESENTATIONNS, 'sound'),),
    (PRESENTATIONNS, 'event-listener'): ((PRESENTATIONNS, 'sound'),),
    (PRESENTATIONNS, 'footer'): (),
    (PRESENTATIONNS, 'footer-decl'): (),
    (PRESENTATIONNS, 'header'): (),
    (PRESENTATIONNS, 'header-decl'): (),
    (PRESENTATIONNS, 'hide-shape'): ((PRESENTATIONNS, 'sound'),),
    (PRESENTATIONNS, 'hide-text'): ((PRESENTATIONNS, 'sound'),),
    # allowed_children
    (PRESENTATIONNS, 'notes'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'forms'),
    ),
    (PRESENTATIONNS, 'placeholder'): (),
    (PRESENTATIONNS, 'play'): (),
    (PRESENTATIONNS, 'settings'): ((PRESENTATIONNS, 'show'),),
    (PRESENTATIONNS, 'show'): (),
    (PRESENTATIONNS, 'show-shape'): ((PRESENTATIONNS, 'sound'),),
    (PRESENTATIONNS, 'show-text'): ((PRESENTATIONNS, 'sound'),),
    (PRESENTATIONNS, 'sound'): (),
    (SCRIPTNS, 'event-listener'): (),
    (STYLENS, 'background-image'): ((OFFICENS, 'binary-data'),),
    (STYLENS, 'chart-properties'): ((CHARTNS, 'symbol-image'),),
    (STYLENS, 'column'): (),
    (STYLENS, 'column-sep'): (),
    (STYLENS, 'columns'): (
        (STYLENS, 'column'),
        (STYLENS, 'column-sep'),
    ),
    (STYLENS, 'default-style'): (
        (STYLENS, 'chart-properties'),
        (STYLENS, 'drawing-page-properties'),
        (STYLENS, 'graphic-properties'),
        (STYLENS, 'paragraph-properties'),
        (STYLENS, 'ruby-properties'),
        (STYLENS, 'section-properties'),
        (STYLENS, 'table-cell-properties'),
        (STYLENS, 'table-column-properties'),
        (STYLENS, 'table-properties'),
        (STYLENS, 'table-row-properties'),
        (STYLENS, 'text-properties'),
    ),
    (STYLENS, 'drawing-page-properties'): ((PRESENTATIONNS, 'sound'),),
    (STYLENS, 'drop-cap'): (),
    (STYLENS, 'font-face'): (
        (SVGNS, 'definition-src'),
        (SVGNS, 'font-face-src'),
    ),
    (STYLENS, 'footer'): (
        (STYLENS, 'region-center'),
        (STYLENS, 'region-left'),
        (STYLENS, 'region-right'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'alphabetical-index-auto-mark-file'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'dde-connection-decls'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'index-title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'sequence-decls'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'tracked-changes'),
        (TEXTNS, 'user-field-decls'),
        (TEXTNS, 'user-index'),
        (TEXTNS, 'variable-decls'),
    ),
    # allowed_children
    (STYLENS, 'footer-left'): (
        (STYLENS, 'region-center'),
        (STYLENS, 'region-left'),
        (STYLENS, 'region-right'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'alphabetical-index-auto-mark-file'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'dde-connection-decls'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'index-title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'sequence-decls'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'tracked-changes'),
        (TEXTNS, 'user-field-decls'),
        (TEXTNS, 'user-index'),
        (TEXTNS, 'variable-decls'),
    ),
    (STYLENS, 'footer-style'): ((STYLENS, 'header-footer-properties'),),
    (STYLENS, 'footnote-sep'): (),
    (STYLENS, 'graphic-properties'): (
        (STYLENS, 'background-image'),
        (STYLENS, 'columns'),
        (TEXTNS, 'list-style'),
    ),
    # allowed_children
    (STYLENS, 'handout-master'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
    ),
    (STYLENS, 'header'): (
        (STYLENS, 'region-center'),
        (STYLENS, 'region-left'),
        (STYLENS, 'region-right'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'alphabetical-index-auto-mark-file'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'dde-connection-decls'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'index-title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'sequence-decls'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'tracked-changes'),
        (TEXTNS, 'user-field-decls'),
        (TEXTNS, 'user-index'),
        (TEXTNS, 'variable-decls'),
    ),
    # allowed_children
    (STYLENS, 'header-footer-properties'): ((STYLENS, 'background-image'),),
    (STYLENS, 'header-left'): (
        (STYLENS, 'region-center'),
        (STYLENS, 'region-left'),
        (STYLENS, 'region-right'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'alphabetical-index-auto-mark-file'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'dde-connection-decls'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'index-title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'sequence-decls'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'tracked-changes'),
        (TEXTNS, 'user-field-decls'),
        (TEXTNS, 'user-index'),
        (TEXTNS, 'variable-decls'),
    ),
    (STYLENS, 'header-style'): ((STYLENS, 'header-footer-properties'),),
    (STYLENS, 'list-level-properties'): (),
    (STYLENS, 'map'): (),
    (STYLENS, 'master-page'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'forms'),
        (PRESENTATIONNS, 'notes'),
        (STYLENS, 'footer'),
        (STYLENS, 'footer-left'),
        (STYLENS, 'header'),
        (STYLENS, 'header-left'),
        (STYLENS, 'style'),
    ),
    (STYLENS, 'page-layout'): (
        (STYLENS, 'footer-style'),
        (STYLENS, 'header-style'),
        (STYLENS, 'page-layout-properties'),
    ),
    (STYLENS, 'page-layout-properties'): (
        (STYLENS, 'background-image'),
        (STYLENS, 'columns'),
        (STYLENS, 'footnote-sep'),
    ),
    # allowed_children
    (STYLENS, 'paragraph-properties'): (
        (STYLENS, 'background-image'),
        (STYLENS, 'drop-cap'),
        (STYLENS, 'tab-stops'),
    ),
    (STYLENS, 'presentation-page-layout'): ((PRESENTATIONNS, 'placeholder'),),
    (STYLENS, 'region-center'): ((TEXTNS, 'p'),),
    (STYLENS, 'region-left'): ((TEXTNS, 'p'),),
    (STYLENS, 'region-right'): ((TEXTNS, 'p'),),
    (STYLENS, 'ruby-properties'): (),
    (STYLENS, 'section-properties'): (
        (STYLENS, 'background-image'),
        (STYLENS, 'columns'),
        (TEXTNS, 'notes-configuration'),
    ),
    (STYLENS, 'style'): (
        (STYLENS, 'chart-properties'),
        (STYLENS, 'drawing-page-properties'),
        (STYLENS, 'graphic-properties'),
        (STYLENS, 'map'),
        (STYLENS, 'paragraph-properties'),
        (STYLENS, 'ruby-properties'),
        (STYLENS, 'section-properties'),
        (STYLENS, 'table-cell-properties'),
        (STYLENS, 'table-column-properties'),
        (STYLENS, 'table-properties'),
        (STYLENS, 'table-row-properties'),
        (STYLENS, 'text-properties'),
    ),
    (STYLENS, 'tab-stop'): (),
    (STYLENS, 'tab-stops'): ((STYLENS, 'tab-stop'),),
    # allowed_children
    (STYLENS, 'table-cell-properties'): ((STYLENS, 'background-image'),),
    (STYLENS, 'table-column-properties'): (),
    (STYLENS, 'table-properties'): ((STYLENS, 'background-image'),),
    (STYLENS, 'table-row-properties'): ((STYLENS, 'background-image'),),
    (STYLENS, 'text-properties'): (),
    (SVGNS, 'definition-src'): (),
    (SVGNS, 'desc'): (),
    (SVGNS, 'font-face-format'): (),
    (SVGNS, 'font-face-name'): (),
    (SVGNS, 'font-face-src'): (
        (SVGNS, 'font-face-name'),
        (SVGNS, 'font-face-uri'),
    ),
    (SVGNS, 'font-face-uri'): ((SVGNS, 'font-face-format'),),
    (SVGNS, 'linearGradient'): ((SVGNS, 'stop'),),
    (SVGNS, 'radialGradient'): ((SVGNS, 'stop'),),
    (SVGNS, 'stop'): (),
    (SVGNS, 'title'): (),
    (TABLENS, 'body'): (),
    (TABLENS, 'calculation-settings'): (
        (TABLENS, 'iteration'),
        (TABLENS, 'null-date'),
    ),
    # allowed_children
    (TABLENS, 'cell-address'): (),
    (TABLENS, 'cell-content-change'): (
        (OFFICENS, 'change-info'),
        (TABLENS, 'cell-address'),
        (TABLENS, 'deletions'),
        (TABLENS, 'dependencies'),
        (TABLENS, 'previous'),
    ),
    (TABLENS, 'cell-content-deletion'): (
        (TABLENS, 'cell-address'),
        (TABLENS, 'change-track-table-cell'),
    ),
    (TABLENS, 'cell-range-source'): (),
    (TABLENS, 'change-deletion'): (),
    (TABLENS, 'change-track-table-cell'): ((TEXTNS, 'p'),),
    (TABLENS, 'consolidation'): (),
    (TABLENS, 'content-validation'): (
        (OFFICENS, 'event-listeners'),
        (TABLENS, 'error-macro'),
        (TABLENS, 'error-message'),
        (TABLENS, 'help-message'),
    ),
    # allowed_children
    (TABLENS, 'content-validations'): ((TABLENS, 'content-validation'),),
    (TABLENS, 'covered-table-cell'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'annotation'),
        (TABLENS, 'cell-range-source'),
        (TABLENS, 'detective'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'list'),
        (TEXTNS, 'numbered-paragraph'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'user-index'),
    ),
    # allowed_children
    (TABLENS, 'cut-offs'): (
        (TABLENS, 'insertion-cut-off'),
        (TABLENS, 'movement-cut-off'),
    ),
    (TABLENS, 'data-pilot-display-info'): (),
    (TABLENS, 'data-pilot-field'): (
        (TABLENS, 'data-pilot-field-reference'),
        (TABLENS, 'data-pilot-groups'),
        (TABLENS, 'data-pilot-level'),
    ),
    (TABLENS, 'data-pilot-field-reference'): (),
    (TABLENS, 'data-pilot-group'): ((TABLENS, 'data-pilot-group-member'),),
    (TABLENS, 'data-pilot-group-member'): (),
    (TABLENS, 'data-pilot-groups'): ((TABLENS, 'data-pilot-group'),),
    (TABLENS, 'data-pilot-layout-info'): (),
    (TABLENS, 'data-pilot-level'): (
        (TABLENS, 'data-pilot-display-info'),
        (TABLENS, 'data-pilot-layout-info'),
        (TABLENS, 'data-pilot-members'),
        (TABLENS, 'data-pilot-sort-info'),
        (TABLENS, 'data-pilot-subtotals'),
    ),
    (TABLENS, 'data-pilot-member'): (),
    (TABLENS, 'data-pilot-members'): ((TABLENS, 'data-pilot-member'),),
    (TABLENS, 'data-pilot-sort-info'): (),
    (TABLENS, 'data-pilot-subtotal'): (),
    (TABLENS, 'data-pilot-subtotals'): ((TABLENS, 'data-pilot-subtotal'),),
    # allowed_children
    (TABLENS, 'data-pilot-table'): (
        (TABLENS, 'data-pilot-field'),
        (TABLENS, 'database-source-query'),
        (TABLENS, 'database-source-sql'),
        (TABLENS, 'database-source-table'),
        (TABLENS, 'source-cell-range'),
        (TABLENS, 'source-service'),
    ),
    (TABLENS, 'data-pilot-tables'): ((TABLENS, 'data-pilot-table'),),
    (TABLENS, 'database-range'): (
        (TABLENS, 'database-source-query'),
        (TABLENS, 'database-source-sql'),
        (TABLENS, 'database-source-table'),
        (TABLENS, 'filter'),
        (TABLENS, 'sort'),
        (TABLENS, 'subtotal-rules'),
    ),
    (TABLENS, 'database-ranges'): ((TABLENS, 'database-range'),),
    (TABLENS, 'database-source-query'): (),
    (TABLENS, 'database-source-sql'): (),
    (TABLENS, 'database-source-table'): (),
    # allowed_children
    (TABLENS, 'dde-link'): (
        (OFFICENS, 'dde-source'),
        (TABLENS, 'table'),
    ),
    (TABLENS, 'dde-links'): ((TABLENS, 'dde-link'),),
    (TABLENS, 'deletion'): (
        (OFFICENS, 'change-info'),
        (TABLENS, 'cut-offs'),
        (TABLENS, 'deletions'),
        (TABLENS, 'dependencies'),
    ),
    (TABLENS, 'deletions'): (
        (TABLENS, 'cell-content-deletion'),
        (TABLENS, 'change-deletion'),
    ),
    (TABLENS, 'dependencies'): ((TABLENS, 'dependency'),),
    (TABLENS, 'dependency'): (),
    (TABLENS, 'detective'): (
        (TABLENS, 'highlighted-range'),
        (TABLENS, 'operation'),
    ),
    # allowed_children
    (TABLENS, 'error-macro'): (),
    (TABLENS, 'error-message'): ((TEXTNS, 'p'),),
    (TABLENS, 'even-columns'): (),
    (TABLENS, 'even-rows'): (),
    (TABLENS, 'filter'): (
        (TABLENS, 'filter-and'),
        (TABLENS, 'filter-condition'),
        (TABLENS, 'filter-or'),
    ),
    (TABLENS, 'filter-and'): (
        (TABLENS, 'filter-condition'),
        (TABLENS, 'filter-or'),
    ),
    (TABLENS, 'filter-condition'): (),
    (TABLENS, 'filter-or'): (
        (TABLENS, 'filter-and'),
        (TABLENS, 'filter-condition'),
    ),
    # allowed_children
    (TABLENS, 'first-column'): (),
    (TABLENS, 'first-row'): (),
    (TABLENS, 'help-message'): ((TEXTNS, 'p'),),
    (TABLENS, 'highlighted-range'): (),
    (TABLENS, 'insertion'): (
        (OFFICENS, 'change-info'),
        (TABLENS, 'deletions'),
        (TABLENS, 'dependencies'),
    ),
    (TABLENS, 'insertion-cut-off'): (),
    (TABLENS, 'iteration'): (),
    (TABLENS, 'label-range'): (),
    (TABLENS, 'label-ranges'): ((TABLENS, 'label-range'),),
    (TABLENS, 'last-column'): (),
    (TABLENS, 'last-row'): (),
    (TABLENS, 'movement'): (
        (OFFICENS, 'change-info'),
        (TABLENS, 'deletions'),
        (TABLENS, 'dependencies'),
        (TABLENS, 'source-range-address'),
        (TABLENS, 'target-range-address'),
    ),
    (TABLENS, 'movement-cut-off'): (),
    (TABLENS, 'named-expression'): (),
    (TABLENS, 'named-expressions'): (
        (TABLENS, 'named-expression'),
        (TABLENS, 'named-range'),
    ),
    # allowed_children
    (TABLENS, 'named-range'): (),
    (TABLENS, 'null-date'): (),
    (TABLENS, 'odd-columns'): (),
    (TABLENS, 'odd-rows'): (),
    (TABLENS, 'operation'): (),
    (TABLENS, 'previous'): ((TABLENS, 'change-track-table-cell'),),
    (TABLENS, 'scenario'): (),
    (TABLENS, 'shapes'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
    ),
    # allowed_children
    (TABLENS, 'sort'): ((TABLENS, 'sort-by'),),
    (TABLENS, 'sort-by'): (),
    (TABLENS, 'sort-groups'): (),
    (TABLENS, 'source-cell-range'): ((TABLENS, 'filter'),),
    (TABLENS, 'source-range-address'): (),
    (TABLENS, 'source-service'): (),
    (TABLENS, 'subtotal-field'): (),
    (TABLENS, 'subtotal-rule'): ((TABLENS, 'subtotal-field'),),
    (TABLENS, 'subtotal-rules'): (
        (TABLENS, 'sort-groups'),
        (TABLENS, 'subtotal-rule'),
    ),
    # allowed_children
    (TABLENS, 'table'): (
        (OFFICENS, 'dde-source'),
        (OFFICENS, 'forms'),
        (TEXTNS, 'soft-page-break'),
        (TABLENS, 'scenario'),
        (TABLENS, 'shapes'),
        (TABLENS, 'table-column'),
        (TABLENS, 'table-column-group'),
        (TABLENS, 'table-columns'),
        (TABLENS, 'table-header-columns'),
        (TABLENS, 'table-header-rows'),
        (TABLENS, 'table-row'),
        (TABLENS, 'table-row-group'),
        (TABLENS, 'table-rows'),
        (TABLENS, 'table-source'),
    ),
    (TABLENS, 'table-cell'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'annotation'),
        (TABLENS, 'cell-range-source'),
        (TABLENS, 'detective'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'list'),
        (TEXTNS, 'numbered-paragraph'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'user-index'),
    ),
    # allowed_children
    (TABLENS, 'table-column'): (),
    (TABLENS, 'table-column-group'): (
        (TABLENS, 'table-column'),
        (TABLENS, 'table-column-group'),
        (TABLENS, 'table-columns'),
        (TABLENS, 'table-header-columns'),
    ),
    (TABLENS, 'table-columns'): ((TABLENS, 'table-column'),),
    (TABLENS, 'table-header-columns'): ((TABLENS, 'table-column'),),
    (TABLENS, 'table-header-rows'): (
        (TABLENS, 'table-row'),
        (TEXTNS, 'soft-page-break'),
    ),
    (TABLENS, 'table-row'): (
        (TABLENS, 'covered-table-cell'),
        (TABLENS, 'table-cell'),
    ),
    (TABLENS, 'table-row-group'): (
        (TABLENS, 'table-header-rows'),
        (TABLENS, 'table-row'),
        (TABLENS, 'table-row-group'),
        (TABLENS, 'table-rows'),
        (TEXTNS, 'soft-page-break'),
    ),
    (TABLENS, 'table-rows'): (
        (TABLENS, 'table-row'),
        (TEXTNS, 'soft-page-break'),
    ),
    # allowed_children
    (TABLENS, 'table-source'): (),
    (TABLENS, 'table-template'): (
        (TABLENS, 'body'),
        (TABLENS, 'even-columns'),
        (TABLENS, 'even-rows'),
        (TABLENS, 'first-column'),
        (TABLENS, 'first-row'),
        (TABLENS, 'last-column'),
        (TABLENS, 'last-row'),
        (TABLENS, 'odd-columns'),
        (TABLENS, 'odd-rows'),
    ),
    (TABLENS, 'target-range-address'): (),
    (TABLENS, 'tracked-changes'): (
        (TABLENS, 'cell-content-change'),
        (TABLENS, 'deletion'),
        (TABLENS, 'insertion'),
        (TABLENS, 'movement'),
    ),
    # allowed_children
    (TEXTNS, 'a'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'annotation'),
        (OFFICENS, 'event-listeners'),
        (PRESENTATIONNS, 'date-time'),
        (PRESENTATIONNS, 'footer'),
        (PRESENTATIONNS, 'header'),
        (TEXTNS, 'a'),
        (TEXTNS, 'alphabetical-index-mark'),
        (TEXTNS, 'alphabetical-index-mark-end'),
        (TEXTNS, 'alphabetical-index-mark-start'),
        (TEXTNS, 'author-initials'),
        (TEXTNS, 'author-name'),
        (TEXTNS, 'bibliography-mark'),
        (TEXTNS, 'bookmark'),
        (TEXTNS, 'bookmark-end'),
        (TEXTNS, 'bookmark-ref'),
        (TEXTNS, 'bookmark-start'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'chapter'),
        (TEXTNS, 'conditional-text'),
        (TEXTNS, 'creation-date'),
        (TEXTNS, 'creation-time'),
        (TEXTNS, 'creator'),
        (TEXTNS, 'database-display'),
        (TEXTNS, 'database-name'),
        (TEXTNS, 'database-next'),
        (TEXTNS, 'database-row-number'),
        (TEXTNS, 'database-row-select'),
        (TEXTNS, 'date'),
        (TEXTNS, 'dde-connection'),
        (TEXTNS, 'description'),
        (TEXTNS, 'editing-cycles'),
        (TEXTNS, 'editing-duration'),
        (TEXTNS, 'execute-macro'),
        (TEXTNS, 'expression'),
        (TEXTNS, 'file-name'),
        (TEXTNS, 'hidden-paragraph'),
        (TEXTNS, 'hidden-text'),
        (TEXTNS, 'initial-creator'),
        (TEXTNS, 'keywords'),
        (TEXTNS, 'line-break'),
        (TEXTNS, 'measure'),
        (TEXTNS, 'modification-date'),
        (TEXTNS, 'modification-time'),
        (TEXTNS, 'note'),
        (TEXTNS, 'note-ref'),
        (TEXTNS, 'page-count'),
        (TEXTNS, 'paragraph-count'),
        (TEXTNS, 'word-count'),
        (TEXTNS, 'character-count'),
        (TEXTNS, 'table-count'),
        (TEXTNS, 'image-count'),
        (TEXTNS, 'object-count'),
        (TEXTNS, 'page-continuation'),
        (TEXTNS, 'page-number'),
        (TEXTNS, 'page-variable-get'),
        (TEXTNS, 'page-variable-set'),
        (TEXTNS, 'placeholder'),
        (TEXTNS, 'print-date'),
        (TEXTNS, 'print-time'),
        (TEXTNS, 'printed-by'),
        (TEXTNS, 'reference-mark'),
        (TEXTNS, 'reference-mark-end'),
        (TEXTNS, 'reference-mark-start'),
        (TEXTNS, 'reference-ref'),
        (TEXTNS, 'ruby'),
        (TEXTNS, 's'),
        (TEXTNS, 'script'),
        (TEXTNS, 'sender-city'),
        (TEXTNS, 'sender-company'),
        (TEXTNS, 'sender-country'),
        (TEXTNS, 'sender-email'),
        (TEXTNS, 'sender-fax'),
        (TEXTNS, 'sender-firstname'),
        (TEXTNS, 'sender-initials'),
        (TEXTNS, 'sender-lastname'),
        (TEXTNS, 'sender-phone-private'),
        (TEXTNS, 'sender-phone-work'),
        (TEXTNS, 'sender-position'),
        (TEXTNS, 'sender-postal-code'),
        (TEXTNS, 'sender-state-or-province'),
        (TEXTNS, 'sender-street'),
        (TEXTNS, 'sender-title'),
        (TEXTNS, 'sequence'),
        (TEXTNS, 'sequence-ref'),
        (TEXTNS, 'sheet-name'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'span'),
        (TEXTNS, 'subject'),
        (TEXTNS, 'tab'),
        (TEXTNS, 'table-formula'),
        (TEXTNS, 'template-name'),
        (TEXTNS, 'text-input'),
        (TEXTNS, 'time'),
        (TEXTNS, 'title'),
        (TEXTNS, 'toc-mark'),
        (TEXTNS, 'toc-mark-end'),
        (TEXTNS, 'toc-mark-start'),
        (TEXTNS, 'user-defined'),
        (TEXTNS, 'user-field-get'),
        (TEXTNS, 'user-field-input'),
        (TEXTNS, 'user-index-mark'),
        (TEXTNS, 'user-index-mark-end'),
        (TEXTNS, 'user-index-mark-start'),
        (TEXTNS, 'variable-get'),
        (TEXTNS, 'variable-input'),
        (TEXTNS, 'variable-set'),
    ),
    # allowed_children
    (TEXTNS, 'alphabetical-index'): (
        (TEXTNS, 'alphabetical-index-source'),
        (TEXTNS, 'index-body'),
    ),
    (TEXTNS, 'alphabetical-index-auto-mark-file'): (),
    (TEXTNS, 'alphabetical-index-entry-template'): (
        (TEXTNS, 'index-entry-chapter'),
        (TEXTNS, 'index-entry-page-number'),
        (TEXTNS, 'index-entry-span'),
        (TEXTNS, 'index-entry-tab-stop'),
        (TEXTNS, 'index-entry-text'),
    ),
    (TEXTNS, 'alphabetical-index-mark'): (),
    (TEXTNS, 'alphabetical-index-mark-end'): (),
    (TEXTNS, 'alphabetical-index-mark-start'): (),
    (TEXTNS, 'alphabetical-index-source'): (
        (TEXTNS, 'alphabetical-index-entry-template'),
        (TEXTNS, 'index-title-template'),
    ),
    (TEXTNS, 'author-initials'): (),
    (TEXTNS, 'author-name'): (),
    (TEXTNS, 'bibliography'): (
        (TEXTNS, 'bibliography-source'),
        (TEXTNS, 'index-body'),
    ),
    (TEXTNS, 'bibliography-configuration'): ((TEXTNS, 'sort-key'),),
    (TEXTNS, 'bibliography-entry-template'): (
        (TEXTNS, 'index-entry-bibliography'),
        (TEXTNS, 'index-entry-span'),
        (TEXTNS, 'index-entry-tab-stop'),
    ),
    # allowed_children
    (TEXTNS, 'bibliography-mark'): (),
    (TEXTNS, 'bibliography-source'): (
        (TEXTNS, 'bibliography-entry-template'),
        (TEXTNS, 'index-title-template'),
    ),
    (TEXTNS, 'bookmark'): (),
    (TEXTNS, 'bookmark-end'): (),
    (TEXTNS, 'bookmark-ref'): (),
    (TEXTNS, 'bookmark-start'): (),
    (TEXTNS, 'change'): (),
    (TEXTNS, 'change-end'): (),
    (TEXTNS, 'change-start'): (),
    (TEXTNS, 'changed-region'): (
        (TEXTNS, 'deletion'),
        (TEXTNS, 'format-change'),
        (TEXTNS, 'insertion'),
    ),
    (TEXTNS, 'chapter'): (),
    (TEXTNS, 'character-count'): (),
    (TEXTNS, 'conditional-text'): (),
    (TEXTNS, 'creation-date'): (),
    (TEXTNS, 'creation-time'): (),
    (TEXTNS, 'creator'): (),
    (TEXTNS, 'database-display'): ((FORMNS, 'connection-resource'),),
    (TEXTNS, 'database-name'): ((FORMNS, 'connection-resource'),),
    (TEXTNS, 'database-next'): ((FORMNS, 'connection-resource'),),
    (TEXTNS, 'database-row-number'): ((FORMNS, 'connection-resource'),),
    (TEXTNS, 'database-row-select'): ((FORMNS, 'connection-resource'),),
    (TEXTNS, 'date'): (),
    (TEXTNS, 'dde-connection'): (),
    (TEXTNS, 'dde-connection-decl'): (),
    (TEXTNS, 'dde-connection-decls'): ((TEXTNS, 'dde-connection-decl'),),
    # allowed_children
    (TEXTNS, 'deletion'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'change-info'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'list'),
        (TEXTNS, 'numbered-paragraph'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'user-index'),
    ),
    (TEXTNS, 'description'): (),
    (TEXTNS, 'editing-cycles'): (),
    (TEXTNS, 'editing-duration'): (),
    (TEXTNS, 'execute-macro'): ((OFFICENS, 'event-listeners'),),
    (TEXTNS, 'expression'): (),
    (TEXTNS, 'file-name'): (),
    (TEXTNS, 'format-change'): ((OFFICENS, 'change-info'),),
    # allowed_children
    (TEXTNS, 'h'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'annotation'),
        (PRESENTATIONNS, 'date-time'),
        (PRESENTATIONNS, 'footer'),
        (PRESENTATIONNS, 'header'),
        (TEXTNS, 'a'),
        (TEXTNS, 'alphabetical-index-mark'),
        (TEXTNS, 'alphabetical-index-mark-end'),
        (TEXTNS, 'alphabetical-index-mark-start'),
        (TEXTNS, 'author-initials'),
        (TEXTNS, 'author-name'),
        (TEXTNS, 'bibliography-mark'),
        (TEXTNS, 'bookmark'),
        (TEXTNS, 'bookmark-end'),
        (TEXTNS, 'bookmark-ref'),
        (TEXTNS, 'bookmark-start'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'chapter'),
        (TEXTNS, 'conditional-text'),
        (TEXTNS, 'creation-date'),
        (TEXTNS, 'creation-time'),
        (TEXTNS, 'creator'),
        (TEXTNS, 'database-display'),
        (TEXTNS, 'database-name'),
        (TEXTNS, 'database-next'),
        (TEXTNS, 'database-row-number'),
        (TEXTNS, 'database-row-select'),
        (TEXTNS, 'date'),
        (TEXTNS, 'dde-connection'),
        (TEXTNS, 'description'),
        (TEXTNS, 'editing-cycles'),
        (TEXTNS, 'editing-duration'),
        (TEXTNS, 'execute-macro'),
        (TEXTNS, 'expression'),
        (TEXTNS, 'file-name'),
        (TEXTNS, 'hidden-paragraph'),
        (TEXTNS, 'hidden-text'),
        (TEXTNS, 'initial-creator'),
        (TEXTNS, 'keywords'),
        (TEXTNS, 'line-break'),
        (TEXTNS, 'measure'),
        (TEXTNS, 'modification-date'),
        (TEXTNS, 'modification-time'),
        (TEXTNS, 'note'),
        (TEXTNS, 'note-ref'),
        (TEXTNS, 'number'),
        (TEXTNS, 'page-count'),
        (TEXTNS, 'paragraph-count'),
        (TEXTNS, 'word-count'),
        (TEXTNS, 'character-count'),
        (TEXTNS, 'table-count'),
        (TEXTNS, 'image-count'),
        (TEXTNS, 'object-count'),
        (TEXTNS, 'page-continuation'),
        (TEXTNS, 'page-number'),
        (TEXTNS, 'page-variable-get'),
        (TEXTNS, 'page-variable-set'),
        (TEXTNS, 'placeholder'),
        (TEXTNS, 'print-date'),
        (TEXTNS, 'print-time'),
        (TEXTNS, 'printed-by'),
        (TEXTNS, 'reference-mark'),
        (TEXTNS, 'reference-mark-end'),
        (TEXTNS, 'reference-mark-start'),
        (TEXTNS, 'reference-ref'),
        (TEXTNS, 'ruby'),
        (TEXTNS, 's'),
        (TEXTNS, 'script'),
        (TEXTNS, 'sender-city'),
        (TEXTNS, 'sender-company'),
        (TEXTNS, 'sender-country'),
        (TEXTNS, 'sender-email'),
        (TEXTNS, 'sender-fax'),
        (TEXTNS, 'sender-firstname'),
        (TEXTNS, 'sender-initials'),
        (TEXTNS, 'sender-lastname'),
        (TEXTNS, 'sender-phone-private'),
        (TEXTNS, 'sender-phone-work'),
        (TEXTNS, 'sender-position'),
        (TEXTNS, 'sender-postal-code'),
        (TEXTNS, 'sender-state-or-province'),
        (TEXTNS, 'sender-street'),
        (TEXTNS, 'sender-title'),
        (TEXTNS, 'sequence'),
        (TEXTNS, 'sequence-ref'),
        (TEXTNS, 'sheet-name'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'span'),
        (TEXTNS, 'subject'),
        (TEXTNS, 'tab'),
        (TEXTNS, 'table-formula'),
        (TEXTNS, 'template-name'),
        (TEXTNS, 'text-input'),
        (TEXTNS, 'time'),
        (TEXTNS, 'title'),
        (TEXTNS, 'toc-mark'),
        (TEXTNS, 'toc-mark-end'),
        (TEXTNS, 'toc-mark-start'),
        (TEXTNS, 'user-defined'),
        (TEXTNS, 'user-field-get'),
        (TEXTNS, 'user-field-input'),
        (TEXTNS, 'user-index-mark'),
        (TEXTNS, 'user-index-mark-end'),
        (TEXTNS, 'user-index-mark-start'),
        (TEXTNS, 'variable-get'),
        (TEXTNS, 'variable-input'),
        (TEXTNS, 'variable-set'),
    ),
    # allowed_children
    (TEXTNS, 'hidden-paragraph'): (),
    (TEXTNS, 'hidden-text'): (),
    (TEXTNS, 'illustration-index'): (
        (TEXTNS, 'illustration-index-source'),
        (TEXTNS, 'index-body'),
    ),
    (TEXTNS, 'illustration-index-entry-template'): (
        (TEXTNS, 'index-entry-page-number'),
        (TEXTNS, 'index-entry-span'),
        (TEXTNS, 'index-entry-tab-stop'),
        (TEXTNS, 'index-entry-text'),
    ),
    (TEXTNS, 'illustration-index-source'): (
        (TEXTNS, 'illustration-index-entry-template'),
        (TEXTNS, 'index-title-template'),
    ),
    (TEXTNS, 'image-count'): (),
    # allowed_children
    (TEXTNS, 'index-body'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'index-title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'numbered-paragraph'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'user-index'),
    ),
    (TEXTNS, 'index-entry-bibliography'): (),
    (TEXTNS, 'index-entry-chapter'): (),
    (TEXTNS, 'index-entry-link-end'): (),
    (TEXTNS, 'index-entry-link-start'): (),
    (TEXTNS, 'index-entry-page-number'): (),
    (TEXTNS, 'index-entry-span'): (),
    (TEXTNS, 'index-entry-tab-stop'): (),
    (TEXTNS, 'index-entry-text'): (),
    (TEXTNS, 'index-source-style'): (),
    (TEXTNS, 'index-source-styles'): ((TEXTNS, 'index-source-style'),),
    # allowed_children
    (TEXTNS, 'index-title'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'index-title'),
        (TEXTNS, 'list'),
        (TEXTNS, 'numbered-paragraph'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'user-index'),
    ),
    (TEXTNS, 'index-title-template'): (),
    (TEXTNS, 'initial-creator'): (),
    (TEXTNS, 'insertion'): ((OFFICENS, 'change-info'),),
    (TEXTNS, 'keywords'): (),
    (TEXTNS, 'line-break'): (),
    (TEXTNS, 'linenumbering-configuration'): ((TEXTNS, 'linenumbering-separator'),),
    (TEXTNS, 'linenumbering-separator'): (),
    (TEXTNS, 'list'): (
        (TEXTNS, 'list-header'),
        (TEXTNS, 'list-item'),
    ),
    (TEXTNS, 'list-header'): (
        (TEXTNS, 'h'),
        (TEXTNS, 'list'),
        (TEXTNS, 'number'),
        (TEXTNS, 'p'),
        (TEXTNS, 'soft-page-break'),
    ),
    (TEXTNS, 'list-item'): (
        (TEXTNS, 'h'),
        (TEXTNS, 'list'),
        (TEXTNS, 'number'),
        (TEXTNS, 'p'),
        (TEXTNS, 'soft-page-break'),
    ),
    (TEXTNS, 'list-level-style-bullet'): (
        (STYLENS, 'list-level-properties'),
        (STYLENS, 'text-properties'),
    ),
    (TEXTNS, 'list-level-style-image'): (
        (OFFICENS, 'binary-data'),
        (STYLENS, 'list-level-properties'),
    ),
    (TEXTNS, 'list-level-style-number'): (
        (STYLENS, 'list-level-properties'),
        (STYLENS, 'text-properties'),
    ),
    (TEXTNS, 'list-style'): (
        (TEXTNS, 'list-level-style-bullet'),
        (TEXTNS, 'list-level-style-image'),
        (TEXTNS, 'list-level-style-number'),
    ),
    (TEXTNS, 'measure'): (),
    (TEXTNS, 'modification-date'): (),
    (TEXTNS, 'modification-time'): (),
    (TEXTNS, 'note'): (
        (TEXTNS, 'note-body'),
        (TEXTNS, 'note-citation'),
    ),
    # allowed_children
    (TEXTNS, 'note-body'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'list'),
        (TEXTNS, 'numbered-paragraph'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'user-index'),
    ),
    (TEXTNS, 'note-citation'): (),
    (TEXTNS, 'note-continuation-notice-backward'): (),
    (TEXTNS, 'note-continuation-notice-forward'): (),
    (TEXTNS, 'note-ref'): (),
    (TEXTNS, 'notes-configuration'): (
        (TEXTNS, 'note-continuation-notice-backward'),
        (TEXTNS, 'note-continuation-notice-forward'),
    ),
    (TEXTNS, 'number'): (),
    (TEXTNS, 'numbered-paragraph'): (
        (TEXTNS, 'h'),
        (TEXTNS, 'number'),
        (TEXTNS, 'p'),
    ),
    (TEXTNS, 'object-count'): (),
    (TEXTNS, 'object-index'): (
        (TEXTNS, 'index-body'),
        (TEXTNS, 'object-index-source'),
    ),
    (TEXTNS, 'object-index-entry-template'): (
        (TEXTNS, 'index-entry-page-number'),
        (TEXTNS, 'index-entry-span'),
        (TEXTNS, 'index-entry-tab-stop'),
        (TEXTNS, 'index-entry-text'),
    ),
    (TEXTNS, 'object-index-source'): (
        (TEXTNS, 'index-title-template'),
        (TEXTNS, 'object-index-entry-template'),
    ),
    (TEXTNS, 'outline-level-style'): (
        (STYLENS, 'list-level-properties'),
        (STYLENS, 'text-properties'),
    ),
    (TEXTNS, 'outline-style'): ((TEXTNS, 'outline-level-style'),),
    # allowed_children
    (TEXTNS, 'p'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'annotation'),
        (PRESENTATIONNS, 'date-time'),
        (PRESENTATIONNS, 'footer'),
        (PRESENTATIONNS, 'header'),
        (TEXTNS, 'a'),
        (TEXTNS, 'alphabetical-index-mark'),
        (TEXTNS, 'alphabetical-index-mark-end'),
        (TEXTNS, 'alphabetical-index-mark-start'),
        (TEXTNS, 'author-initials'),
        (TEXTNS, 'author-name'),
        (TEXTNS, 'bibliography-mark'),
        (TEXTNS, 'bookmark'),
        (TEXTNS, 'bookmark-end'),
        (TEXTNS, 'bookmark-ref'),
        (TEXTNS, 'bookmark-start'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'chapter'),
        (TEXTNS, 'character-count'),
        (TEXTNS, 'conditional-text'),
        (TEXTNS, 'creation-date'),
        (TEXTNS, 'creation-time'),
        (TEXTNS, 'creator'),
        (TEXTNS, 'database-display'),
        (TEXTNS, 'database-name'),
        (TEXTNS, 'database-next'),
        (TEXTNS, 'database-row-number'),
        (TEXTNS, 'database-row-select'),
        (TEXTNS, 'date'),
        (TEXTNS, 'dde-connection'),
        (TEXTNS, 'description'),
        (TEXTNS, 'editing-cycles'),
        (TEXTNS, 'editing-duration'),
        (TEXTNS, 'execute-macro'),
        (TEXTNS, 'expression'),
        (TEXTNS, 'file-name'),
        (TEXTNS, 'hidden-paragraph'),
        (TEXTNS, 'hidden-text'),
        (TEXTNS, 'image-count'),
        (TEXTNS, 'initial-creator'),
        (TEXTNS, 'keywords'),
        (TEXTNS, 'line-break'),
        (TEXTNS, 'measure'),
        (TEXTNS, 'modification-date'),
        (TEXTNS, 'modification-time'),
        (TEXTNS, 'note'),
        (TEXTNS, 'note-ref'),
        (TEXTNS, 'object-count'),
        (TEXTNS, 'page-continuation'),
        (TEXTNS, 'page-count'),
        (TEXTNS, 'page-number'),
        (TEXTNS, 'page-variable-get'),
        (TEXTNS, 'page-variable-set'),
        (TEXTNS, 'paragraph-count'),
        (TEXTNS, 'placeholder'),
        (TEXTNS, 'print-date'),
        (TEXTNS, 'printed-by'),
        (TEXTNS, 'print-time'),
        (TEXTNS, 'reference-mark'),
        (TEXTNS, 'reference-mark-end'),
        (TEXTNS, 'reference-mark-start'),
        (TEXTNS, 'reference-ref'),
        (TEXTNS, 'ruby'),
        (TEXTNS, 's'),
        (TEXTNS, 'script'),
        (TEXTNS, 'sender-city'),
        (TEXTNS, 'sender-company'),
        (TEXTNS, 'sender-country'),
        (TEXTNS, 'sender-email'),
        (TEXTNS, 'sender-fax'),
        (TEXTNS, 'sender-firstname'),
        (TEXTNS, 'sender-initials'),
        (TEXTNS, 'sender-lastname'),
        (TEXTNS, 'sender-phone-private'),
        (TEXTNS, 'sender-phone-work'),
        (TEXTNS, 'sender-position'),
        (TEXTNS, 'sender-postal-code'),
        (TEXTNS, 'sender-state-or-province'),
        (TEXTNS, 'sender-street'),
        (TEXTNS, 'sender-title'),
        (TEXTNS, 'sequence'),
        (TEXTNS, 'sequence-ref'),
        (TEXTNS, 'sheet-name'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'span'),
        (TEXTNS, 'subject'),
        (TEXTNS, 'tab'),
        (TEXTNS, 'table-count'),
        (TEXTNS, 'table-formula'),
        (TEXTNS, 'template-name'),
        (TEXTNS, 'text-input'),
        (TEXTNS, 'time'),
        (TEXTNS, 'title'),
        (TEXTNS, 'toc-mark'),
        (TEXTNS, 'toc-mark-end'),
        (TEXTNS, 'toc-mark-start'),
        (TEXTNS, 'user-defined'),
        (TEXTNS, 'user-field-get'),
        (TEXTNS, 'user-field-input'),
        (TEXTNS, 'user-index-mark'),
        (TEXTNS, 'user-index-mark-end'),
        (TEXTNS, 'user-index-mark-start'),
        (TEXTNS, 'variable-get'),
        (TEXTNS, 'variable-input'),
        (TEXTNS, 'variable-set'),
        (TEXTNS, 'word-count'),
    ),
    (TEXTNS, 'page'): (),
    (TEXTNS, 'page-count'): (),
    (TEXTNS, 'page-continuation'): (),
    (TEXTNS, 'page-number'): (),
    (TEXTNS, 'page-sequence'): ((TEXTNS, 'page'),),
    (TEXTNS, 'page-variable-get'): (),
    (TEXTNS, 'page-variable-set'): (),
    (TEXTNS, 'paragraph-count'): (),
    (TEXTNS, 'placeholder'): (),
    (TEXTNS, 'print-date'): (),
    (TEXTNS, 'print-time'): (),
    (TEXTNS, 'printed-by'): (),
    (TEXTNS, 'reference-mark'): (),
    (TEXTNS, 'reference-mark-end'): (),
    # allowed_children
    (TEXTNS, 'reference-mark-start'): (),
    (TEXTNS, 'reference-ref'): (),
    (TEXTNS, 'ruby'): (
        (TEXTNS, 'ruby-base'),
        (TEXTNS, 'ruby-text'),
    ),
    (TEXTNS, 'ruby-base'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'annotation'),
        (PRESENTATIONNS, 'date-time'),
        (PRESENTATIONNS, 'footer'),
        (PRESENTATIONNS, 'header'),
        (TEXTNS, 'a'),
        (TEXTNS, 'alphabetical-index-mark'),
        (TEXTNS, 'alphabetical-index-mark-end'),
        (TEXTNS, 'alphabetical-index-mark-start'),
        (TEXTNS, 'author-initials'),
        (TEXTNS, 'author-name'),
        (TEXTNS, 'bibliography-mark'),
        (TEXTNS, 'bookmark'),
        (TEXTNS, 'bookmark-end'),
        (TEXTNS, 'bookmark-ref'),
        (TEXTNS, 'bookmark-start'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'chapter'),
        (TEXTNS, 'conditional-text'),
        (TEXTNS, 'creation-date'),
        (TEXTNS, 'creation-time'),
        (TEXTNS, 'creator'),
        (TEXTNS, 'database-display'),
        (TEXTNS, 'database-name'),
        (TEXTNS, 'database-next'),
        (TEXTNS, 'database-row-number'),
        (TEXTNS, 'database-row-select'),
        (TEXTNS, 'date'),
        (TEXTNS, 'dde-connection'),
        (TEXTNS, 'description'),
        (TEXTNS, 'editing-cycles'),
        (TEXTNS, 'editing-duration'),
        (TEXTNS, 'execute-macro'),
        (TEXTNS, 'expression'),
        (TEXTNS, 'file-name'),
        (TEXTNS, 'hidden-paragraph'),
        (TEXTNS, 'hidden-text'),
        (TEXTNS, 'initial-creator'),
        (TEXTNS, 'keywords'),
        (TEXTNS, 'line-break'),
        (TEXTNS, 'measure'),
        (TEXTNS, 'modification-date'),
        (TEXTNS, 'modification-time'),
        (TEXTNS, 'note'),
        (TEXTNS, 'note-ref'),
        (TEXTNS, 'page-count'),
        (TEXTNS, 'paragraph-count'),
        (TEXTNS, 'word-count'),
        (TEXTNS, 'character-count'),
        (TEXTNS, 'table-count'),
        (TEXTNS, 'image-count'),
        (TEXTNS, 'object-count'),
        (TEXTNS, 'page-continuation'),
        (TEXTNS, 'page-number'),
        (TEXTNS, 'page-variable-get'),
        (TEXTNS, 'page-variable-set'),
        (TEXTNS, 'placeholder'),
        (TEXTNS, 'print-date'),
        (TEXTNS, 'print-time'),
        (TEXTNS, 'printed-by'),
        (TEXTNS, 'reference-mark'),
        (TEXTNS, 'reference-mark-end'),
        (TEXTNS, 'reference-mark-start'),
        (TEXTNS, 'reference-ref'),
        (TEXTNS, 'ruby'),
        (TEXTNS, 's'),
        (TEXTNS, 'script'),
        (TEXTNS, 'sender-city'),
        (TEXTNS, 'sender-company'),
        (TEXTNS, 'sender-country'),
        (TEXTNS, 'sender-email'),
        (TEXTNS, 'sender-fax'),
        (TEXTNS, 'sender-firstname'),
        (TEXTNS, 'sender-initials'),
        (TEXTNS, 'sender-lastname'),
        (TEXTNS, 'sender-phone-private'),
        (TEXTNS, 'sender-phone-work'),
        (TEXTNS, 'sender-position'),
        (TEXTNS, 'sender-postal-code'),
        (TEXTNS, 'sender-state-or-province'),
        (TEXTNS, 'sender-street'),
        (TEXTNS, 'sender-title'),
        (TEXTNS, 'sequence'),
        (TEXTNS, 'sequence-ref'),
        (TEXTNS, 'sheet-name'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'span'),
        (TEXTNS, 'subject'),
        (TEXTNS, 'tab'),
        (TEXTNS, 'table-formula'),
        (TEXTNS, 'template-name'),
        (TEXTNS, 'text-input'),
        (TEXTNS, 'time'),
        (TEXTNS, 'title'),
        (TEXTNS, 'toc-mark'),
        (TEXTNS, 'toc-mark-end'),
        (TEXTNS, 'toc-mark-start'),
        (TEXTNS, 'user-defined'),
        (TEXTNS, 'user-field-get'),
        (TEXTNS, 'user-field-input'),
        (TEXTNS, 'user-index-mark'),
        (TEXTNS, 'user-index-mark-end'),
        (TEXTNS, 'user-index-mark-start'),
        (TEXTNS, 'variable-get'),
        (TEXTNS, 'variable-input'),
        (TEXTNS, 'variable-set'),
    ),
    # allowed_children
    (TEXTNS, 'ruby-text'): (),
    (TEXTNS, 's'): (),
    (TEXTNS, 'script'): (),
    (TEXTNS, 'section'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'dde-source'),
        (TABLENS, 'table'),
        (TEXTNS, 'alphabetical-index'),
        (TEXTNS, 'bibliography'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'h'),
        (TEXTNS, 'illustration-index'),
        (TEXTNS, 'list'),
        (TEXTNS, 'numbered-paragraph'),
        (TEXTNS, 'object-index'),
        (TEXTNS, 'p'),
        (TEXTNS, 'section'),
        (TEXTNS, 'section-source'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'table-index'),
        (TEXTNS, 'table-of-content'),
        (TEXTNS, 'user-index'),
    ),
    (TEXTNS, 'section-source'): (),
    (TEXTNS, 'sender-city'): (),
    (TEXTNS, 'sender-company'): (),
    (TEXTNS, 'sender-country'): (),
    # allowed_children
    (TEXTNS, 'sender-email'): (),
    (TEXTNS, 'sender-fax'): (),
    (TEXTNS, 'sender-firstname'): (),
    (TEXTNS, 'sender-initials'): (),
    (TEXTNS, 'sender-lastname'): (),
    (TEXTNS, 'sender-phone-private'): (),
    (TEXTNS, 'sender-phone-work'): (),
    (TEXTNS, 'sender-position'): (),
    (TEXTNS, 'sender-postal-code'): (),
    (TEXTNS, 'sender-state-or-province'): (),
    (TEXTNS, 'sender-street'): (),
    (TEXTNS, 'sender-title'): (),
    (TEXTNS, 'sequence'): (),
    (TEXTNS, 'sequence-decl'): (),
    (TEXTNS, 'sequence-decls'): ((TEXTNS, 'sequence-decl'),),
    (TEXTNS, 'sequence-ref'): (),
    (TEXTNS, 'sheet-name'): (),
    (TEXTNS, 'soft-page-break'): (),
    (TEXTNS, 'sort-key'): (),
    # allowed_children
    (TEXTNS, 'span'): (
        (DR3DNS, 'scene'),
        (DRAWNS, 'a'),
        (DRAWNS, 'caption'),
        (DRAWNS, 'circle'),
        (DRAWNS, 'connector'),
        (DRAWNS, 'control'),
        (DRAWNS, 'custom-shape'),
        (DRAWNS, 'ellipse'),
        (DRAWNS, 'frame'),
        (DRAWNS, 'g'),
        (DRAWNS, 'line'),
        (DRAWNS, 'measure'),
        (DRAWNS, 'page-thumbnail'),
        (DRAWNS, 'path'),
        (DRAWNS, 'polygon'),
        (DRAWNS, 'polyline'),
        (DRAWNS, 'rect'),
        (DRAWNS, 'regular-polygon'),
        (OFFICENS, 'annotation'),
        (PRESENTATIONNS, 'date-time'),
        (PRESENTATIONNS, 'footer'),
        (PRESENTATIONNS, 'header'),
        (TEXTNS, 'a'),
        (TEXTNS, 'alphabetical-index-mark'),
        (TEXTNS, 'alphabetical-index-mark-end'),
        (TEXTNS, 'alphabetical-index-mark-start'),
        (TEXTNS, 'author-initials'),
        (TEXTNS, 'author-name'),
        (TEXTNS, 'bibliography-mark'),
        (TEXTNS, 'bookmark'),
        (TEXTNS, 'bookmark-end'),
        (TEXTNS, 'bookmark-ref'),
        (TEXTNS, 'bookmark-start'),
        (TEXTNS, 'change'),
        (TEXTNS, 'change-end'),
        (TEXTNS, 'change-start'),
        (TEXTNS, 'chapter'),
        (TEXTNS, 'conditional-text'),
        (TEXTNS, 'creation-date'),
        (TEXTNS, 'creation-time'),
        (TEXTNS, 'creator'),
        (TEXTNS, 'database-display'),
        (TEXTNS, 'database-name'),
        (TEXTNS, 'database-next'),
        (TEXTNS, 'database-row-number'),
        (TEXTNS, 'database-row-select'),
        (TEXTNS, 'date'),
        (TEXTNS, 'dde-connection'),
        (TEXTNS, 'description'),
        (TEXTNS, 'editing-cycles'),
        (TEXTNS, 'editing-duration'),
        (TEXTNS, 'execute-macro'),
        (TEXTNS, 'expression'),
        (TEXTNS, 'file-name'),
        (TEXTNS, 'hidden-paragraph'),
        (TEXTNS, 'hidden-text'),
        (TEXTNS, 'initial-creator'),
        (TEXTNS, 'keywords'),
        (TEXTNS, 'line-break'),
        (TEXTNS, 'measure'),
        (TEXTNS, 'modification-date'),
        (TEXTNS, 'modification-time'),
        (TEXTNS, 'note'),
        (TEXTNS, 'note-ref'),
        (TEXTNS, 'page-count'),
        (TEXTNS, 'paragraph-count'),
        (TEXTNS, 'word-count'),
        (TEXTNS, 'character-count'),
        (TEXTNS, 'table-count'),
        (TEXTNS, 'image-count'),
        (TEXTNS, 'object-count'),
        (TEXTNS, 'page-continuation'),
        (TEXTNS, 'page-number'),
        (TEXTNS, 'page-variable-get'),
        (TEXTNS, 'page-variable-set'),
        (TEXTNS, 'placeholder'),
        (TEXTNS, 'print-date'),
        (TEXTNS, 'print-time'),
        (TEXTNS, 'printed-by'),
        (TEXTNS, 'reference-mark'),
        (TEXTNS, 'reference-mark-end'),
        (TEXTNS, 'reference-mark-start'),
        (TEXTNS, 'reference-ref'),
        (TEXTNS, 'ruby'),
        (TEXTNS, 's'),
        (TEXTNS, 'script'),
        (TEXTNS, 'sender-city'),
        (TEXTNS, 'sender-company'),
        (TEXTNS, 'sender-country'),
        (TEXTNS, 'sender-email'),
        (TEXTNS, 'sender-fax'),
        (TEXTNS, 'sender-firstname'),
        (TEXTNS, 'sender-initials'),
        (TEXTNS, 'sender-lastname'),
        (TEXTNS, 'sender-phone-private'),
        (TEXTNS, 'sender-phone-work'),
        (TEXTNS, 'sender-position'),
        (TEXTNS, 'sender-postal-code'),
        (TEXTNS, 'sender-state-or-province'),
        (TEXTNS, 'sender-street'),
        (TEXTNS, 'sender-title'),
        (TEXTNS, 'sequence'),
        (TEXTNS, 'sequence-ref'),
        (TEXTNS, 'sheet-name'),
        (TEXTNS, 'soft-page-break'),
        (TEXTNS, 'span'),
        (TEXTNS, 'subject'),
        (TEXTNS, 'tab'),
        (TEXTNS, 'table-formula'),
        (TEXTNS, 'template-name'),
        (TEXTNS, 'text-input'),
        (TEXTNS, 'time'),
        (TEXTNS, 'title'),
        (TEXTNS, 'toc-mark'),
        (TEXTNS, 'toc-mark-end'),
        (TEXTNS, 'toc-mark-start'),
        (TEXTNS, 'user-defined'),
        (TEXTNS, 'user-field-get'),
        (TEXTNS, 'user-field-input'),
        (TEXTNS, 'user-index-mark'),
        (TEXTNS, 'user-index-mark-end'),
        (TEXTNS, 'user-index-mark-start'),
        (TEXTNS, 'variable-get'),
        (TEXTNS, 'variable-input'),
        (TEXTNS, 'variable-set'),
    ),
    # allowed_children
    (TEXTNS, 'subject'): (),
    (TEXTNS, 'tab'): (),
    (TEXTNS, 'table-count'): (),
    (TEXTNS, 'table-formula'): (),
    (TEXTNS, 'table-index'): (
        (TEXTNS, 'index-body'),
        (TEXTNS, 'table-index-source'),
    ),
    (TEXTNS, 'table-index-entry-template'): (
        (TEXTNS, 'index-entry-page-number'),
        (TEXTNS, 'index-entry-span'),
        (TEXTNS, 'index-entry-tab-stop'),
        (TEXTNS, 'index-entry-text'),
    ),
    (TEXTNS, 'table-index-source'): (
        (TEXTNS, 'index-title-template'),
        (TEXTNS, 'table-index-entry-template'),
    ),
    (TEXTNS, 'table-of-content'): (
        (TEXTNS, 'index-body'),
        (TEXTNS, 'table-of-content-source'),
    ),
    (TEXTNS, 'table-of-content-entry-template'): (
        (TEXTNS, 'index-entry-chapter'),
        (TEXTNS, 'index-entry-link-end'),
        (TEXTNS, 'index-entry-link-start'),
        (TEXTNS, 'index-entry-page-number'),
        (TEXTNS, 'index-entry-span'),
        (TEXTNS, 'index-entry-tab-stop'),
        (TEXTNS, 'index-entry-text'),
    ),
    (TEXTNS, 'table-of-content-source'): (
        (TEXTNS, 'index-source-styles'),
        (TEXTNS, 'index-title-template'),
        (TEXTNS, 'table-of-content-entry-template'),
    ),
    (TEXTNS, 'template-name'): (),
    (TEXTNS, 'text-input'): (),
    (TEXTNS, 'time'): (),
    (TEXTNS, 'title'): (),
    (TEXTNS, 'toc-mark'): (),
    (TEXTNS, 'toc-mark-end'): (),
    (TEXTNS, 'toc-mark-start'): (),
    # allowed_children
    (TEXTNS, 'tracked-changes'): ((TEXTNS, 'changed-region'),),
    (TEXTNS, 'user-defined'): (),
    (TEXTNS, 'user-field-decl'): (),
    (TEXTNS, 'user-field-decls'): ((TEXTNS, 'user-field-decl'),),
    (TEXTNS, 'user-field-get'): (),
    (TEXTNS, 'user-field-input'): (),
    (TEXTNS, 'user-index'): (
        (TEXTNS, 'index-body'),
        (TEXTNS, 'user-index-source'),
    ),
    (TEXTNS, 'user-index-entry-template'): (
        (TEXTNS, 'index-entry-chapter'),
        (TEXTNS, 'index-entry-page-number'),
        (TEXTNS, 'index-entry-span'),
        (TEXTNS, 'index-entry-tab-stop'),
        (TEXTNS, 'index-entry-text'),
    ),
    # allowed_children
    (TEXTNS, 'user-index-mark'): (),
    (TEXTNS, 'user-index-mark-end'): (),
    (TEXTNS, 'user-index-mark-start'): (),
    (TEXTNS, 'user-index-source'): (
        (TEXTNS, 'index-source-styles'),
        (TEXTNS, 'index-title-template'),
        (TEXTNS, 'user-index-entry-template'),
    ),
    (TEXTNS, 'variable-decl'): (),
    (TEXTNS, 'variable-decls'): ((TEXTNS, 'variable-decl'),),
    (TEXTNS, 'variable-get'): (),
    (TEXTNS, 'variable-input'): (),
    (TEXTNS, 'variable-set'): (),
    (TEXTNS, 'word-count'): (),
    # allowed_children
}

#
# List of elements that allows text nodes
#
allows_text = (
    (CONFIGNS, 'config-item'),
    (DCNS, 'creator'),
    (DCNS, 'date'),
    (DCNS, 'description'),
    (DCNS, 'language'),
    (DCNS, 'subject'),
    (DCNS, '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, 'item'),
    (FORMNS, 'option'),
    (MATHNS, 'math'),
    (METANS, 'creation-date'),
    (METANS, 'date-string'),
    (METANS, 'editing-cycles'),
    (METANS, 'editing-duration'),
    # allows_text
    (METANS, 'generator'),
    (METANS, 'initial-creator'),
    (METANS, 'keyword'),
    (METANS, 'print-date'),
    (METANS, 'printed-by'),
    (METANS, 'user-defined'),
    (NUMBERNS, 'currency-symbol'),
    (NUMBERNS, 'embedded-text'),
    (NUMBERNS, 'text'),
    (OFFICENS, 'binary-data'),
    (OFFICENS, 'script'),
    (PRESENTATIONNS, 'date-time-decl'),
    (PRESENTATIONNS, 'footer-decl'),
    (PRESENTATIONNS, 'header-decl'),
    (SVGNS, 'desc'),
    (SVGNS, 'title'),
    (TEXTNS, 'a'),
    (TEXTNS, 'author-initials'),
    (TEXTNS, 'author-name'),
    (TEXTNS, 'bibliography-mark'),
    (TEXTNS, 'bookmark-ref'),
    (TEXTNS, 'chapter'),
    (TEXTNS, 'character-count'),
    (TEXTNS, 'conditional-text'),
    (TEXTNS, 'creation-date'),
    (TEXTNS, 'creation-time'),
    (TEXTNS, 'creator'),
    (TEXTNS, 'database-display'),
    (TEXTNS, 'database-name'),
    (TEXTNS, 'database-row-number'),
    (TEXTNS, 'date'),
    (TEXTNS, 'dde-connection'),
    (TEXTNS, 'description'),
    (TEXTNS, 'editing-cycles'),
    (TEXTNS, 'editing-duration'),
    (TEXTNS, 'execute-macro'),
    (TEXTNS, 'expression'),
    (TEXTNS, 'file-name'),
    (TEXTNS, 'h'),
    (TEXTNS, 'hidden-paragraph'),
    (TEXTNS, 'hidden-text'),
    (TEXTNS, 'image-count'),
    # allows_text
    (TEXTNS, 'index-entry-span'),
    (TEXTNS, 'index-title-template'),
    (TEXTNS, 'initial-creator'),
    (TEXTNS, 'keywords'),
    (TEXTNS, 'linenumbering-separator'),
    (TEXTNS, 'measure'),
    (TEXTNS, 'modification-date'),
    (TEXTNS, 'modification-time'),
    (TEXTNS, 'note-citation'),
    (TEXTNS, 'note-continuation-notice-backward'),
    (TEXTNS, 'note-continuation-notice-forward'),
    (TEXTNS, 'note-ref'),
    (TEXTNS, 'number'),
    (TEXTNS, 'object-count'),
    (TEXTNS, 'p'),
    (TEXTNS, 'page-continuation'),
    (TEXTNS, 'page-count'),
    (TEXTNS, 'page-number'),
    (TEXTNS, 'page-variable-get'),
    (TEXTNS, 'page-variable-set'),
    (TEXTNS, 'paragraph-count'),
    (TEXTNS, 'placeholder'),
    (TEXTNS, 'print-date'),
    (TEXTNS, 'print-time'),
    (TEXTNS, 'printed-by'),
    (TEXTNS, 'reference-ref'),
    (TEXTNS, 'ruby-base'),
    (TEXTNS, 'ruby-text'),
    (TEXTNS, 'script'),
    (TEXTNS, 'sender-city'),
    (TEXTNS, 'sender-company'),
    (TEXTNS, 'sender-country'),
    (TEXTNS, 'sender-email'),
    (TEXTNS, 'sender-fax'),
    (TEXTNS, 'sender-firstname'),
    (TEXTNS, 'sender-initials'),
    (TEXTNS, 'sender-lastname'),
    (TEXTNS, 'sender-phone-private'),
    (TEXTNS, 'sender-phone-work'),
    (TEXTNS, 'sender-position'),
    (TEXTNS, 'sender-postal-code'),
    (TEXTNS, 'sender-state-or-province'),
    (TEXTNS, 'sender-street'),
    (TEXTNS, 'sender-title'),
    (TEXTNS, 'sequence'),
    (TEXTNS, 'sequence-ref'),
    (TEXTNS, 'sheet-name'),
    # allows_text
    (TEXTNS, 'span'),
    (TEXTNS, 'subject'),
    (TEXTNS, 'table-count'),
    (TEXTNS, 'table-formula'),
    (TEXTNS, 'template-name'),
    (TEXTNS, 'text-input'),
    (TEXTNS, 'time'),
    (TEXTNS, 'title'),
    (TEXTNS, 'user-defined'),
    (TEXTNS, 'user-field-get'),
    (TEXTNS, 'user-field-input'),
    (TEXTNS, 'variable-get'),
    (TEXTNS, 'variable-input'),
    (TEXTNS, 'variable-set'),
    (TEXTNS, 'word-count'),
    # allows_text
)

# Only the elements with at least one required attribute is listed

required_attributes = {
    (ANIMNS, 'animate'): ((SMILNS, 'attributeName'),),
    (ANIMNS, 'animateColor'): ((SMILNS, 'attributeName'),),
    (ANIMNS, 'animateMotion'): ((SMILNS, 'attributeName'),),
    (ANIMNS, 'animateTransform'): (
        (SVGNS, 'type'),
        (SMILNS, 'attributeName'),
    ),
    (ANIMNS, 'command'): ((ANIMNS, 'command'),),
    (ANIMNS, 'param'): (
        (ANIMNS, 'name'),
        (ANIMNS, 'value'),
    ),
    (ANIMNS, 'set'): ((SMILNS, 'attributeName'),),
    # required_attributes
    (ANIMNS, 'transitionFilter'): ((SMILNS, 'type'),),
    (CHARTNS, 'axis'): ((CHARTNS, 'dimension'),),
    (CHARTNS, 'chart'): ((CHARTNS, 'class'),),
    (CHARTNS, 'symbol-image'): ((XLINKNS, 'href'),),
    (CONFIGNS, 'config-item'): (
        (CONFIGNS, 'type'),
        (CONFIGNS, 'name'),
    ),
    (CONFIGNS, 'config-item-map-indexed'): ((CONFIGNS, 'name'),),
    (CONFIGNS, 'config-item-map-named'): ((CONFIGNS, 'name'),),
    (CONFIGNS, 'config-item-set'): ((CONFIGNS, 'name'),),
    # required_attributes
    (NUMBERNS, 'boolean-style'): ((STYLENS, 'name'),),
    (NUMBERNS, 'currency-style'): ((STYLENS, 'name'),),
    (NUMBERNS, 'date-style'): ((STYLENS, 'name'),),
    (NUMBERNS, 'embedded-text'): ((NUMBERNS, 'position'),),
    (NUMBERNS, 'number-style'): ((STYLENS, 'name'),),
    (NUMBERNS, 'percentage-style'): ((STYLENS, 'name'),),
    (NUMBERNS, 'text-style'): ((STYLENS, 'name'),),
    (NUMBERNS, 'time-style'): ((STYLENS, 'name'),),
    (DR3DNS, 'extrude'): (
        (SVGNS, 'd'),
        (SVGNS, 'viewBox'),
    ),
    (DR3DNS, 'light'): ((DR3DNS, 'direction'),),
    (DR3DNS, 'rotate'): (
        (SVGNS, 'viewBox'),
        (SVGNS, 'd'),
    ),
    # required_attributes
    (DRAWNS, 'a'): ((XLINKNS, 'href'),),
    (DRAWNS, 'area-circle'): (
        (SVGNS, 'cy'),
        (SVGNS, 'cx'),
        (SVGNS, 'r'),
    ),
    (DRAWNS, 'area-polygon'): (
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (DRAWNS, 'points'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (SVGNS, 'viewBox'),
    ),
    (DRAWNS, 'area-rectangle'): (
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
    ),
    (DRAWNS, 'contour-path'): (
        (DRAWNS, 'recreate-on-edit'),
        (SVGNS, 'viewBox'),
        (SVGNS, 'd'),
    ),
    (DRAWNS, 'contour-polygon'): (
        (DRAWNS, 'points'),
        (DRAWNS, 'recreate-on-edit'),
        (SVGNS, 'viewBox'),
    ),
    (DRAWNS, 'control'): ((DRAWNS, 'control'),),
    (DRAWNS, 'fill-image'): (
        (XLINKNS, 'href'),
        (DRAWNS, 'name'),
    ),
    (DRAWNS, 'floating-frame'): ((XLINKNS, 'href'),),
    (DRAWNS, 'glue-point'): (
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (DRAWNS, 'id'),
        (DRAWNS, 'escape-direction'),
    ),
    # required_attributes
    (DRAWNS, 'gradient'): ((DRAWNS, 'style'),),
    (DRAWNS, 'handle'): ((DRAWNS, 'handle-position'),),
    (DRAWNS, 'hatch'): (
        (DRAWNS, 'style'),
        (DRAWNS, 'name'),
    ),
    (DRAWNS, 'layer'): ((DRAWNS, 'name'),),
    (DRAWNS, 'line'): (
        (SVGNS, 'y1'),
        (SVGNS, 'x2'),
        (SVGNS, 'x1'),
        (SVGNS, 'y2'),
    ),
    (DRAWNS, 'marker'): (
        (SVGNS, 'd'),
        (DRAWNS, 'name'),
        (SVGNS, 'viewBox'),
    ),
    (DRAWNS, 'measure'): (
        (SVGNS, 'y1'),
        (SVGNS, 'x2'),
        (SVGNS, 'x1'),
        (SVGNS, 'y2'),
    ),
    (DRAWNS, 'opacity'): ((DRAWNS, 'style'),),
    (DRAWNS, 'page'): ((DRAWNS, 'master-page-name'),),
    (DRAWNS, 'path'): (
        (SVGNS, 'd'),
        (SVGNS, 'viewBox'),
    ),
    (DRAWNS, 'plugin'): ((XLINKNS, 'href'),),
    (DRAWNS, 'polygon'): (
        (DRAWNS, 'points'),
        (SVGNS, 'viewBox'),
    ),
    # required_attributes
    (DRAWNS, 'polyline'): (
        (DRAWNS, 'points'),
        (SVGNS, 'viewBox'),
    ),
    (DRAWNS, 'regular-polygon'): ((DRAWNS, 'corners'),),
    (DRAWNS, 'stroke-dash'): ((DRAWNS, 'name'),),
    (FORMNS, 'button'): ((FORMNS, 'id'),),
    (FORMNS, 'checkbox'): ((FORMNS, 'id'),),
    (FORMNS, 'combobox'): ((FORMNS, 'id'),),
    (FORMNS, 'connection-resource'): ((XLINKNS, 'href'),),
    (FORMNS, 'date'): ((FORMNS, 'id'),),
    (FORMNS, 'file'): ((FORMNS, 'id'),),
    (FORMNS, 'fixed-text'): ((FORMNS, 'id'),),
    (FORMNS, 'formatted-text'): ((FORMNS, 'id'),),
    (FORMNS, 'frame'): ((FORMNS, 'id'),),
    (FORMNS, 'generic-control'): ((FORMNS, 'id'),),
    (FORMNS, 'grid'): ((FORMNS, 'id'),),
    (FORMNS, 'hidden'): ((FORMNS, 'id'),),
    # required_attributes
    (FORMNS, 'image'): ((FORMNS, 'id'),),
    (FORMNS, 'image-frame'): ((FORMNS, 'id'),),
    (FORMNS, 'list-property'): ((FORMNS, 'property-name'),),
    (FORMNS, 'list-value'): ((OFFICENS, 'string-value'),),
    (FORMNS, 'listbox'): ((FORMNS, 'id'),),
    (FORMNS, 'number'): ((FORMNS, 'id'),),
    (FORMNS, 'password'): ((FORMNS, 'id'),),
    (FORMNS, 'property'): ((FORMNS, 'property-name'),),
    (FORMNS, 'radio'): ((FORMNS, 'id'),),
    (FORMNS, 'text'): ((FORMNS, 'id'),),
    (FORMNS, 'textarea'): ((FORMNS, 'id'),),
    (FORMNS, 'time'): ((FORMNS, 'id'),),
    (FORMNS, 'value-range'): ((FORMNS, 'id'),),
    (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, 'key-derivation'): (
        (MANIFESTNS, 'key-derivation-name'),
        (MANIFESTNS, 'salt'),
        (MANIFESTNS, 'iteration-count'),
    ),
    # required_attributes
    (METANS, 'template'): ((XLINKNS, 'href'),),
    (METANS, 'user-defined'): ((METANS, 'name'),),
    (OFFICENS, 'dde-source'): (
        (OFFICENS, 'dde-topic'),
        (OFFICENS, 'dde-application'),
        (OFFICENS, 'dde-item'),
    ),
    (OFFICENS, 'document'): ((OFFICENS, 'mimetype'),),
    (OFFICENS, 'script'): ((SCRIPTNS, 'language'),),
    (PRESENTATIONNS, 'date-time-decl'): (
        (PRESENTATIONNS, 'source'),
        (PRESENTATIONNS, 'name'),
    ),
    (PRESENTATIONNS, 'dim'): (
        (DRAWNS, 'color'),
        (DRAWNS, 'shape-id'),
    ),
    # required_attributes
    (PRESENTATIONNS, 'event-listener'): (
        (PRESENTATIONNS, 'action'),
        (SCRIPTNS, 'event-name'),
    ),
    (PRESENTATIONNS, 'footer-decl'): ((PRESENTATIONNS, 'name'),),
    (PRESENTATIONNS, 'header-decl'): ((PRESENTATIONNS, 'name'),),
    (PRESENTATIONNS, 'hide-shape'): ((DRAWNS, 'shape-id'),),
    (PRESENTATIONNS, 'hide-text'): ((DRAWNS, 'shape-id'),),
    (PRESENTATIONNS, 'placeholder'): (
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (SVGNS, 'height'),
        (PRESENTATIONNS, 'object'),
        (SVGNS, 'width'),
    ),
    (PRESENTATIONNS, 'play'): ((DRAWNS, 'shape-id'),),
    (PRESENTATIONNS, 'show'): (
        (PRESENTATIONNS, 'name'),
        (PRESENTATIONNS, 'pages'),
    ),
    (PRESENTATIONNS, 'show-shape'): ((DRAWNS, 'shape-id'),),
    (PRESENTATIONNS, 'show-text'): ((DRAWNS, 'shape-id'),),
    (PRESENTATIONNS, 'sound'): ((XLINKNS, 'href'),),
    (SCRIPTNS, 'event-listener'): (
        (SCRIPTNS, 'language'),
        (SCRIPTNS, 'event-name'),
    ),
    (STYLENS, 'column'): ((STYLENS, 'rel-width'),),
    # required_attributes
    (STYLENS, 'column-sep'): ((STYLENS, 'width'),),
    (STYLENS, 'columns'): ((FONS, 'column-count'),),
    (STYLENS, 'font-face'): ((STYLENS, 'name'),),
    (STYLENS, 'handout-master'): ((STYLENS, 'page-layout-name'),),
    (STYLENS, 'map'): (
        (STYLENS, 'apply-style-name'),
        (STYLENS, 'condition'),
    ),
    (STYLENS, 'master-page'): (
        (STYLENS, 'page-layout-name'),
        (STYLENS, 'name'),
    ),
    (STYLENS, 'page-layout'): ((STYLENS, 'name'),),
    (STYLENS, 'presentation-page-layout'): ((STYLENS, 'name'),),
    (STYLENS, 'style'): ((STYLENS, 'name'),),
    (STYLENS, 'tab-stop'): ((STYLENS, 'position'),),
    (SVGNS, 'definition-src'): ((XLINKNS, 'href'),),
    (SVGNS, 'font-face-uri'): ((XLINKNS, 'href'),),
    (SVGNS, 'linearGradient'): ((DRAWNS, 'name'),),
    (SVGNS, 'radialGradient'): ((DRAWNS, 'name'),),
    (SVGNS, 'stop'): ((SVGNS, 'offset'),),
    # required_attributes
    (TABLENS, 'body'): ((TEXTNS, 'style-name'),),
    (TABLENS, 'cell-address'): (
        (TABLENS, 'column'),
        (TABLENS, 'table'),
        (TABLENS, 'row'),
    ),
    (TABLENS, 'cell-content-change'): ((TABLENS, 'id'),),
    (TABLENS, 'cell-range-source'): (
        (TABLENS, 'last-row-spanned'),
        (TABLENS, 'last-column-spanned'),
        (XLINKNS, 'href'),
        (TABLENS, 'name'),
    ),
    (TABLENS, 'consolidation'): (
        (TABLENS, 'function'),
        (TABLENS, 'source-cell-range-addresses'),
        (TABLENS, 'target-cell-address'),
    ),
    (TABLENS, 'content-validation'): ((TABLENS, 'name'),),
    (TABLENS, 'data-pilot-display-info'): (
        (TABLENS, 'member-count'),
        (TABLENS, 'data-field'),
        (TABLENS, 'enabled'),
        (TABLENS, 'display-member-mode'),
    ),
    # required_attributes
    (TABLENS, 'data-pilot-field'): ((TABLENS, 'source-field-name'),),
    (TABLENS, 'data-pilot-field-reference'): (
        (TABLENS, 'field-name'),
        (TABLENS, 'type'),
    ),
    (TABLENS, 'data-pilot-group'): ((TABLENS, 'name'),),
    (TABLENS, 'data-pilot-group-member'): ((TABLENS, 'name'),),
    (TABLENS, 'data-pilot-groups'): (
        (TABLENS, 'source-field-name'),
        (TABLENS, 'step'),
        (TABLENS, 'grouped-by'),
    ),
    (TABLENS, 'data-pilot-layout-info'): (
        (TABLENS, 'add-empty-lines'),
        (TABLENS, 'layout-mode'),
    ),
    (TABLENS, 'data-pilot-member'): ((TABLENS, 'name'),),
    (TABLENS, 'data-pilot-sort-info'): ((TABLENS, 'order'),),
    (TABLENS, 'data-pilot-subtotal'): ((TABLENS, 'function'),),
    (TABLENS, 'data-pilot-table'): (
        (TABLENS, 'target-range-address'),
        (TABLENS, 'name'),
    ),
    (TABLENS, 'database-range'): ((TABLENS, 'target-range-address'),),
    # required_attributes
    (TABLENS, 'database-source-query'): (
        (TABLENS, 'query-name'),
        (TABLENS, 'database-name'),
    ),
    (TABLENS, 'database-source-sql'): (
        (TABLENS, 'database-name'),
        (TABLENS, 'sql-statement'),
    ),
    (TABLENS, 'database-source-table'): (
        (TABLENS, 'database-table-name'),
        (TABLENS, 'database-name'),
    ),
    (TABLENS, 'deletion'): (
        (TABLENS, 'position'),
        (TABLENS, 'type'),
        (TABLENS, 'id'),
    ),
    (TABLENS, 'dependency'): ((TABLENS, 'id'),),
    (TABLENS, 'even-columns'): ((TEXTNS, 'style-name'),),
    (TABLENS, 'even-rows'): ((TEXTNS, 'style-name'),),
    (TABLENS, 'filter-condition'): (
        (TABLENS, 'operator'),
        (TABLENS, 'field-number'),
        (TABLENS, 'value'),
    ),
    (TABLENS, 'first-column'): ((TEXTNS, 'style-name'),),
    (TABLENS, 'first-row'): ((TEXTNS, 'style-name'),),
    (TABLENS, 'insertion'): (
        (TABLENS, 'position'),
        (TABLENS, 'type'),
        (TABLENS, 'id'),
    ),
    (TABLENS, 'insertion-cut-off'): (
        (TABLENS, 'position'),
        (TABLENS, 'id'),
    ),
    # required_attributes
    (TABLENS, 'label-range'): (
        (TABLENS, 'label-cell-range-address'),
        (TABLENS, 'data-cell-range-address'),
        (TABLENS, 'orientation'),
    ),
    (TABLENS, 'last-column'): ((TEXTNS, 'style-name'),),
    (TABLENS, 'last-row'): ((TEXTNS, 'style-name'),),
    (TABLENS, 'movement'): ((TABLENS, 'id'),),
    (TABLENS, 'named-expression'): (
        (TABLENS, 'expression'),
        (TABLENS, 'name'),
    ),
    (TABLENS, 'named-range'): (
        (TABLENS, 'name'),
        (TABLENS, 'cell-range-address'),
    ),
    (TABLENS, 'odd-columns'): ((TEXTNS, 'style-name'),),
    (TABLENS, 'odd-rows'): ((TEXTNS, 'style-name'),),
    (TABLENS, 'operation'): (
        (TABLENS, 'index'),
        (TABLENS, 'name'),
    ),
    # required_attributes
    (TABLENS, 'scenario'): (
        (TABLENS, 'is-active'),
        (TABLENS, 'scenario-ranges'),
    ),
    (TABLENS, 'sort-by'): ((TABLENS, 'field-number'),),
    (TABLENS, 'source-cell-range'): ((TABLENS, 'cell-range-address'),),
    (TABLENS, 'source-service'): (
        (TABLENS, 'source-name'),
        (TABLENS, 'object-name'),
        (TABLENS, 'name'),
    ),
    (TABLENS, 'subtotal-field'): (
        (TABLENS, 'function'),
        (TABLENS, 'field-number'),
    ),
    (TABLENS, 'subtotal-rule'): ((TABLENS, 'group-by-field-number'),),
    (TABLENS, 'table-source'): ((XLINKNS, 'href'),),
    (TABLENS, 'table-template'): (
        (TEXTNS, 'last-row-end-column'),
        (TEXTNS, 'first-row-end-column'),
        (TEXTNS, 'name'),
        (TEXTNS, 'last-row-start-column'),
        (TEXTNS, 'first-row-start-column'),
    ),
    (TEXTNS, 'a'): ((XLINKNS, 'href'),),
    # required_attributes
    (TEXTNS, 'alphabetical-index'): ((TEXTNS, 'name'),),
    (TEXTNS, 'alphabetical-index-auto-mark-file'): ((XLINKNS, 'href'),),
    (TEXTNS, 'alphabetical-index-entry-template'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'alphabetical-index-mark'): ((TEXTNS, 'string-value'),),
    (TEXTNS, 'alphabetical-index-mark-end'): ((TEXTNS, 'id'),),
    (TEXTNS, 'alphabetical-index-mark-start'): ((TEXTNS, 'id'),),
    (TEXTNS, 'bibliography'): ((TEXTNS, 'name'),),
    (TEXTNS, 'bibliography-entry-template'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'bibliography-type'),
    ),
    (TEXTNS, 'bibliography-mark'): ((TEXTNS, 'bibliography-type'),),
    (TEXTNS, 'bookmark'): ((TEXTNS, 'name'),),
    # required_attributes
    (TEXTNS, 'bookmark-end'): ((TEXTNS, 'name'),),
    (TEXTNS, 'bookmark-start'): ((TEXTNS, 'name'),),
    (TEXTNS, 'change'): ((TEXTNS, 'change-id'),),
    (TEXTNS, 'change-end'): ((TEXTNS, 'change-id'),),
    (TEXTNS, 'change-start'): ((TEXTNS, 'change-id'),),
    (TEXTNS, 'changed-region'): ((TEXTNS, 'id'),),
    (TEXTNS, 'chapter'): (
        (TEXTNS, 'display'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'conditional-text'): (
        (TEXTNS, 'string-value-if-true'),
        (TEXTNS, 'string-value-if-false'),
        (TEXTNS, 'condition'),
    ),
    (TEXTNS, 'database-display'): (
        (TEXTNS, 'column-name'),
        (TEXTNS, 'table-name'),
    ),
    (TEXTNS, 'database-name'): ((TEXTNS, 'table-name'),),
    (TEXTNS, 'database-next'): ((TEXTNS, 'table-name'),),
    (TEXTNS, 'database-row-number'): ((TEXTNS, 'table-name'),),
    (TEXTNS, 'database-row-select'): ((TEXTNS, 'table-name'),),
    (TEXTNS, 'dde-connection'): ((TEXTNS, 'connection-name'),),
    # required_attributes
    (TEXTNS, 'dde-connection-decl'): (
        (OFFICENS, 'dde-topic'),
        (OFFICENS, 'dde-application'),
        (OFFICENS, 'name'),
        (OFFICENS, 'dde-item'),
    ),
    (TEXTNS, 'h'): ((TEXTNS, 'outline-level'),),
    (TEXTNS, 'hidden-paragraph'): ((TEXTNS, 'condition'),),
    (TEXTNS, 'hidden-text'): (
        (TEXTNS, 'string-value'),
        (TEXTNS, 'condition'),
    ),
    (TEXTNS, 'illustration-index'): ((TEXTNS, 'name'),),
    (TEXTNS, 'illustration-index-entry-template'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'index-entry-bibliography'): ((TEXTNS, 'bibliography-data-field'),),
    (TEXTNS, 'index-source-style'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'index-source-styles'): ((TEXTNS, 'outline-level'),),
    (TEXTNS, 'index-title'): ((TEXTNS, 'name'),),
    (TEXTNS, 'list-level-style-bullet'): (
        (TEXTNS, 'bullet-char'),
        (TEXTNS, 'level'),
    ),
    (TEXTNS, 'list-level-style-image'): ((TEXTNS, 'level'),),
    (TEXTNS, 'list-level-style-number'): ((TEXTNS, 'level'),),
    (TEXTNS, 'list-style'): ((STYLENS, 'name'),),
    # required_attributes
    (TEXTNS, 'measure'): ((TEXTNS, 'kind'),),
    (TEXTNS, 'note'): ((TEXTNS, 'note-class'),),
    (TEXTNS, 'note-ref'): ((TEXTNS, 'note-class'),),
    (TEXTNS, 'notes-configuration'): ((TEXTNS, 'note-class'),),
    (TEXTNS, 'object-index'): ((TEXTNS, 'name'),),
    (TEXTNS, 'object-index-entry-template'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'outline-level-style'): ((TEXTNS, 'level'),),
    (TEXTNS, 'page'): ((TEXTNS, 'master-page-name'),),
    (TEXTNS, 'page-continuation'): ((TEXTNS, 'select-page'),),
    (TEXTNS, 'placeholder'): ((TEXTNS, 'placeholder-type'),),
    (TEXTNS, 'reference-mark'): ((TEXTNS, 'name'),),
    (TEXTNS, 'reference-mark-end'): ((TEXTNS, 'name'),),
    (TEXTNS, 'reference-mark-start'): ((TEXTNS, 'name'),),
    (TEXTNS, 'section'): ((TEXTNS, 'name'),),
    (TEXTNS, 'sequence'): ((TEXTNS, 'name'),),
    (TEXTNS, 'sequence-decl'): (
        (TEXTNS, 'display-outline-level'),
        (TEXTNS, 'name'),
    ),
    # required_attributes
    (TEXTNS, 'sort-key'): ((TEXTNS, 'key'),),
    (TEXTNS, 'table-index'): ((TEXTNS, 'name'),),
    (TEXTNS, 'table-index-entry-template'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'table-of-content'): ((TEXTNS, 'name'),),
    (TEXTNS, 'table-of-content-entry-template'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'toc-mark'): ((TEXTNS, 'string-value'),),
    (TEXTNS, 'toc-mark-end'): ((TEXTNS, 'id'),),
    (TEXTNS, 'toc-mark-start'): ((TEXTNS, 'id'),),
    (TEXTNS, 'user-defined'): ((TEXTNS, 'name'),),
    (TEXTNS, 'user-field-decl'): ((TEXTNS, 'name'),),
    (TEXTNS, 'user-field-get'): ((TEXTNS, 'name'),),
    (TEXTNS, 'user-field-input'): ((TEXTNS, 'name'),),
    (TEXTNS, 'user-index'): ((TEXTNS, 'name'),),
    (TEXTNS, 'user-index-entry-template'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'outline-level'),
    ),
    # required_attributes
    (TEXTNS, 'user-index-mark'): (
        (TEXTNS, 'index-name'),
        (TEXTNS, 'string-value'),
    ),
    (TEXTNS, 'user-index-mark-end'): ((TEXTNS, 'id'),),
    (TEXTNS, 'user-index-mark-start'): (
        (TEXTNS, 'index-name'),
        (TEXTNS, 'id'),
    ),
    (TEXTNS, 'user-index-source'): ((TEXTNS, 'index-name'),),
    (TEXTNS, 'variable-decl'): (
        (TEXTNS, 'name'),
        (OFFICENS, 'value-type'),
    ),
    (TEXTNS, 'variable-get'): ((TEXTNS, 'name'),),
    (TEXTNS, 'variable-input'): (
        (TEXTNS, 'name'),
        (OFFICENS, 'value-type'),
    ),
    (TEXTNS, 'variable-set'): ((TEXTNS, 'name'),),
    # required_attributes
}

# Empty list means the element has no allowed attributes
# None means anything goes

allowed_attributes = {
    (DCNS, 'creator'): (),
    (DCNS, 'date'): (),
    (DCNS, 'description'): (),
    (DCNS, 'language'): (),
    (DCNS, 'subject'): (),
    (DCNS, '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, 'math'): None,
    (XFORMSNS, 'model'): None,
    # allowed_attributes
    (ANIMNS, 'animate'): (
        (ANIMNS, 'formula'),
        (ANIMNS, 'sub-item'),
        (SMILNS, 'accelerate'),
        (SMILNS, 'accumulate'),
        (SMILNS, 'additive'),
        (SMILNS, 'attributeName'),
        (SMILNS, 'autoReverse'),
        (SMILNS, 'begin'),
        (SMILNS, 'by'),
        (SMILNS, 'calcMode'),
        (SMILNS, 'decelerate'),
        (SMILNS, 'dur'),
        (SMILNS, 'end'),
        (SMILNS, 'fill'),
        (SMILNS, 'fillDefault'),
        (SMILNS, 'from'),
        (SMILNS, 'keySplines'),
        (SMILNS, 'keyTimes'),
        (SMILNS, 'repeatCount'),
        (SMILNS, 'repeatDur'),
        (SMILNS, 'restart'),
        (SMILNS, 'restartDefault'),
        (SMILNS, 'targetElement'),
        (SMILNS, 'to'),
        (SMILNS, 'values'),
    ),
    # allowed_attributes
    (ANIMNS, 'animateColor'): (
        (ANIMNS, 'color-interpolation'),
        (ANIMNS, 'color-interpolation-direction'),
        (ANIMNS, 'formula'),
        (ANIMNS, 'sub-item'),
        (SMILNS, 'accelerate'),
        (SMILNS, 'accumulate'),
        (SMILNS, 'additive'),
        (SMILNS, 'attributeName'),
        (SMILNS, 'autoReverse'),
        (SMILNS, 'begin'),
        (SMILNS, 'by'),
        (SMILNS, 'calcMode'),
        (SMILNS, 'decelerate'),
        (SMILNS, 'dur'),
        (SMILNS, 'end'),
        (SMILNS, 'fill'),
        (SMILNS, 'fillDefault'),
        (SMILNS, 'from'),
        (SMILNS, 'keySplines'),
        (SMILNS, 'keyTimes'),
        (SMILNS, 'repeatCount'),
        (SMILNS, 'repeatDur'),
        (SMILNS, 'restart'),
        (SMILNS, 'restartDefault'),
        (SMILNS, 'targetElement'),
        (SMILNS, 'to'),
        (SMILNS, 'values'),
    ),
    # allowed_attributes
    (ANIMNS, 'animateMotion'): (
        (ANIMNS, 'formula'),
        (ANIMNS, 'sub-item'),
        (SMILNS, 'accelerate'),
        (SMILNS, 'accumulate'),
        (SMILNS, 'additive'),
        (SMILNS, 'attributeName'),
        (SMILNS, 'autoReverse'),
        (SMILNS, 'begin'),
        (SMILNS, 'by'),
        (SMILNS, 'calcMode'),
        (SMILNS, 'decelerate'),
        (SMILNS, 'dur'),
        (SMILNS, 'end'),
        (SMILNS, 'fill'),
        (SMILNS, 'fillDefault'),
        (SMILNS, 'from'),
        (SMILNS, 'keySplines'),
        (SMILNS, 'keyTimes'),
        (SMILNS, 'repeatCount'),
        (SMILNS, 'repeatDur'),
        (SMILNS, 'restart'),
        (SMILNS, 'restartDefault'),
        (SMILNS, 'targetElement'),
        (SMILNS, 'to'),
        (SMILNS, 'values'),
        (SVGNS, 'origin'),
        (SVGNS, 'path'),
    ),
    # allowed_attributes
    (ANIMNS, 'animateTransform'): (
        (ANIMNS, 'formula'),
        (ANIMNS, 'sub-item'),
        (SMILNS, 'accelerate'),
        (SMILNS, 'accumulate'),
        (SMILNS, 'additive'),
        (SMILNS, 'attributeName'),
        (SMILNS, 'autoReverse'),
        (SMILNS, 'begin'),
        (SMILNS, 'by'),
        (SMILNS, 'decelerate'),
        (SMILNS, 'dur'),
        (SMILNS, 'end'),
        (SMILNS, 'fill'),
        (SMILNS, 'fillDefault'),
        (SMILNS, 'from'),
        (SMILNS, 'repeatCount'),
        (SMILNS, 'repeatDur'),
        (SMILNS, 'restart'),
        (SMILNS, 'restartDefault'),
        (SMILNS, 'targetElement'),
        (SMILNS, 'to'),
        (SMILNS, 'values'),
        (SVGNS, 'type'),
    ),
    # allowed_attributes
    (ANIMNS, 'audio'): (
        (ANIMNS, 'audio-level'),
        (ANIMNS, 'id'),
        (PRESENTATIONNS, 'group-id'),
        (PRESENTATIONNS, 'master-element'),
        (PRESENTATIONNS, 'node-type'),
        (PRESENTATIONNS, 'preset-class'),
        (PRESENTATIONNS, 'preset-id'),
        (PRESENTATIONNS, 'preset-sub-type'),
        (SMILNS, 'begin'),
        (SMILNS, 'dur'),
        (SMILNS, 'end'),
        (SMILNS, 'repeatCount'),
        (SMILNS, 'repeatDur'),
        (XLINKNS, 'href'),
    ),
    (ANIMNS, 'command'): (
        (PRESENTATIONNS, 'node-type'),
        (SMILNS, 'begin'),
        (SMILNS, 'end'),
        (PRESENTATIONNS, 'group-id'),
        (PRESENTATIONNS, 'preset-class'),
        (PRESENTATIONNS, 'preset-id'),
        (ANIMNS, 'sub-item'),
        (ANIMNS, 'command'),
        (PRESENTATIONNS, 'preset-sub-type'),
        (SMILNS, 'targetElement'),
        (ANIMNS, 'id'),
        (PRESENTATIONNS, 'master-element'),
    ),
    # allowed_attributes
    (ANIMNS, 'iterate'): (
        (ANIMNS, 'id'),
        (ANIMNS, 'iterate-interval'),
        (ANIMNS, 'iterate-type'),
        (ANIMNS, 'sub-item'),
        (PRESENTATIONNS, 'group-id'),
        (PRESENTATIONNS, 'master-element'),
        (PRESENTATIONNS, 'node-type'),
        (PRESENTATIONNS, 'preset-class'),
        (PRESENTATIONNS, 'preset-id'),
        (PRESENTATIONNS, 'preset-sub-type'),
        (SMILNS, 'accelerate'),
        (SMILNS, 'autoReverse'),
        (SMILNS, 'begin'),
        (SMILNS, 'decelerate'),
        (SMILNS, 'dur'),
        (SMILNS, 'end'),
        (SMILNS, 'endsync'),
        (SMILNS, 'fill'),
        (SMILNS, 'fillDefault'),
        (SMILNS, 'repeatCount'),
        (SMILNS, 'repeatDur'),
        (SMILNS, 'restart'),
        (SMILNS, 'restartDefault'),
        (SMILNS, 'targetElement'),
    ),
    (ANIMNS, 'par'): (
        (PRESENTATIONNS, 'node-type'),
        (SMILNS, 'decelerate'),
        (SMILNS, 'begin'),
        (SMILNS, 'end'),
        (PRESENTATIONNS, 'group-id'),
        (SMILNS, 'accelerate'),
        (SMILNS, 'repeatDur'),
        (SMILNS, 'repeatCount'),
        (SMILNS, 'autoReverse'),
        (PRESENTATIONNS, 'preset-class'),
        (SMILNS, 'fillDefault'),
        (PRESENTATIONNS, 'preset-id'),
        (PRESENTATIONNS, 'preset-sub-type'),
        (SMILNS, 'restartDefault'),
        (SMILNS, 'endsync'),
        (SMILNS, 'dur'),
        (SMILNS, 'fill'),
        (ANIMNS, 'id'),
        (SMILNS, 'restart'),
        (PRESENTATIONNS, 'master-element'),
    ),
    # allowed_attributes
    (ANIMNS, 'param'): (
        (ANIMNS, 'name'),
        (ANIMNS, 'value'),
    ),
    (ANIMNS, 'seq'): (
        (ANIMNS, 'id'),
        (PRESENTATIONNS, 'group-id'),
        (PRESENTATIONNS, 'master-element'),
        (PRESENTATIONNS, 'node-type'),
        (PRESENTATIONNS, 'preset-class'),
        (PRESENTATIONNS, 'preset-id'),
        (PRESENTATIONNS, 'preset-sub-type'),
        (SMILNS, 'accelerate'),
        (SMILNS, 'autoReverse'),
        (SMILNS, 'begin'),
        (SMILNS, 'decelerate'),
        (SMILNS, 'dur'),
        (SMILNS, 'end'),
        (SMILNS, 'endsync'),
        (SMILNS, 'fill'),
        (SMILNS, 'fillDefault'),
        (SMILNS, 'repeatCount'),
        (SMILNS, 'repeatDur'),
        (SMILNS, 'restart'),
        (SMILNS, 'restartDefault'),
    ),
    (ANIMNS, 'set'): (
        (ANIMNS, 'sub-item'),
        (SMILNS, 'accelerate'),
        (SMILNS, 'accumulate'),
        (SMILNS, 'autoReverse'),
        (SMILNS, 'additive'),
        (SMILNS, 'attributeName'),
        (SMILNS, 'begin'),
        (SMILNS, 'decelerate'),
        (SMILNS, 'dur'),
        (SMILNS, 'end'),
        (SMILNS, 'fill'),
        (SMILNS, 'fillDefault'),
        (SMILNS, 'repeatCount'),
        (SMILNS, 'repeatDur'),
        (SMILNS, 'restart'),
        (SMILNS, 'restartDefault'),
        (SMILNS, 'targetElement'),
        (SMILNS, 'to'),
    ),
    # allowed_attributes
    (ANIMNS, 'transitionFilter'): (
        (ANIMNS, 'formula'),
        (ANIMNS, 'sub-item'),
        (SMILNS, 'accelerate'),
        (SMILNS, 'accumulate'),
        (SMILNS, 'additive'),
        (SMILNS, 'autoReverse'),
        (SMILNS, 'begin'),
        (SMILNS, 'by'),
        (SMILNS, 'calcMode'),
        (SMILNS, 'decelerate'),
        (SMILNS, 'direction'),
        (SMILNS, 'dur'),
        (SMILNS, 'end'),
        (SMILNS, 'fadeColor'),
        (SMILNS, 'fill'),
        (SMILNS, 'fillDefault'),
        (SMILNS, 'from'),
        (SMILNS, 'mode'),
        (SMILNS, 'repeatCount'),
        (SMILNS, 'repeatDur'),
        (SMILNS, 'restart'),
        (SMILNS, 'restartDefault'),
        (SMILNS, 'subtype'),
        (SMILNS, 'targetElement'),
        (SMILNS, 'to'),
        (SMILNS, 'type'),
        (SMILNS, 'values'),
    ),
    # allowed_attributes
    (CHARTNS, 'axis'): (
        (CHARTNS, 'style-name'),
        (CHARTNS, 'dimension'),
        (CHARTNS, 'name'),
    ),
    (CHARTNS, 'categories'): ((TABLENS, 'cell-range-address'),),
    (CHARTNS, 'chart'): (
        (CHARTNS, 'column-mapping'),
        (CHARTNS, 'row-mapping'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (CHARTNS, 'style-name'),
        (CHARTNS, 'class'),
    ),
    (CHARTNS, 'data-point'): (
        (CHARTNS, 'repeated'),
        (CHARTNS, 'style-name'),
    ),
    (CHARTNS, 'domain'): ((TABLENS, 'cell-range-address'),),
    (CHARTNS, 'error-indicator'): ((CHARTNS, 'style-name'),),
    (CHARTNS, 'floor'): (
        (SVGNS, 'width'),
        (CHARTNS, 'style-name'),
    ),
    # allowed_attributes
    (CHARTNS, 'footer'): (
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'cell-range'),
        (CHARTNS, 'style-name'),
    ),
    (CHARTNS, 'grid'): (
        (CHARTNS, 'style-name'),
        (CHARTNS, 'class'),
    ),
    (CHARTNS, 'legend'): (
        (CHARTNS, 'legend-align'),
        (STYLENS, 'legend-expansion-aspect-ratio'),
        (STYLENS, 'legend-expansion'),
        (CHARTNS, 'legend-position'),
        (CHARTNS, 'style-name'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
    ),
    (CHARTNS, 'mean-value'): ((CHARTNS, 'style-name'),),
    (CHARTNS, 'plot-area'): (
        (DR3DNS, 'ambient-color'),
        (DR3DNS, 'distance'),
        (DR3DNS, 'vrp'),
        (DR3DNS, 'focal-length'),
        (CHARTNS, 'data-source-has-labels'),
        (DR3DNS, 'lighting-mode'),
        (DR3DNS, 'shade-mode'),
        (DR3DNS, 'transform'),
        (DR3DNS, 'shadow-slant'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (CHARTNS, 'style-name'),
        (DR3DNS, 'vup'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (DR3DNS, 'vpn'),
        (TABLENS, 'cell-range-address'),
        (DR3DNS, 'projection'),
    ),
    (CHARTNS, 'regression-curve'): ((CHARTNS, 'style-name'),),
    (CHARTNS, 'series'): (
        (CHARTNS, 'style-name'),
        (CHARTNS, 'attached-axis'),
        (CHARTNS, 'values-cell-range-address'),
        (CHARTNS, 'label-cell-address'),
        (CHARTNS, 'class'),
    ),
    (CHARTNS, 'stock-gain-marker'): ((CHARTNS, 'style-name'),),
    # allowed_attributes
    (CHARTNS, 'stock-loss-marker'): ((CHARTNS, 'style-name'),),
    (CHARTNS, 'stock-range-line'): ((CHARTNS, 'style-name'),),
    (CHARTNS, 'subtitle'): (
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'cell-range'),
        (CHARTNS, 'style-name'),
    ),
    (CHARTNS, 'symbol-image'): ((XLINKNS, 'href'),),
    (CHARTNS, 'title'): (
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'cell-range'),
        (CHARTNS, 'style-name'),
    ),
    (CHARTNS, 'wall'): (
        (SVGNS, 'width'),
        (CHARTNS, 'style-name'),
    ),
    (CONFIGNS, 'config-item'): (
        (CONFIGNS, 'type'),
        (CONFIGNS, 'name'),
    ),
    (CONFIGNS, 'config-item-map-entry'): ((CONFIGNS, 'name'),),
    (CONFIGNS, 'config-item-map-indexed'): ((CONFIGNS, 'name'),),
    (CONFIGNS, 'config-item-map-named'): ((CONFIGNS, 'name'),),
    (CONFIGNS, 'config-item-set'): ((CONFIGNS, 'name'),),
    # allowed_attributes
    (NUMBERNS, 'am-pm'): (),
    (NUMBERNS, 'boolean'): (),
    (NUMBERNS, 'boolean-style'): (
        (NUMBERNS, 'transliteration-language'),
        (STYLENS, 'name'),
        (STYLENS, 'display-name'),
        (NUMBERNS, 'language'),
        (NUMBERNS, 'title'),
        (NUMBERNS, 'country'),
        (NUMBERNS, 'transliteration-format'),
        (NUMBERNS, 'transliteration-style'),
        (STYLENS, 'volatile'),
        (NUMBERNS, 'transliteration-country'),
    ),
    (NUMBERNS, 'currency-style'): (
        (NUMBERNS, 'transliteration-language'),
        (STYLENS, 'name'),
        (STYLENS, 'display-name'),
        (NUMBERNS, 'language'),
        (NUMBERNS, 'title'),
        (NUMBERNS, 'country'),
        (NUMBERNS, 'transliteration-format'),
        (NUMBERNS, 'transliteration-style'),
        (STYLENS, 'volatile'),
        (NUMBERNS, 'transliteration-country'),
        (NUMBERNS, 'automatic-order'),
    ),
    (NUMBERNS, 'currency-symbol'): (
        (NUMBERNS, 'country'),
        (NUMBERNS, 'language'),
    ),
    # allowed_attributes
    (NUMBERNS, 'date-style'): (
        (NUMBERNS, 'transliteration-language'),
        (STYLENS, 'name'),
        (STYLENS, 'display-name'),
        (NUMBERNS, 'language'),
        (NUMBERNS, 'title'),
        (NUMBERNS, 'country'),
        (NUMBERNS, 'transliteration-format'),
        (NUMBERNS, 'transliteration-style'),
        (NUMBERNS, 'format-source'),
        (STYLENS, 'volatile'),
        (NUMBERNS, 'transliteration-country'),
        (NUMBERNS, 'automatic-order'),
    ),
    (NUMBERNS, 'day'): (
        (NUMBERNS, 'style'),
        (NUMBERNS, 'calendar'),
    ),
    (NUMBERNS, 'day-of-week'): (
        (NUMBERNS, 'style'),
        (NUMBERNS, 'calendar'),
    ),
    (NUMBERNS, 'embedded-text'): ((NUMBERNS, 'position'),),
    (NUMBERNS, 'era'): (
        (NUMBERNS, 'style'),
        (NUMBERNS, 'calendar'),
    ),
    (NUMBERNS, 'fraction'): (
        (NUMBERNS, 'grouping'),
        (NUMBERNS, 'min-denominator-digits'),
        (NUMBERNS, 'min-numerator-digits'),
        (NUMBERNS, 'min-integer-digits'),
        (NUMBERNS, 'denominator-value'),
    ),
    (NUMBERNS, 'hours'): ((NUMBERNS, 'style'),),
    # allowed_attributes
    (NUMBERNS, 'minutes'): ((NUMBERNS, 'style'),),
    (NUMBERNS, 'month'): (
        (NUMBERNS, 'style'),
        (NUMBERNS, 'calendar'),
        (NUMBERNS, 'possessive-form'),
        (NUMBERNS, 'textual'),
    ),
    (NUMBERNS, 'number'): (
        (NUMBERNS, 'display-factor'),
        (NUMBERNS, 'decimal-places'),
        (NUMBERNS, 'decimal-replacement'),
        (NUMBERNS, 'min-integer-digits'),
        (NUMBERNS, 'grouping'),
    ),
    (NUMBERNS, 'number-style'): (
        (NUMBERNS, 'transliteration-language'),
        (STYLENS, 'name'),
        (STYLENS, 'display-name'),
        (NUMBERNS, 'language'),
        (NUMBERNS, 'title'),
        (NUMBERNS, 'country'),
        (NUMBERNS, 'transliteration-format'),
        (NUMBERNS, 'transliteration-style'),
        (STYLENS, 'volatile'),
        (NUMBERNS, 'transliteration-country'),
    ),
    # allowed_attributes
    (NUMBERNS, 'percentage-style'): (
        (NUMBERNS, 'transliteration-language'),
        (STYLENS, 'name'),
        (STYLENS, 'display-name'),
        (NUMBERNS, 'language'),
        (NUMBERNS, 'title'),
        (NUMBERNS, 'country'),
        (NUMBERNS, 'transliteration-format'),
        (NUMBERNS, 'transliteration-style'),
        (STYLENS, 'volatile'),
        (NUMBERNS, 'transliteration-country'),
    ),
    (NUMBERNS, 'quarter'): (
        (NUMBERNS, 'style'),
        (NUMBERNS, 'calendar'),
    ),
    (NUMBERNS, 'scientific-number'): (
        (NUMBERNS, 'min-exponent-digits'),
        (NUMBERNS, 'decimal-places'),
        (NUMBERNS, 'min-integer-digits'),
        (NUMBERNS, 'grouping'),
    ),
    (NUMBERNS, 'seconds'): (
        (NUMBERNS, 'style'),
        (NUMBERNS, 'decimal-places'),
    ),
    (NUMBERNS, 'text'): (),
    (NUMBERNS, 'text-content'): (),
    (NUMBERNS, 'text-style'): (
        (NUMBERNS, 'transliteration-language'),
        (STYLENS, 'name'),
        (STYLENS, 'display-name'),
        (NUMBERNS, 'language'),
        (NUMBERNS, 'title'),
        (NUMBERNS, 'country'),
        (NUMBERNS, 'transliteration-format'),
        (NUMBERNS, 'transliteration-style'),
        (STYLENS, 'volatile'),
        (NUMBERNS, 'transliteration-country'),
    ),
    (NUMBERNS, 'time-style'): (
        (NUMBERNS, 'transliteration-language'),
        (NUMBERNS, 'transliteration-format'),
        (STYLENS, 'name'),
        (STYLENS, 'display-name'),
        (NUMBERNS, 'language'),
        (NUMBERNS, 'title'),
        (NUMBERNS, 'country'),
        (NUMBERNS, 'truncate-on-overflow'),
        (NUMBERNS, 'transliteration-style'),
        (NUMBERNS, 'format-source'),
        (STYLENS, 'volatile'),
        (NUMBERNS, 'transliteration-country'),
    ),
    (NUMBERNS, 'week-of-year'): ((NUMBERNS, 'calendar'),),
    (NUMBERNS, 'year'): (
        (NUMBERNS, 'style'),
        (NUMBERNS, 'calendar'),
    ),
    (DR3DNS, 'cube'): (
        (DR3DNS, 'min-edge'),
        (DR3DNS, 'max-edge'),
        (DRAWNS, 'layer'),
        (DR3DNS, 'transform'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (DRAWNS, 'id'),
    ),
    (DR3DNS, 'extrude'): (
        (DRAWNS, 'layer'),
        (SVGNS, 'd'),
        (DR3DNS, 'transform'),
        (SVGNS, 'viewBox'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (DRAWNS, 'id'),
    ),
    (DR3DNS, 'light'): (
        (DR3DNS, 'diffuse-color'),
        (DR3DNS, 'direction'),
        (DR3DNS, 'specular'),
        (DR3DNS, 'enabled'),
    ),
    (DR3DNS, 'rotate'): (
        (DRAWNS, 'layer'),
        (SVGNS, 'd'),
        (DR3DNS, 'transform'),
        (SVGNS, 'viewBox'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (DRAWNS, 'id'),
    ),
    # allowed_attributes
    (DR3DNS, 'scene'): (
        (DR3DNS, 'ambient-color'),
        (DR3DNS, 'distance'),
        (DR3DNS, 'focal-length'),
        (DR3DNS, 'lighting-mode'),
        (DR3DNS, 'projection'),
        (DR3DNS, 'shade-mode'),
        (DR3DNS, 'shadow-slant'),
        (DR3DNS, 'transform'),
        (DR3DNS, 'vpn'),
        (DR3DNS, 'vrp'),
        (DR3DNS, 'vup'),
        (DRAWNS, 'id'),
        (DRAWNS, 'caption-id'),
        (DRAWNS, 'layer'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (PRESENTATIONNS, 'style-name'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (SVGNS, 'x'),
        (SVGNS, 'y'),
        (TABLENS, 'end-cell-address'),
        (TABLENS, 'end-x'),
        (TABLENS, 'end-y'),
        (TABLENS, 'table-background'),
        (TEXTNS, 'anchor-page-number'),
        (TEXTNS, 'anchor-type'),
    ),
    (DR3DNS, 'sphere'): (
        (DRAWNS, 'layer'),
        (DR3DNS, 'center'),
        (DR3DNS, 'transform'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (DRAWNS, 'id'),
        (DR3DNS, 'size'),
    ),
    (DRAWNS, 'a'): (
        (OFFICENS, 'name'),
        (OFFICENS, 'title'),
        (XLINKNS, 'show'),
        (OFFICENS, 'target-frame-name'),
        (XLINKNS, 'actuate'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
        (OFFICENS, 'server-map'),
    ),
    (DRAWNS, 'applet'): (
        (DRAWNS, 'code'),
        (XLINKNS, 'show'),
        (DRAWNS, 'object'),
        (XLINKNS, 'actuate'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
        (DRAWNS, 'archive'),
        (DRAWNS, 'may-script'),
    ),
    (DRAWNS, 'area-circle'): (
        (OFFICENS, 'name'),
        (XLINKNS, 'show'),
        (SVGNS, 'cx'),
        (XLINKNS, 'type'),
        (DRAWNS, 'nohref'),
        (SVGNS, 'cy'),
        (XLINKNS, 'href'),
        (SVGNS, 'r'),
        (OFFICENS, 'target-frame-name'),
    ),
    (DRAWNS, 'area-polygon'): (
        (OFFICENS, 'name'),
        (XLINKNS, 'show'),
        (XLINKNS, 'type'),
        (SVGNS, 'height'),
        (DRAWNS, 'nohref'),
        (SVGNS, 'width'),
        (XLINKNS, 'href'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (OFFICENS, 'target-frame-name'),
        (SVGNS, 'viewBox'),
        (DRAWNS, 'points'),
    ),
    (DRAWNS, 'area-rectangle'): (
        (OFFICENS, 'name'),
        (XLINKNS, 'show'),
        (XLINKNS, 'type'),
        (SVGNS, 'height'),
        (DRAWNS, 'nohref'),
        (SVGNS, 'width'),
        (XLINKNS, 'href'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (OFFICENS, 'target-frame-name'),
    ),
    (DRAWNS, 'caption'): (
        (TABLENS, 'table-background'),
        (DRAWNS, 'layer'),
        (DRAWNS, 'caption-id'),
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'name'),
        (DRAWNS, 'text-style-name'),
        (DRAWNS, 'caption-point-y'),
        (DRAWNS, 'caption-point-x'),
        (DRAWNS, 'transform'),
        (TABLENS, 'end-y'),
        (DRAWNS, 'corner-radius'),
        (SVGNS, 'width'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (TABLENS, 'end-x'),
        (TEXTNS, 'anchor-page-number'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (SVGNS, 'height'),
        (DRAWNS, 'id'),
        (TEXTNS, 'anchor-type'),
    ),
    (DRAWNS, 'circle'): (
        (DRAWNS, 'end-angle'),
        (DRAWNS, 'id'),
        (DRAWNS, 'kind'),
        (DRAWNS, 'layer'),
        (DRAWNS, 'name'),
        (DRAWNS, 'start-angle'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (DRAWNS, 'caption-id'),
        (DRAWNS, 'text-style-name'),
        (DRAWNS, 'transform'),
        (DRAWNS, 'z-index'),
        (PRESENTATIONNS, 'class-names'),
        (PRESENTATIONNS, 'style-name'),
        (SVGNS, 'cx'),
        (SVGNS, 'cy'),
        (SVGNS, 'height'),
        (SVGNS, 'r'),
        (SVGNS, 'width'),
        (SVGNS, 'x'),
        (SVGNS, 'y'),
        (TABLENS, 'end-cell-address'),
        (TABLENS, 'end-x'),
        (TABLENS, 'end-y'),
        (TABLENS, 'table-background'),
        (TEXTNS, 'anchor-page-number'),
        (TEXTNS, 'anchor-type'),
    ),
    (DRAWNS, 'connector'): (
        (DRAWNS, 'layer'),
        (DRAWNS, 'end-shape'),
        (TEXTNS, 'anchor-page-number'),
        (SVGNS, 'y1'),
        (SVGNS, 'y2'),
        (TABLENS, 'table-background'),
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'transform'),
        (DRAWNS, 'id'),
        (TABLENS, 'end-y'),
        (TABLENS, 'end-x'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (DRAWNS, 'caption-id'),
        (DRAWNS, 'type'),
        (DRAWNS, 'start-shape'),
        (DRAWNS, 'z-index'),
        (PRESENTATIONNS, 'style-name'),
        (DRAWNS, 'start-glue-point'),
        (SVGNS, 'x2'),
        (SVGNS, 'x1'),
        (TEXTNS, 'anchor-type'),
        (DRAWNS, 'line-skew'),
        (DRAWNS, 'name'),
        (DRAWNS, 'end-glue-point'),
        (DRAWNS, 'text-style-name'),
    ),
    (DRAWNS, 'contour-path'): (
        (SVGNS, 'd'),
        (SVGNS, 'width'),
        (DRAWNS, 'recreate-on-edit'),
        (SVGNS, 'viewBox'),
        (SVGNS, 'height'),
    ),
    (DRAWNS, 'contour-polygon'): (
        (SVGNS, 'width'),
        (DRAWNS, 'points'),
        (DRAWNS, 'recreate-on-edit'),
        (SVGNS, 'viewBox'),
        (SVGNS, 'height'),
    ),
    (DRAWNS, 'control'): (
        (DRAWNS, 'control'),
        (DRAWNS, 'layer'),
        (DRAWNS, 'caption-id'),
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'name'),
        (DRAWNS, 'text-style-name'),
        (TABLENS, 'table-background'),
        (DRAWNS, 'transform'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (TABLENS, 'end-x'),
        (TEXTNS, 'anchor-page-number'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'end-y'),
        (DRAWNS, 'id'),
        (TEXTNS, 'anchor-type'),
    ),
    (DRAWNS, 'custom-shape'): (
        (DRAWNS, 'engine'),
        (DRAWNS, 'caption-id'),
        (DRAWNS, 'layer'),
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'name'),
        (DRAWNS, 'text-style-name'),
        (TABLENS, 'table-background'),
        (DRAWNS, 'transform'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (TABLENS, 'end-x'),
        (TEXTNS, 'anchor-page-number'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'end-y'),
        (DRAWNS, 'data'),
        (DRAWNS, 'id'),
        (TEXTNS, 'anchor-type'),
    ),
    # allowed_attributes
    (DRAWNS, 'ellipse'): (
        (DRAWNS, 'layer'),
        (DRAWNS, 'start-angle'),
        (SVGNS, 'cy'),
        (SVGNS, 'cx'),
        (TABLENS, 'table-background'),
        (TABLENS, 'end-cell-address'),
        (SVGNS, 'rx'),
        (DRAWNS, 'transform'),
        (DRAWNS, 'id'),
        (SVGNS, 'width'),
        (TABLENS, 'end-y'),
        (TABLENS, 'end-x'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (DRAWNS, 'end-angle'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'caption-id'),
        (PRESENTATIONNS, 'style-name'),
        (SVGNS, 'height'),
        (TEXTNS, 'anchor-type'),
        (SVGNS, 'ry'),
        (DRAWNS, 'kind'),
        (DRAWNS, 'name'),
        (TEXTNS, 'anchor-page-number'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (DRAWNS, 'text-style-name'),
    ),
    # allowed_attributes
    (DRAWNS, 'enhanced-geometry'): (
        (DRAWNS, 'extrusion-rotation-center'),
        (DRAWNS, 'extrusion-shininess'),
        (DRAWNS, 'extrusion-rotation-angle'),
        (DRAWNS, 'extrusion-allowed'),
        (DRAWNS, 'extrusion-first-light-level'),
        (DRAWNS, 'extrusion-specularity'),
        (DRAWNS, 'extrusion-viewpoint'),
        (DRAWNS, 'extrusion-second-light-level'),
        (DRAWNS, 'extrusion-origin'),
        (DRAWNS, 'extrusion-color'),
        (SVGNS, 'viewBox'),
        (DR3DNS, 'projection'),
        (DRAWNS, 'extrusion-metal'),
        (DRAWNS, 'extrusion-number-of-line-segments'),
        (DRAWNS, 'text-path-same-letter-heights'),
        (DRAWNS, 'extrusion-first-light-harsh'),
        (DRAWNS, 'enhanced-path'),
        (DRAWNS, 'text-rotate-angle'),
        (DRAWNS, 'type'),
        (DRAWNS, 'glue-point-leaving-directions'),
        (DRAWNS, 'concentric-gradient-fill-allowed'),
        (DRAWNS, 'text-path-scale'),
        (DRAWNS, 'extrusion-brightness'),
        (DRAWNS, 'extrusion-first-light-direction'),
        (DRAWNS, 'extrusion-light-face'),
        (DRAWNS, 'text-path-allowed'),
        (DRAWNS, 'glue-points'),
        (DRAWNS, 'mirror-vertical'),
        (DRAWNS, 'extrusion-depth'),
        (DRAWNS, 'extrusion-diffusion'),
        (DRAWNS, 'extrusion-second-light-direction'),
        (DRAWNS, 'extrusion-skew'),
        (DR3DNS, 'shade-mode'),
        (DRAWNS, 'path-stretchpoint-y'),
        (DRAWNS, 'modifiers'),
        (DRAWNS, 'extrusion'),
        (DRAWNS, 'path-stretchpoint-x'),
        (DRAWNS, 'text-areas'),
        (DRAWNS, 'mirror-horizontal'),
        (DRAWNS, 'text-path-mode'),
        (DRAWNS, 'extrusion-second-light-harsh'),
        (DRAWNS, 'glue-point-type'),
        (DRAWNS, 'text-path'),
    ),
    # allowed_attributes
    (DRAWNS, 'equation'): (
        (DRAWNS, 'formula'),
        (DRAWNS, 'name'),
    ),
    (DRAWNS, 'fill-image'): (
        (DRAWNS, 'name'),
        (XLINKNS, 'show'),
        (XLINKNS, 'actuate'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (XLINKNS, 'href'),
        (DRAWNS, 'display-name'),
        (XLINKNS, 'type'),
    ),
    (DRAWNS, 'floating-frame'): (
        (XLINKNS, 'href'),
        (XLINKNS, 'actuate'),
        (DRAWNS, 'frame-name'),
        (XLINKNS, 'type'),
        (XLINKNS, 'show'),
    ),
    (DRAWNS, 'frame'): (
        (DRAWNS, 'copy-of'),
        (DRAWNS, 'id'),
        (DRAWNS, 'layer'),
        (DRAWNS, 'name'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'caption-id'),
        (DRAWNS, 'style-name'),
        (DRAWNS, 'text-style-name'),
        (DRAWNS, 'transform'),
        (DRAWNS, 'z-index'),
        (PRESENTATIONNS, 'class'),
        (PRESENTATIONNS, 'class-names'),
        (PRESENTATIONNS, 'placeholder'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'user-transformed'),
        (STYLENS, 'rel-height'),
        (STYLENS, 'rel-width'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (SVGNS, 'x'),
        (SVGNS, 'y'),
        (TABLENS, 'end-cell-address'),
        (TABLENS, 'end-x'),
        (TABLENS, 'end-y'),
        (TABLENS, 'table-background'),
        (TEXTNS, 'anchor-page-number'),
        (TEXTNS, 'anchor-type'),
    ),
    # allowed_attributes
    (DRAWNS, 'g'): (
        (DRAWNS, 'id'),
        (DRAWNS, 'caption-id'),
        (DRAWNS, 'name'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (DRAWNS, 'z-index'),
        (PRESENTATIONNS, 'class-names'),
        (PRESENTATIONNS, 'style-name'),
        (SVGNS, 'y'),
        (TABLENS, 'end-cell-address'),
        (TABLENS, 'end-x'),
        (TABLENS, 'end-y'),
        (TABLENS, 'table-background'),
        (TEXTNS, 'anchor-page-number'),
        (TEXTNS, 'anchor-type'),
    ),
    (DRAWNS, 'glue-point'): (
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (DRAWNS, 'align'),
        (DRAWNS, 'id'),
        (DRAWNS, 'escape-direction'),
    ),
    (DRAWNS, 'gradient'): (
        (DRAWNS, 'style'),
        (DRAWNS, 'angle'),
        (DRAWNS, 'name'),
        (DRAWNS, 'end-color'),
        (DRAWNS, 'start-color'),
        (DRAWNS, 'cy'),
        (DRAWNS, 'cx'),
        (DRAWNS, 'display-name'),
        (DRAWNS, 'border'),
        (DRAWNS, 'end-intensity'),
        (DRAWNS, 'start-intensity'),
    ),
    (DRAWNS, 'handle'): (
        (DRAWNS, 'handle-radius-range-minimum'),
        (DRAWNS, 'handle-switched'),
        (DRAWNS, 'handle-range-y-maximum'),
        (DRAWNS, 'handle-mirror-horizontal'),
        (DRAWNS, 'handle-range-x-maximum'),
        (DRAWNS, 'handle-mirror-vertical'),
        (DRAWNS, 'handle-range-y-minimum'),
        (DRAWNS, 'handle-radius-range-maximum'),
        (DRAWNS, 'handle-range-x-minimum'),
        (DRAWNS, 'handle-position'),
        (DRAWNS, 'handle-polar'),
    ),
    (DRAWNS, 'hatch'): (
        (DRAWNS, 'distance'),
        (DRAWNS, 'style'),
        (DRAWNS, 'name'),
        (DRAWNS, 'color'),
        (DRAWNS, 'display-name'),
        (DRAWNS, 'rotation'),
    ),
    (DRAWNS, 'image'): (
        (DRAWNS, 'filter-name'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
        (XLINKNS, 'actuate'),
        (XLINKNS, 'show'),
    ),
    (DRAWNS, 'image-map'): (),
    (DRAWNS, 'layer'): (
        (DRAWNS, 'protected'),
        (DRAWNS, 'name'),
        (DRAWNS, 'display'),
    ),
    # allowed_attributes
    (DRAWNS, 'layer-set'): (),
    (DRAWNS, 'line'): (
        (DRAWNS, 'class-names'),
        (DRAWNS, 'id'),
        (DRAWNS, 'caption-id'),
        (DRAWNS, 'layer'),
        (DRAWNS, 'name'),
        (DRAWNS, 'style-name'),
        (DRAWNS, 'text-style-name'),
        (DRAWNS, 'transform'),
        (DRAWNS, 'z-index'),
        (PRESENTATIONNS, 'class-names'),
        (PRESENTATIONNS, 'style-name'),
        (SVGNS, 'x1'),
        (SVGNS, 'x2'),
        (SVGNS, 'y1'),
        (SVGNS, 'y2'),
        (TABLENS, 'end-cell-address'),
        (TABLENS, 'end-x'),
        (TABLENS, 'end-y'),
        (TABLENS, 'table-background'),
        (TEXTNS, 'anchor-page-number'),
        (TEXTNS, 'anchor-type'),
    ),
    (DRAWNS, 'marker'): (
        (SVGNS, 'd'),
        (DRAWNS, 'display-name'),
        (DRAWNS, 'name'),
        (SVGNS, 'viewBox'),
    ),
    # allowed_attributes
    (DRAWNS, 'measure'): (
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'layer'),
        (SVGNS, 'y2'),
        (DRAWNS, 'name'),
        (DRAWNS, 'text-style-name'),
        (DRAWNS, 'transform'),
        (TABLENS, 'table-background'),
        (SVGNS, 'x2'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (TABLENS, 'end-x'),
        (TEXTNS, 'anchor-page-number'),
        (SVGNS, 'y1'),
        (DRAWNS, 'caption-id'),
        (TABLENS, 'end-y'),
        (SVGNS, 'x1'),
        (DRAWNS, 'id'),
        (TEXTNS, 'anchor-type'),
    ),
    (DRAWNS, 'object'): (
        (XLINKNS, 'type'),
        (XLINKNS, 'href'),
        (DRAWNS, 'notify-on-update-of-ranges'),
        (XLINKNS, 'actuate'),
        (XLINKNS, 'show'),
    ),
    (DRAWNS, 'object-ole'): (
        (XLINKNS, 'actuate'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
        (DRAWNS, 'class-id'),
        (XLINKNS, 'show'),
    ),
    (DRAWNS, 'opacity'): (
        (DRAWNS, 'style'),
        (DRAWNS, 'angle'),
        (DRAWNS, 'name'),
        (DRAWNS, 'start'),
        (DRAWNS, 'cy'),
        (DRAWNS, 'cx'),
        (DRAWNS, 'end'),
        (DRAWNS, 'display-name'),
        (DRAWNS, 'border'),
    ),
    (DRAWNS, 'page'): (
        (PRESENTATIONNS, 'presentation-page-layout-name'),
        (DRAWNS, 'name'),
        (DRAWNS, 'nav-order'),
        (PRESENTATIONNS, 'use-footer-name'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'use-header-name'),
        (DRAWNS, 'master-page-name'),
        (DRAWNS, 'id'),
        (PRESENTATIONNS, 'use-date-time-name'),
    ),
    (DRAWNS, 'page-thumbnail'): (
        (TABLENS, 'table-background'),
        (DRAWNS, 'caption-id'),
        (PRESENTATIONNS, 'user-transformed'),
        (DRAWNS, 'layer'),
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'name'),
        (DRAWNS, 'id'),
        (DRAWNS, 'transform'),
        (DRAWNS, 'page-number'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (TABLENS, 'end-x'),
        (TEXTNS, 'anchor-page-number'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'end-y'),
        (PRESENTATIONNS, 'placeholder'),
        (PRESENTATIONNS, 'class'),
        (TEXTNS, 'anchor-type'),
    ),
    (DRAWNS, 'param'): (
        (DRAWNS, 'name'),
        (DRAWNS, 'value'),
    ),
    # allowed_attributes
    (DRAWNS, 'path'): (
        (TABLENS, 'table-background'),
        (DRAWNS, 'layer'),
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'caption-id'),
        (SVGNS, 'd'),
        (DRAWNS, 'text-style-name'),
        (DRAWNS, 'id'),
        (DRAWNS, 'transform'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (TABLENS, 'end-x'),
        (TEXTNS, 'anchor-type'),
        (TEXTNS, 'anchor-page-number'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'end-y'),
        (SVGNS, 'viewBox'),
        (DRAWNS, 'name'),
    ),
    (DRAWNS, 'plugin'): (
        (XLINKNS, 'type'),
        (XLINKNS, 'href'),
        (DRAWNS, 'mime-type'),
        (XLINKNS, 'actuate'),
        (XLINKNS, 'show'),
    ),
    (DRAWNS, 'polygon'): (
        (DRAWNS, 'caption-id'),
        (TABLENS, 'table-background'),
        (DRAWNS, 'layer'),
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'name'),
        (DRAWNS, 'text-style-name'),
        (DRAWNS, 'id'),
        (DRAWNS, 'transform'),
        (PRESENTATIONNS, 'style-name'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'points'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (TABLENS, 'end-x'),
        (TEXTNS, 'anchor-page-number'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'end-y'),
        (SVGNS, 'viewBox'),
        (TEXTNS, 'anchor-type'),
    ),
    # allowed_attributes
    (DRAWNS, 'polyline'): (
        (TABLENS, 'table-background'),
        (DRAWNS, 'layer'),
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'name'),
        (DRAWNS, 'text-style-name'),
        (DRAWNS, 'id'),
        (DRAWNS, 'caption-id'),
        (DRAWNS, 'transform'),
        (PRESENTATIONNS, 'style-name'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'points'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (TABLENS, 'end-x'),
        (TEXTNS, 'anchor-page-number'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'end-y'),
        (SVGNS, 'viewBox'),
        (TEXTNS, 'anchor-type'),
    ),
    (DRAWNS, 'rect'): (
        (DRAWNS, 'corner-radius'),
        (DRAWNS, 'caption-id'),
        (DRAWNS, 'id'),
        (DRAWNS, 'layer'),
        (DRAWNS, 'name'),
        (DRAWNS, 'text-style-name'),
        (DRAWNS, 'transform'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (PRESENTATIONNS, 'style-name'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (SVGNS, 'x'),
        (SVGNS, 'y'),
        (TABLENS, 'end-cell-address'),
        (TABLENS, 'end-x'),
        (TABLENS, 'end-y'),
        (TABLENS, 'table-background'),
        (TEXTNS, 'anchor-page-number'),
        (TEXTNS, 'anchor-type'),
    ),
    # allowed_attributes
    (DRAWNS, 'regular-polygon'): (
        (TABLENS, 'table-background'),
        (DRAWNS, 'layer'),
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'caption-id'),
        (DRAWNS, 'name'),
        (DRAWNS, 'text-style-name'),
        (TEXTNS, 'anchor-page-number'),
        (DRAWNS, 'concave'),
        (DRAWNS, 'sharpness'),
        (DRAWNS, 'transform'),
        (SVGNS, 'height'),
        (SVGNS, 'width'),
        (DRAWNS, 'z-index'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (TABLENS, 'end-x'),
        (DRAWNS, 'corners'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'end-y'),
        (DRAWNS, 'id'),
        (TEXTNS, 'anchor-type'),
    ),
    (DRAWNS, 'stroke-dash'): (
        (DRAWNS, 'distance'),
        (DRAWNS, 'dots1-length'),
        (DRAWNS, 'name'),
        (DRAWNS, 'dots2-length'),
        (DRAWNS, 'style'),
        (DRAWNS, 'dots1'),
        (DRAWNS, 'display-name'),
        (DRAWNS, 'dots2'),
    ),
    (DRAWNS, 'text-box'): (
        (FONS, 'min-width'),
        (DRAWNS, 'corner-radius'),
        (FONS, 'max-height'),
        (FONS, 'min-height'),
        (DRAWNS, 'chain-next-name'),
        (FONS, 'max-width'),
        (TEXTNS, 'id'),
    ),
    # allowed_attributes
    (FORMNS, 'button'): (
        (FORMNS, 'tab-stop'),
        (FORMNS, 'focus-on-click'),
        (FORMNS, 'image-align'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'button-type'),
        (FORMNS, 'title'),
        (FORMNS, 'default-button'),
        (FORMNS, 'value'),
        (FORMNS, 'label'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'image-data'),
        (XLINKNS, 'href'),
        (FORMNS, 'toggle'),
        (FORMNS, 'xforms-submission'),
        (OFFICENS, 'target-frame'),
        (FORMNS, 'id'),
        (FORMNS, 'image-position'),
    ),
    (FORMNS, 'checkbox'): (
        (FORMNS, 'tab-stop'),
        (FORMNS, 'image-align'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'data-field'),
        (FORMNS, 'title'),
        (FORMNS, 'is-tristate'),
        (FORMNS, 'current-state'),
        (FORMNS, 'value'),
        (FORMNS, 'label'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'state'),
        (FORMNS, 'visual-effect'),
        (FORMNS, 'id'),
        (FORMNS, 'image-position'),
    ),
    (FORMNS, 'column'): (
        (FORMNS, 'control-implementation'),
        (FORMNS, 'text-style-name'),
        (FORMNS, 'name'),
        (FORMNS, 'label'),
    ),
    (FORMNS, 'combobox'): (
        (FORMNS, 'convert-empty-to-null'),
        (FORMNS, 'max-length'),
        (FORMNS, 'tab-stop'),
        (FORMNS, 'name'),
        (FORMNS, 'dropdown'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'data-field'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'auto-complete'),
        (FORMNS, 'value'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'readonly'),
        (FORMNS, 'list-source'),
        (FORMNS, 'title'),
        (FORMNS, 'list-source-type'),
        (FORMNS, 'id'),
        (FORMNS, 'current-value'),
        (FORMNS, 'size'),
    ),
    # allowed_attributes
    (FORMNS, 'connection-resource'): ((XLINKNS, 'href'),),
    (FORMNS, 'date'): (
        (FORMNS, 'convert-empty-to-null'),
        (FORMNS, 'max-length'),
        (FORMNS, 'tab-stop'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (FORMNS, 'min-value'),
        (FORMNS, 'data-field'),
        (FORMNS, 'max-value'),
        (FORMNS, 'value'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'readonly'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'title'),
        (FORMNS, 'id'),
        (FORMNS, 'current-value'),
    ),
    (FORMNS, 'file'): (
        (FORMNS, 'max-length'),
        (FORMNS, 'tab-stop'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'title'),
        (FORMNS, 'value'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'readonly'),
        (FORMNS, 'id'),
        (FORMNS, 'current-value'),
    ),
    (FORMNS, 'fixed-text'): (
        (FORMNS, 'name'),
        (FORMNS, 'for'),
        (FORMNS, 'title'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'multi-line'),
        (FORMNS, 'label'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'id'),
    ),
    # allowed_attributes
    (FORMNS, 'form'): (
        (XLINKNS, 'actuate'),
        (XLINKNS, 'href'),
        (FORMNS, 'allow-deletes'),
        (FORMNS, 'command-type'),
        (FORMNS, 'apply-filter'),
        (XLINKNS, 'type'),
        (FORMNS, 'method'),
        (OFFICENS, 'target-frame'),
        (FORMNS, 'navigation-mode'),
        (FORMNS, 'detail-fields'),
        (FORMNS, 'master-fields'),
        (FORMNS, 'allow-updates'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-cycle'),
        (FORMNS, 'control-implementation'),
        (FORMNS, 'escape-processing'),
        (FORMNS, 'filter'),
        (FORMNS, 'command'),
        (FORMNS, 'datasource'),
        (FORMNS, 'enctype'),
        (FORMNS, 'allow-inserts'),
        (FORMNS, 'ignore-result'),
        (FORMNS, 'order'),
    ),
    (FORMNS, 'formatted-text'): (
        (FORMNS, 'convert-empty-to-null'),
        (FORMNS, 'max-length'),
        (FORMNS, 'tab-stop'),
        (FORMNS, 'max-value'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'data-field'),
        (FORMNS, 'title'),
        (FORMNS, 'value'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'readonly'),
        (FORMNS, 'min-value'),
        (FORMNS, 'validation'),
        (FORMNS, 'id'),
        (FORMNS, 'current-value'),
    ),
    (FORMNS, 'frame'): (
        (FORMNS, 'name'),
        (FORMNS, 'for'),
        (FORMNS, 'title'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'label'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'id'),
    ),
    # allowed_attributes
    (FORMNS, 'generic-control'): (
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'name'),
        (FORMNS, 'id'),
    ),
    (FORMNS, 'grid'): (
        (FORMNS, 'tab-stop'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'title'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'id'),
    ),
    (FORMNS, 'hidden'): (
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'name'),
        (FORMNS, 'value'),
        (FORMNS, 'id'),
    ),
    (FORMNS, 'image'): (
        (FORMNS, 'tab-stop'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'button-type'),
        (FORMNS, 'title'),
        (FORMNS, 'value'),
        (OFFICENS, 'target-frame'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'image-data'),
        (XLINKNS, 'href'),
        (FORMNS, 'id'),
    ),
    (FORMNS, 'image-frame'): (
        (FORMNS, 'name'),
        (FORMNS, 'title'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'data-field'),
        (FORMNS, 'readonly'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'image-data'),
        (FORMNS, 'id'),
    ),
    (FORMNS, 'item'): ((FORMNS, 'label'),),
    (FORMNS, 'list-property'): (
        (FORMNS, 'property-name'),
        (OFFICENS, 'value-type'),
    ),
    (FORMNS, 'list-value'): ((OFFICENS, 'string-value'),),
    # allowed_attributes
    (FORMNS, 'listbox'): (
        (FORMNS, 'tab-stop'),
        (FORMNS, 'bound-column'),
        (FORMNS, 'multiple'),
        (FORMNS, 'name'),
        (FORMNS, 'dropdown'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'data-field'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'list-source'),
        (FORMNS, 'title'),
        (FORMNS, 'list-source-type'),
        (FORMNS, 'id'),
        (FORMNS, 'xforms-list-source'),
        (FORMNS, 'size'),
    ),
    (FORMNS, 'number'): (
        (FORMNS, 'convert-empty-to-null'),
        (FORMNS, 'max-length'),
        (FORMNS, 'tab-stop'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (FORMNS, 'min-value'),
        (FORMNS, 'data-field'),
        (FORMNS, 'max-value'),
        (FORMNS, 'value'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'readonly'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'title'),
        (FORMNS, 'id'),
        (FORMNS, 'current-value'),
    ),
    (FORMNS, 'option'): (
        (FORMNS, 'current-selected'),
        (FORMNS, 'selected'),
        (FORMNS, 'value'),
        (FORMNS, 'label'),
    ),
    (FORMNS, 'password'): (
        (FORMNS, 'convert-empty-to-null'),
        (FORMNS, 'max-length'),
        (FORMNS, 'tab-stop'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'title'),
        (FORMNS, 'value'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'echo-char'),
        (FORMNS, 'id'),
    ),
    (FORMNS, 'properties'): (),
    (FORMNS, 'property'): (
        (OFFICENS, 'string-value'),
        (OFFICENS, 'value'),
        (OFFICENS, 'boolean-value'),
        (FORMNS, 'property-name'),
        (OFFICENS, 'currency'),
        (OFFICENS, 'date-value'),
        (OFFICENS, 'value-type'),
        (OFFICENS, 'time-value'),
    ),
    (FORMNS, 'radio'): (
        (FORMNS, 'tab-stop'),
        (FORMNS, 'selected'),
        (FORMNS, 'image-align'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'data-field'),
        (FORMNS, 'current-selected'),
        (FORMNS, 'value'),
        (FORMNS, 'label'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'title'),
        (FORMNS, 'visual-effect'),
        (FORMNS, 'id'),
        (FORMNS, 'image-position'),
    ),
    (FORMNS, 'text'): (
        (FORMNS, 'convert-empty-to-null'),
        (FORMNS, 'max-length'),
        (FORMNS, 'tab-stop'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'data-field'),
        (FORMNS, 'title'),
        (FORMNS, 'value'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'readonly'),
        (FORMNS, 'id'),
        (FORMNS, 'current-value'),
    ),
    (FORMNS, 'textarea'): (
        (FORMNS, 'convert-empty-to-null'),
        (FORMNS, 'max-length'),
        (FORMNS, 'tab-stop'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'data-field'),
        (FORMNS, 'title'),
        (FORMNS, 'value'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'readonly'),
        (FORMNS, 'id'),
        (FORMNS, 'current-value'),
    ),
    (FORMNS, 'time'): (
        (FORMNS, 'convert-empty-to-null'),
        (FORMNS, 'max-length'),
        (FORMNS, 'tab-stop'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (FORMNS, 'min-value'),
        (FORMNS, 'data-field'),
        (FORMNS, 'max-value'),
        (FORMNS, 'value'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'readonly'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'title'),
        (FORMNS, 'id'),
        (FORMNS, 'current-value'),
    ),
    (FORMNS, 'value-range'): (
        (FORMNS, 'tab-stop'),
        (FORMNS, 'max-value'),
        (FORMNS, 'name'),
        (FORMNS, 'tab-index'),
        (FORMNS, 'control-implementation'),
        (XFORMSNS, 'bind'),
        (FORMNS, 'title'),
        (FORMNS, 'value'),
        (FORMNS, 'disabled'),
        (FORMNS, 'printable'),
        (FORMNS, 'orientation'),
        (FORMNS, 'page-step-size'),
        (FORMNS, 'delay-for-repeat'),
        (FORMNS, 'min-value'),
        (FORMNS, 'id'),
        (FORMNS, '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, 'manifest'): (),
    # allowed_attributes
    (METANS, 'auto-reload'): (
        (METANS, 'delay'),
        (XLINKNS, 'actuate'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
        (XLINKNS, 'show'),
    ),
    (METANS, 'creation-date'): (),
    (METANS, 'date-string'): (),
    (METANS, 'document-statistic'): (
        (METANS, 'non-whitespace-character-count'),
        (METANS, 'ole-object-count'),
        (METANS, 'table-count'),
        (METANS, 'row-count'),
        (METANS, 'character-count'),
        (METANS, 'sentence-count'),
        (METANS, 'draw-count'),
        (METANS, 'paragraph-count'),
        (METANS, 'word-count'),
        (METANS, 'object-count'),
        (METANS, 'syllable-count'),
        (METANS, 'image-count'),
        (METANS, 'page-count'),
        (METANS, 'frame-count'),
        (METANS, 'cell-count'),
    ),
    (METANS, 'editing-cycles'): (),
    (METANS, 'editing-duration'): (),
    (METANS, 'generator'): (),
    # allowed_attributes
    (METANS, 'hyperlink-behaviour'): (
        (OFFICENS, 'target-frame-name'),
        (XLINKNS, 'show'),
    ),
    (METANS, 'initial-creator'): (),
    (METANS, 'keyword'): (),
    (METANS, 'print-date'): (),
    (METANS, 'printed-by'): (),
    (METANS, 'template'): (
        (METANS, 'date'),
        (XLINKNS, 'actuate'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
        (XLINKNS, 'title'),
    ),
    (METANS, 'user-defined'): (
        (METANS, 'name'),
        (METANS, 'value-type'),
    ),
    (OFFICENS, 'annotation'): (
        (DRAWNS, 'layer'),
        (SVGNS, 'height'),
        (TEXTNS, 'anchor-page-number'),
        (TABLENS, 'table-background'),
        (TABLENS, 'end-cell-address'),
        (DRAWNS, 'transform'),
        (DRAWNS, 'id'),
        (SVGNS, 'width'),
        (DRAWNS, 'class-names'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'class-names'),
        (TABLENS, 'end-x'),
        (DRAWNS, 'text-style-name'),
        (DRAWNS, 'z-index'),
        (PRESENTATIONNS, 'style-name'),
        (TEXTNS, 'anchor-type'),
        (DRAWNS, 'name'),
        (DRAWNS, 'caption-point-y'),
        (DRAWNS, 'caption-point-x'),
        (DRAWNS, 'corner-radius'),
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (TABLENS, 'end-y'),
        (OFFICENS, 'display'),
    ),
    (OFFICENS, 'automatic-styles'): (),
    (OFFICENS, 'binary-data'): (),
    (OFFICENS, 'body'): (),
    (OFFICENS, 'change-info'): (),
    (OFFICENS, 'chart'): (),
    (OFFICENS, 'dde-source'): (
        (OFFICENS, 'dde-application'),
        (OFFICENS, 'automatic-update'),
        (OFFICENS, 'conversion-mode'),
        (OFFICENS, 'dde-item'),
        (OFFICENS, 'dde-topic'),
        (OFFICENS, 'name'),
    ),
    (OFFICENS, 'document'): (
        (OFFICENS, 'mimetype'),
        (OFFICENS, 'version'),
    ),
    (OFFICENS, 'document-content'): ((OFFICENS, 'version'),),
    (OFFICENS, 'document-meta'): ((OFFICENS, 'version'),),
    (OFFICENS, 'document-settings'): ((OFFICENS, 'version'),),
    (OFFICENS, 'document-styles'): ((OFFICENS, 'version'),),
    (OFFICENS, 'drawing'): (),
    (OFFICENS, 'event-listeners'): (),
    (OFFICENS, 'font-face-decls'): (),
    (OFFICENS, 'forms'): (
        (FORMNS, 'automatic-focus'),
        (FORMNS, 'apply-design-mode'),
    ),
    (OFFICENS, 'image'): (),
    # allowed_attributes
    (OFFICENS, 'master-styles'): (),
    (OFFICENS, 'meta'): (),
    (OFFICENS, 'presentation'): (),
    (OFFICENS, 'script'): ((SCRIPTNS, 'language'),),
    (OFFICENS, 'scripts'): (),
    (OFFICENS, 'settings'): (),
    (OFFICENS, 'spreadsheet'): (
        (TABLENS, 'structure-protected'),
        (TABLENS, 'protection-key'),
    ),
    (OFFICENS, 'styles'): (),
    (OFFICENS, 'text'): (
        (TEXTNS, 'global'),
        (TEXTNS, 'use-soft-page-breaks'),
    ),
    (PRESENTATIONNS, 'animation-group'): (),
    (PRESENTATIONNS, 'animations'): (),
    (PRESENTATIONNS, 'date-time'): (),
    (PRESENTATIONNS, 'date-time-decl'): (
        (PRESENTATIONNS, 'source'),
        (STYLENS, 'data-style-name'),
        (PRESENTATIONNS, 'name'),
    ),
    (PRESENTATIONNS, 'dim'): (
        (DRAWNS, 'color'),
        (DRAWNS, 'shape-id'),
    ),
    (PRESENTATIONNS, 'event-listener'): (
        (PRESENTATIONNS, 'direction'),
        (XLINKNS, 'show'),
        (XLINKNS, 'type'),
        (XLINKNS, 'actuate'),
        (PRESENTATIONNS, 'effect'),
        (SCRIPTNS, 'event-name'),
        (PRESENTATIONNS, 'start-scale'),
        (XLINKNS, 'href'),
        (PRESENTATIONNS, 'verb'),
        (PRESENTATIONNS, 'action'),
        (PRESENTATIONNS, 'speed'),
    ),
    (PRESENTATIONNS, 'footer'): (),
    (PRESENTATIONNS, 'footer-decl'): ((PRESENTATIONNS, 'name'),),
    (PRESENTATIONNS, 'header'): (),
    (PRESENTATIONNS, 'header-decl'): ((PRESENTATIONNS, 'name'),),
    (PRESENTATIONNS, 'hide-shape'): (
        (PRESENTATIONNS, 'direction'),
        (PRESENTATIONNS, 'effect'),
        (PRESENTATIONNS, 'delay'),
        (PRESENTATIONNS, 'start-scale'),
        (PRESENTATIONNS, 'path-id'),
        (PRESENTATIONNS, 'speed'),
        (DRAWNS, 'shape-id'),
    ),
    # allowed_attributes
    (PRESENTATIONNS, 'hide-text'): (
        (PRESENTATIONNS, 'direction'),
        (PRESENTATIONNS, 'effect'),
        (PRESENTATIONNS, 'delay'),
        (PRESENTATIONNS, 'start-scale'),
        (PRESENTATIONNS, 'path-id'),
        (PRESENTATIONNS, 'speed'),
        (DRAWNS, 'shape-id'),
    ),
    (PRESENTATIONNS, 'notes'): (
        (STYLENS, 'page-layout-name'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'use-header-name'),
        (PRESENTATIONNS, 'use-date-time-name'),
        (PRESENTATIONNS, 'use-footer-name'),
    ),
    (PRESENTATIONNS, 'placeholder'): (
        (SVGNS, 'y'),
        (SVGNS, 'x'),
        (SVGNS, 'height'),
        (PRESENTATIONNS, 'object'),
        (SVGNS, 'width'),
    ),
    (PRESENTATIONNS, 'play'): (
        (PRESENTATIONNS, 'speed'),
        (DRAWNS, 'shape-id'),
    ),
    # allowed_attributes
    (PRESENTATIONNS, 'settings'): (
        (PRESENTATIONNS, 'animations'),
        (PRESENTATIONNS, 'endless'),
        (PRESENTATIONNS, 'force-manual'),
        (PRESENTATIONNS, 'full-screen'),
        (PRESENTATIONNS, 'mouse-as-pen'),
        (PRESENTATIONNS, 'mouse-visible'),
        (PRESENTATIONNS, 'pause'),
        (PRESENTATIONNS, 'show'),
        (PRESENTATIONNS, 'show-end-of-presentation-slide'),
        (PRESENTATIONNS, 'show-logo'),
        (PRESENTATIONNS, 'start-page'),
        (PRESENTATIONNS, 'start-with-navigator'),
        (PRESENTATIONNS, 'stay-on-top'),
        (PRESENTATIONNS, 'transition-on-click'),
    ),
    (PRESENTATIONNS, 'show'): (
        (PRESENTATIONNS, 'name'),
        (PRESENTATIONNS, 'pages'),
    ),
    (PRESENTATIONNS, 'show-shape'): (
        (PRESENTATIONNS, 'direction'),
        (PRESENTATIONNS, 'effect'),
        (PRESENTATIONNS, 'delay'),
        (PRESENTATIONNS, 'start-scale'),
        (PRESENTATIONNS, 'path-id'),
        (PRESENTATIONNS, 'speed'),
        (DRAWNS, 'shape-id'),
    ),
    (PRESENTATIONNS, 'show-text'): (
        (PRESENTATIONNS, 'direction'),
        (PRESENTATIONNS, 'effect'),
        (PRESENTATIONNS, 'delay'),
        (PRESENTATIONNS, 'start-scale'),
        (PRESENTATIONNS, 'path-id'),
        (PRESENTATIONNS, 'speed'),
        (DRAWNS, 'shape-id'),
    ),
    (PRESENTATIONNS, 'sound'): (
        (XLINKNS, 'actuate'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
        (PRESENTATIONNS, 'play-full'),
        (XLINKNS, 'show'),
    ),
    # allowed_attributes
    (SCRIPTNS, 'event-listener'): (
        (SCRIPTNS, 'language'),
        (SCRIPTNS, 'macro-name'),
        (XLINKNS, 'actuate'),
        (SCRIPTNS, 'event-name'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
    ),
    (STYLENS, 'background-image'): (
        (DRAWNS, 'opacity'),
        (STYLENS, 'repeat'),
        (XLINKNS, 'show'),
        (XLINKNS, 'actuate'),
        (STYLENS, 'filter-name'),
        (XLINKNS, 'href'),
        (STYLENS, 'position'),
        (XLINKNS, 'type'),
    ),
    (STYLENS, 'chart-properties'): (
        (CHARTNS, 'connect-bars'),
        (CHARTNS, 'data-label-number'),
        (CHARTNS, 'data-label-symbol'),
        (CHARTNS, 'data-label-text'),
        (CHARTNS, 'deep'),
        (CHARTNS, 'display-label'),
        (CHARTNS, 'error-category'),
        (CHARTNS, 'error-lower-indicator'),
        (CHARTNS, 'error-lower-limit'),
        (CHARTNS, 'error-margin'),
        (CHARTNS, 'error-percentage'),
        (CHARTNS, 'error-upper-indicator'),
        (CHARTNS, 'error-upper-limit'),
        (CHARTNS, 'gap-width'),
        (CHARTNS, 'interpolation'),
        (CHARTNS, 'interval-major'),
        (CHARTNS, 'interval-minor-divisor'),
        (CHARTNS, 'japanese-candle-stick'),
        (CHARTNS, 'label-arrangement'),
        (CHARTNS, 'lines'),
        (CHARTNS, 'link-data-style-to-source'),
        (CHARTNS, 'logarithmic'),
        (CHARTNS, 'maximum'),
        (CHARTNS, 'mean-value'),
        (CHARTNS, 'minimum'),
        (CHARTNS, 'origin'),
        (CHARTNS, 'overlap'),
        (CHARTNS, 'percentage'),
        (CHARTNS, 'pie-offset'),
        (CHARTNS, 'regression-type'),
        (CHARTNS, 'scale-text'),
        (CHARTNS, 'series-source'),
        (CHARTNS, 'solid-type'),
        (CHARTNS, 'spline-order'),
        (CHARTNS, 'spline-resolution'),
        (CHARTNS, 'stacked'),
        (CHARTNS, 'symbol-height'),
        (CHARTNS, 'symbol-name'),
        (CHARTNS, 'symbol-type'),
        (CHARTNS, 'symbol-width'),
        (CHARTNS, 'text-overlap'),
        (CHARTNS, 'three-dimensional'),
        (CHARTNS, 'tick-marks-major-inner'),
        (CHARTNS, 'tick-marks-major-outer'),
        (CHARTNS, 'tick-marks-minor-inner'),
        (CHARTNS, 'tick-marks-minor-outer'),
        (CHARTNS, 'vertical'),
        (CHARTNS, 'visible'),
        (STYLENS, 'direction'),
        (STYLENS, 'rotation-angle'),
        (TEXTNS, 'line-break'),
    ),
    (STYLENS, 'column'): (
        (FONS, 'end-indent'),
        (FONS, 'space-before'),
        (FONS, 'start-indent'),
        (FONS, 'space-after'),
        (STYLENS, 'rel-width'),
    ),
    (STYLENS, 'column-sep'): (
        (STYLENS, 'color'),
        (STYLENS, 'width'),
        (STYLENS, 'style'),
        (STYLENS, 'vertical-align'),
        (STYLENS, 'height'),
    ),
    (STYLENS, 'columns'): (
        (FONS, 'column-count'),
        (FONS, 'column-gap'),
    ),
    (STYLENS, 'default-style'): ((STYLENS, 'family'),),
    # allowed_attributes
    (STYLENS, 'drawing-page-properties'): (
        (DRAWNS, 'fill'),
        (DRAWNS, 'fill-color'),
        (DRAWNS, 'secondary-fill-color'),
        (DRAWNS, 'fill-gradient-name'),
        (DRAWNS, 'gradient-step-count'),
        (DRAWNS, 'fill-hatch-name'),
        (DRAWNS, 'fill-hatch-solid'),
        (DRAWNS, 'fill-image-name'),
        (STYLENS, 'repeat'),
        (DRAWNS, 'fill-image-width'),
        (DRAWNS, 'fill-image-height'),
        (DRAWNS, 'fill-image-ref-point-x'),
        (DRAWNS, 'fill-image-ref-point-y'),
        (DRAWNS, 'fill-image-ref-point'),
        (DRAWNS, 'tile-repeat-offset'),
        (DRAWNS, 'opacity'),
        (DRAWNS, 'opacity-name'),
        (SVGNS, 'fill-rule'),
        (PRESENTATIONNS, 'transition-type'),
        (PRESENTATIONNS, 'transition-style'),
        (PRESENTATIONNS, 'transition-speed'),
        (SMILNS, 'type'),
        (SMILNS, 'subtype'),
        (SMILNS, 'direction'),
        (SMILNS, 'fadeColor'),
        (PRESENTATIONNS, 'duration'),
        (PRESENTATIONNS, 'visibility'),
        (DRAWNS, 'background-size'),
        (PRESENTATIONNS, 'background-objects-visible'),
        (PRESENTATIONNS, 'background-visible'),
        (PRESENTATIONNS, 'display-header'),
        (PRESENTATIONNS, 'display-footer'),
        (PRESENTATIONNS, 'display-page-number'),
        (PRESENTATIONNS, 'display-date-time'),
    ),
    (STYLENS, 'drop-cap'): (
        (STYLENS, 'distance'),
        (STYLENS, 'length'),
        (STYLENS, 'style-name'),
        (STYLENS, 'lines'),
    ),
    # allowed_attributes
    (STYLENS, 'font-face'): (
        (STYLENS, 'font-adornments'),
        (STYLENS, 'font-charset'),
        (STYLENS, 'font-family-generic'),
        (STYLENS, 'font-pitch'),
        (STYLENS, 'name'),
        (SVGNS, 'accent-height'),
        (SVGNS, 'alphabetic'),
        (SVGNS, 'ascent'),
        (SVGNS, 'bbox'),
        (SVGNS, 'cap-height'),
        (SVGNS, 'descent'),
        (SVGNS, 'font-family'),
        (SVGNS, 'font-size'),
        (SVGNS, 'font-stretch'),
        (SVGNS, 'font-style'),
        (SVGNS, 'font-variant'),
        (SVGNS, 'font-weight'),
        (SVGNS, 'hanging'),
        (SVGNS, 'ideographic'),
        (SVGNS, 'mathematical'),
        (SVGNS, 'overline-position'),
        (SVGNS, 'overline-thickness'),
        (SVGNS, 'panose-1'),
        (SVGNS, 'slope'),
        (SVGNS, 'stemh'),
        (SVGNS, 'stemv'),
        (SVGNS, 'strikethrough-position'),
        (SVGNS, 'strikethrough-thickness'),
        (SVGNS, 'underline-position'),
        (SVGNS, 'underline-thickness'),
        (SVGNS, 'unicode-range'),
        (SVGNS, 'units-per-em'),
        (SVGNS, 'v-alphabetic'),
        (SVGNS, 'v-hanging'),
        (SVGNS, 'v-ideographic'),
        (SVGNS, 'v-mathematical'),
        (SVGNS, 'widths'),
        (SVGNS, 'x-height'),
    ),
    (STYLENS, 'footer'): ((STYLENS, 'display'),),
    (STYLENS, 'footer-left'): ((STYLENS, 'display'),),
    (STYLENS, 'footer-style'): (),
    (STYLENS, 'footnote-sep'): (
        (STYLENS, 'distance-after-sep'),
        (STYLENS, 'color'),
        (STYLENS, 'rel-width'),
        (STYLENS, 'width'),
        (STYLENS, 'distance-before-sep'),
        (STYLENS, 'line-style'),
        (STYLENS, 'adjustment'),
    ),
    # allowed_attributes
    (STYLENS, 'graphic-properties'): (
        (DR3DNS, 'ambient-color'),
        (DR3DNS, 'back-scale'),
        (DR3DNS, 'backface-culling'),
        (DR3DNS, 'close-back'),
        (DR3DNS, 'close-front'),
        (DR3DNS, 'depth'),
        (DR3DNS, 'diffuse-color'),
        (DR3DNS, 'edge-rounding'),
        (DR3DNS, 'edge-rounding-mode'),
        (DR3DNS, 'emissive-color'),
        (DR3DNS, 'end-angle'),
        (DR3DNS, 'horizontal-segments'),
        (DR3DNS, 'lighting-mode'),
        (DR3DNS, 'normals-direction'),
        (DR3DNS, 'normals-kind'),
        (DR3DNS, 'shadow'),
        (DR3DNS, 'shininess'),
        (DR3DNS, 'specular-color'),
        (DR3DNS, 'texture-filter'),
        (DR3DNS, 'texture-generation-mode-x'),
        (DR3DNS, 'texture-generation-mode-y'),
        (DR3DNS, 'texture-kind'),
        (DR3DNS, 'texture-mode'),
        (DR3DNS, 'vertical-segments'),
        (DRAWNS, 'auto-grow-height'),
        (DRAWNS, 'auto-grow-width'),
        (DRAWNS, 'blue'),
        (DRAWNS, 'caption-angle'),
        (DRAWNS, 'caption-angle-type'),
        (DRAWNS, 'caption-escape'),
        (DRAWNS, 'caption-escape-direction'),
        (DRAWNS, 'caption-fit-line-length'),
        (DRAWNS, 'caption-gap'),
        (DRAWNS, 'caption-line-length'),
        (DRAWNS, 'caption-type'),
        (DRAWNS, 'color-inversion'),
        (DRAWNS, 'color-mode'),
        (DRAWNS, 'contrast'),
        (DRAWNS, 'decimal-places'),
        (DRAWNS, 'end-guide'),
        (DRAWNS, 'end-line-spacing-horizontal'),
        (DRAWNS, 'end-line-spacing-vertical'),
        (DRAWNS, 'fill'),
        (DRAWNS, 'fill-color'),
        (DRAWNS, 'fill-gradient-name'),
        (DRAWNS, 'fill-hatch-name'),
        (DRAWNS, 'fill-hatch-solid'),
        (DRAWNS, 'fill-image-height'),
        (DRAWNS, 'fill-image-name'),
        (DRAWNS, 'fill-image-ref-point'),
        (DRAWNS, 'fill-image-ref-point-x'),
        (DRAWNS, 'fill-image-ref-point-y'),
        (DRAWNS, 'fill-image-width'),
        # allowed_attributes
        (DRAWNS, 'fit-to-contour'),
        (DRAWNS, 'fit-to-size'),
        (DRAWNS, 'frame-display-border'),
        (DRAWNS, 'frame-display-scrollbar'),
        (DRAWNS, 'frame-margin-horizontal'),
        (DRAWNS, 'frame-margin-vertical'),
        (DRAWNS, 'gamma'),
        (DRAWNS, 'gradient-step-count'),
        (DRAWNS, 'green'),
        (DRAWNS, 'guide-distance'),
        (DRAWNS, 'guide-overhang'),
        (DRAWNS, 'image-opacity'),
        (DRAWNS, 'line-distance'),
        (DRAWNS, 'luminance'),
        (DRAWNS, 'marker-end'),
        (DRAWNS, 'marker-end-center'),
        (DRAWNS, 'marker-end-width'),
        (DRAWNS, 'marker-start'),
        (DRAWNS, 'marker-start-center'),
        (DRAWNS, 'marker-start-width'),
        (DRAWNS, 'measure-align'),
        (DRAWNS, 'measure-vertical-align'),
        (DRAWNS, 'ole-draw-aspect'),
        (DRAWNS, 'opacity'),
        (DRAWNS, 'opacity-name'),
        (DRAWNS, 'parallel'),
        (DRAWNS, 'placing'),
        (DRAWNS, 'red'),
        (DRAWNS, 'secondary-fill-color'),
        (DRAWNS, 'shadow'),
        (DRAWNS, 'shadow-color'),
        (DRAWNS, 'shadow-offset-x'),
        (DRAWNS, 'shadow-offset-y'),
        (DRAWNS, 'shadow-opacity'),
        (DRAWNS, 'show-unit'),
        (DRAWNS, 'start-guide'),
        (DRAWNS, 'start-line-spacing-horizontal'),
        (DRAWNS, 'start-line-spacing-vertical'),
        (DRAWNS, 'stroke'),
        (DRAWNS, 'stroke-dash'),
        (DRAWNS, 'stroke-dash-names'),
        (DRAWNS, 'stroke-linejoin'),
        (DRAWNS, 'symbol-color'),
        (DRAWNS, 'textarea-horizontal-align'),
        (DRAWNS, 'textarea-vertical-align'),
        (DRAWNS, 'tile-repeat-offset'),
        (DRAWNS, 'unit'),
        (DRAWNS, 'visible-area-height'),
        (DRAWNS, 'visible-area-left'),
        (DRAWNS, 'visible-area-top'),
        (DRAWNS, 'visible-area-width'),
        (DRAWNS, 'wrap-influence-on-position'),
        # allowed_attributes
        (FONS, 'background-color'),
        (FONS, 'border'),
        (FONS, 'border-bottom'),
        (FONS, 'border-left'),
        (FONS, 'border-right'),
        (FONS, 'border-top'),
        (FONS, 'clip'),
        (FONS, 'margin'),
        (FONS, 'margin-bottom'),
        (FONS, 'margin-left'),
        (FONS, 'margin-right'),
        (FONS, 'margin-top'),
        (FONS, 'max-height'),
        (FONS, 'max-width'),
        (FONS, 'min-height'),
        (FONS, 'min-width'),
        (FONS, 'padding'),
        (FONS, 'padding-bottom'),
        (FONS, 'padding-left'),
        (FONS, 'padding-right'),
        (FONS, 'padding-top'),
        (FONS, 'wrap-option'),
        (STYLENS, 'border-line-width'),
        (STYLENS, 'border-line-width-bottom'),
        (STYLENS, 'border-line-width-left'),
        (STYLENS, 'border-line-width-right'),
        (STYLENS, 'border-line-width-top'),
        (STYLENS, 'editable'),
        (STYLENS, 'flow-with-text'),
        (STYLENS, 'horizontal-pos'),
        (STYLENS, 'horizontal-rel'),
        (STYLENS, 'mirror'),
        (STYLENS, 'number-wrapped-paragraphs'),
        (STYLENS, 'overflow-behavior'),
        (STYLENS, 'print-content'),
        (STYLENS, 'protect'),
        (STYLENS, 'rel-height'),
        (STYLENS, 'rel-width'),
        (STYLENS, 'repeat'),
        (STYLENS, 'run-through'),
        (STYLENS, 'shadow'),
        (STYLENS, 'vertical-pos'),
        (STYLENS, 'vertical-rel'),
        (STYLENS, 'wrap'),
        (STYLENS, 'wrap-contour'),
        (STYLENS, 'wrap-contour-mode'),
        (STYLENS, 'wrap-dynamic-threshold'),
        (STYLENS, 'writing-mode'),
        (SVGNS, 'fill-rule'),
        (SVGNS, 'height'),
        (SVGNS, 'stroke-color'),
        (SVGNS, 'stroke-opacity'),
        (SVGNS, 'stroke-width'),
        (SVGNS, 'width'),
        (SVGNS, 'x'),
        (SVGNS, 'y'),
        (TEXTNS, 'anchor-page-number'),
        (TEXTNS, 'anchor-type'),
        (TEXTNS, 'animation'),
        (TEXTNS, 'animation-delay'),
        (TEXTNS, 'animation-direction'),
        (TEXTNS, 'animation-repeat'),
        (TEXTNS, 'animation-start-inside'),
        (TEXTNS, 'animation-steps'),
        (TEXTNS, 'animation-stop-inside'),
    ),
    (STYLENS, 'handout-master'): (
        (PRESENTATIONNS, 'presentation-page-layout-name'),
        (STYLENS, 'page-layout-name'),
        (PRESENTATIONNS, 'use-footer-name'),
        (DRAWNS, 'style-name'),
        (PRESENTATIONNS, 'use-header-name'),
        (PRESENTATIONNS, 'use-date-time-name'),
    ),
    # allowed_attributes
    (STYLENS, 'header'): ((STYLENS, 'display'),),
    (STYLENS, 'header-footer-properties'): (
        (FONS, 'background-color'),
        (FONS, 'border'),
        (FONS, 'border-bottom'),
        (FONS, 'border-left'),
        (FONS, 'border-right'),
        (FONS, 'border-top'),
        (FONS, 'margin'),
        (FONS, 'margin-bottom'),
        (FONS, 'margin-left'),
        (FONS, 'margin-right'),
        (FONS, 'margin-top'),
        (FONS, 'min-height'),
        (FONS, 'padding'),
        (FONS, 'padding-bottom'),
        (FONS, 'padding-left'),
        (FONS, 'padding-right'),
        (FONS, 'padding-top'),
        (STYLENS, 'border-line-width'),
        (STYLENS, 'border-line-width-bottom'),
        (STYLENS, 'border-line-width-left'),
        (STYLENS, 'border-line-width-right'),
        (STYLENS, 'border-line-width-top'),
        (STYLENS, 'dynamic-spacing'),
        (STYLENS, 'shadow'),
        (SVGNS, 'height'),
    ),
    (STYLENS, 'header-left'): ((STYLENS, 'display'),),
    (STYLENS, 'header-style'): (),
    # allowed_attributes
    (STYLENS, 'list-level-properties'): (
        (FONS, 'height'),
        (FONS, 'text-align'),
        (FONS, 'width'),
        (STYLENS, 'font-name'),
        (STYLENS, 'vertical-pos'),
        (STYLENS, 'vertical-rel'),
        (SVGNS, 'y'),
        (TEXTNS, 'min-label-distance'),
        (TEXTNS, 'min-label-width'),
        (TEXTNS, 'space-before'),
    ),
    (STYLENS, 'map'): (
        (STYLENS, 'apply-style-name'),
        (STYLENS, 'base-cell-address'),
        (STYLENS, 'condition'),
    ),
    (STYLENS, 'master-page'): (
        (STYLENS, 'page-layout-name'),
        (STYLENS, 'display-name'),
        (DRAWNS, 'style-name'),
        (STYLENS, 'name'),
        (STYLENS, 'next-style-name'),
    ),
    (STYLENS, 'page-layout'): (
        (STYLENS, 'name'),
        (STYLENS, 'page-usage'),
    ),
    # allowed_attributes
    (STYLENS, 'page-layout-properties'): (
        (FONS, 'background-color'),
        (FONS, 'border'),
        (FONS, 'border-bottom'),
        (FONS, 'border-left'),
        (FONS, 'border-right'),
        (FONS, 'border-top'),
        (FONS, 'margin'),
        (FONS, 'margin-bottom'),
        (FONS, 'margin-left'),
        (FONS, 'margin-right'),
        (FONS, 'margin-top'),
        (FONS, 'padding'),
        (FONS, 'padding-bottom'),
        (FONS, 'padding-left'),
        (FONS, 'padding-right'),
        (FONS, 'padding-top'),
        (FONS, 'page-height'),
        (FONS, 'page-width'),
        (STYLENS, 'border-line-width'),
        (STYLENS, 'border-line-width-bottom'),
        (STYLENS, 'border-line-width-left'),
        (STYLENS, 'border-line-width-right'),
        (STYLENS, 'border-line-width-top'),
        (STYLENS, 'first-page-number'),
        (STYLENS, 'footnote-max-height'),
        (STYLENS, 'layout-grid-base-height'),
        (STYLENS, 'layout-grid-color'),
        (STYLENS, 'layout-grid-display'),
        (STYLENS, 'layout-grid-lines'),
        (STYLENS, 'layout-grid-mode'),
        (STYLENS, 'layout-grid-print'),
        (STYLENS, 'layout-grid-ruby-below'),
        (STYLENS, 'layout-grid-ruby-height'),
        (STYLENS, 'num-format'),
        (STYLENS, 'num-letter-sync'),
        (STYLENS, 'num-prefix'),
        (STYLENS, 'num-suffix'),
        (STYLENS, 'paper-tray-name'),
        (STYLENS, 'print'),
        (STYLENS, 'print-orientation'),
        (STYLENS, 'print-page-order'),
        (STYLENS, 'register-truth-ref-style-name'),
        (STYLENS, 'scale-to'),
        (STYLENS, 'scale-to-pages'),
        (STYLENS, 'shadow'),
        (STYLENS, 'table-centering'),
        (STYLENS, 'writing-mode'),
    ),
    # allowed_attributes
    (STYLENS, 'paragraph-properties'): (
        (FONS, 'background-color'),
        (FONS, 'border'),
        (FONS, 'border-bottom'),
        (FONS, 'border-left'),
        (FONS, 'border-right'),
        (FONS, 'border-top'),
        (FONS, 'break-after'),
        (FONS, 'break-before'),
        (FONS, 'hyphenation-keep'),
        (FONS, 'hyphenation-ladder-count'),
        (FONS, 'keep-together'),
        (FONS, 'keep-with-next'),
        (FONS, 'line-height'),
        (FONS, 'margin'),
        (FONS, 'margin-bottom'),
        (FONS, 'margin-left'),
        (FONS, 'margin-right'),
        (FONS, 'margin-top'),
        (FONS, 'orphans'),
        (FONS, 'padding'),
        (FONS, 'padding-bottom'),
        (FONS, 'padding-left'),
        (FONS, 'padding-right'),
        (FONS, 'padding-top'),
        (FONS, 'text-align'),
        (FONS, 'text-align-last'),
        (FONS, 'text-indent'),
        (FONS, 'widows'),
        (STYLENS, 'auto-text-indent'),
        (STYLENS, 'background-transparency'),
        (STYLENS, 'border-line-width'),
        (STYLENS, 'border-line-width-bottom'),
        (STYLENS, 'border-line-width-left'),
        (STYLENS, 'border-line-width-right'),
        (STYLENS, 'border-line-width-top'),
        (STYLENS, 'font-independent-line-spacing'),
        (STYLENS, 'justify-single-word'),
        (STYLENS, 'line-break'),
        (STYLENS, 'line-height-at-least'),
        (STYLENS, 'line-spacing'),
        (STYLENS, 'page-number'),
        (STYLENS, 'punctuation-wrap'),
        (STYLENS, 'register-true'),
        (STYLENS, 'shadow'),
        (STYLENS, 'snap-to-layout-grid'),
        (STYLENS, 'tab-stop-distance'),
        (STYLENS, 'text-autospace'),
        (STYLENS, 'vertical-align'),
        (STYLENS, 'writing-mode'),
        (STYLENS, 'writing-mode-automatic'),
        (TEXTNS, 'line-number'),
        (TEXTNS, 'number-lines'),
    ),
    (STYLENS, 'presentation-page-layout'): (
        (STYLENS, 'display-name'),
        (STYLENS, 'name'),
    ),
    # allowed_attributes
    (STYLENS, 'region-center'): (),
    (STYLENS, 'region-left'): (),
    (STYLENS, 'region-right'): (),
    (STYLENS, 'ruby-properties'): (
        (STYLENS, 'ruby-position'),
        (STYLENS, 'ruby-align'),
    ),
    (STYLENS, 'section-properties'): (
        (FONS, 'background-color'),
        (FONS, 'margin-left'),
        (FONS, 'margin-right'),
        (STYLENS, 'protect'),
        (STYLENS, 'writing-mode'),
        (TEXTNS, 'dont-balance-text-columns'),
    ),
    (STYLENS, 'style'): (
        (STYLENS, 'family'),
        (STYLENS, 'list-style-name'),
        (STYLENS, 'name'),
        (STYLENS, 'auto-update'),
        (STYLENS, 'default-outline-level'),
        (STYLENS, 'class'),
        (STYLENS, 'next-style-name'),
        (STYLENS, 'data-style-name'),
        (STYLENS, 'master-page-name'),
        (STYLENS, 'display-name'),
        (STYLENS, 'parent-style-name'),
    ),
    # allowed_attributes
    (STYLENS, 'tab-stop'): (
        (STYLENS, 'leader-text-style'),
        (STYLENS, 'leader-width'),
        (STYLENS, 'leader-style'),
        (STYLENS, 'char'),
        (STYLENS, 'leader-color'),
        (STYLENS, 'position'),
        (STYLENS, 'leader-text'),
        (STYLENS, 'type'),
        (STYLENS, 'leader-type'),
    ),
    (STYLENS, 'tab-stops'): (),
    (STYLENS, 'table-cell-properties'): (
        (FONS, 'background-color'),
        (FONS, 'border'),
        (FONS, 'border-bottom'),
        (FONS, 'border-left'),
        (FONS, 'border-right'),
        (FONS, 'border-top'),
        (FONS, 'padding'),
        (FONS, 'padding-bottom'),
        (FONS, 'padding-left'),
        (FONS, 'padding-right'),
        (FONS, 'padding-top'),
        (FONS, 'wrap-option'),
        (STYLENS, 'border-line-width'),
        (STYLENS, 'border-line-width-bottom'),
        (STYLENS, 'border-line-width-left'),
        (STYLENS, 'border-line-width-right'),
        (STYLENS, 'border-line-width-top'),
        (STYLENS, 'cell-protect'),
        (STYLENS, 'decimal-places'),
        (STYLENS, 'diagonal-bl-tr'),
        (STYLENS, 'diagonal-bl-tr-widths'),
        (STYLENS, 'diagonal-tl-br'),
        (STYLENS, 'diagonal-tl-br-widths'),
        (STYLENS, 'direction'),
        (STYLENS, 'glyph-orientation-vertical'),
        (STYLENS, 'print-content'),
        (STYLENS, 'repeat-content'),
        (STYLENS, 'rotation-align'),
        (STYLENS, 'rotation-angle'),
        (STYLENS, 'shadow'),
        (STYLENS, 'shrink-to-fit'),
        (STYLENS, 'text-align-source'),
        (STYLENS, 'vertical-align'),
    ),
    # allowed_attributes
    (STYLENS, 'table-column-properties'): (
        (FONS, 'break-after'),
        (FONS, 'break-before'),
        (STYLENS, 'column-width'),
        (STYLENS, 'rel-column-width'),
        (STYLENS, 'use-optimal-column-width'),
    ),
    (STYLENS, 'table-properties'): (
        (FONS, 'background-color'),
        (FONS, 'break-after'),
        (FONS, 'break-before'),
        (FONS, 'keep-with-next'),
        (FONS, 'margin'),
        (FONS, 'margin-bottom'),
        (FONS, 'margin-left'),
        (FONS, 'margin-right'),
        (FONS, 'margin-top'),
        (STYLENS, 'may-break-between-rows'),
        (STYLENS, 'page-number'),
        (STYLENS, 'rel-width'),
        (STYLENS, 'shadow'),
        (STYLENS, 'width'),
        (STYLENS, 'writing-mode'),
        (TABLENS, 'align'),
        (TABLENS, 'border-model'),
        (TABLENS, 'display'),
    ),
    (STYLENS, 'table-row-properties'): (
        (FONS, 'background-color'),
        (FONS, 'break-after'),
        (FONS, 'break-before'),
        (FONS, 'keep-together'),
        (STYLENS, 'min-row-height'),
        (STYLENS, 'row-height'),
        (STYLENS, 'use-optimal-row-height'),
    ),
    # allowed_attributes
    (STYLENS, 'text-properties'): (
        (FONS, 'background-color'),
        (FONS, 'color'),
        (FONS, 'country'),
        (FONS, 'font-family'),
        (FONS, 'font-size'),
        (FONS, 'font-style'),
        (FONS, 'font-variant'),
        (FONS, 'font-weight'),
        (FONS, 'hyphenate'),
        (FONS, 'hyphenation-push-char-count'),
        (FONS, 'hyphenation-remain-char-count'),
        (FONS, 'language'),
        (FONS, 'letter-spacing'),
        (FONS, 'text-shadow'),
        (FONS, 'text-transform'),
        (STYLENS, 'country-asian'),
        (STYLENS, 'country-complex'),
        (STYLENS, 'font-charset'),
        (STYLENS, 'font-charset-asian'),
        (STYLENS, 'font-charset-complex'),
        (STYLENS, 'font-family-asian'),
        (STYLENS, 'font-family-complex'),
        (STYLENS, 'font-family-generic'),
        (STYLENS, 'font-family-generic-asian'),
        (STYLENS, 'font-family-generic-complex'),
        (STYLENS, 'font-name'),
        (STYLENS, 'font-name-asian'),
        (STYLENS, 'font-name-complex'),
        (STYLENS, 'font-pitch'),
        (STYLENS, 'font-pitch-asian'),
        (STYLENS, 'font-pitch-complex'),
        (STYLENS, 'font-relief'),
        (STYLENS, 'font-size-asian'),
        (STYLENS, 'font-size-complex'),
        (STYLENS, 'font-size-rel'),
        (STYLENS, 'font-size-rel-asian'),
        (STYLENS, 'font-size-rel-complex'),
        (STYLENS, 'font-style-asian'),
        (STYLENS, 'font-style-complex'),
        (STYLENS, 'font-style-name'),
        (STYLENS, 'font-style-name-asian'),
        (STYLENS, 'font-style-name-complex'),
        (STYLENS, 'font-weight-asian'),
        (STYLENS, 'font-weight-complex'),
        (STYLENS, 'language-asian'),
        (STYLENS, 'language-complex'),
        (STYLENS, 'letter-kerning'),
        (STYLENS, 'script-type'),
        (STYLENS, 'text-blinking'),
        (STYLENS, 'text-combine'),
        (STYLENS, 'text-combine-end-char'),
        (STYLENS, 'text-combine-start-char'),
        (STYLENS, 'text-emphasize'),
        (STYLENS, 'text-line-through-color'),
        (STYLENS, 'text-line-through-mode'),
        (STYLENS, 'text-line-through-style'),
        (STYLENS, 'text-line-through-text'),
        (STYLENS, 'text-line-through-text-style'),
        (STYLENS, 'text-line-through-type'),
        (STYLENS, 'text-line-through-width'),
        (STYLENS, 'text-outline'),
        (STYLENS, 'text-position'),
        (STYLENS, 'text-rotation-angle'),
        (STYLENS, 'text-rotation-scale'),
        (STYLENS, 'text-scale'),
        (STYLENS, 'text-underline-color'),
        (STYLENS, 'text-underline-mode'),
        (STYLENS, 'text-underline-style'),
        (STYLENS, 'text-underline-type'),
        (STYLENS, 'text-underline-width'),
        (STYLENS, 'use-window-font-color'),
        (TEXTNS, 'condition'),
        (TEXTNS, 'display'),
    ),
    (SVGNS, 'definition-src'): (
        (XLINKNS, 'actuate'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
    ),
    (SVGNS, 'desc'): (),
    (SVGNS, 'font-face-format'): ((SVGNS, 'string'),),
    # allowed_attributes
    (SVGNS, 'font-face-name'): ((SVGNS, 'name'),),
    (SVGNS, 'font-face-src'): (),
    (SVGNS, 'font-face-uri'): (
        (XLINKNS, 'actuate'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
    ),
    (SVGNS, 'linearGradient'): (
        (SVGNS, 'y2'),
        (DRAWNS, 'name'),
        (SVGNS, 'spreadMethod'),
        (SVGNS, 'gradientUnits'),
        (SVGNS, 'x2'),
        (SVGNS, 'gradientTransform'),
        (SVGNS, 'y1'),
        (DRAWNS, 'display-name'),
        (SVGNS, 'x1'),
    ),
    (SVGNS, 'radialGradient'): (
        (DRAWNS, 'name'),
        (SVGNS, 'fx'),
        (SVGNS, 'fy'),
        (SVGNS, 'spreadMethod'),
        (SVGNS, 'gradientUnits'),
        (SVGNS, 'cy'),
        (SVGNS, 'cx'),
        (SVGNS, 'gradientTransform'),
        (DRAWNS, 'display-name'),
        (SVGNS, 'r'),
    ),
    (SVGNS, 'stop'): (
        (SVGNS, 'stop-color'),
        (SVGNS, 'stop-opacity'),
        (SVGNS, 'offset'),
    ),
    (SVGNS, 'title'): (),
    # allowed_attributes
    (TABLENS, 'body'): (
        (TEXTNS, 'paragraph-style-name'),
        (TEXTNS, 'style-name'),
    ),
    (TABLENS, 'calculation-settings'): (
        (TABLENS, 'automatic-find-labels'),
        (TABLENS, 'case-sensitive'),
        (TABLENS, 'search-criteria-must-apply-to-whole-cell'),
        (TABLENS, 'precision-as-shown'),
        (TABLENS, 'use-regular-expressions'),
        (TABLENS, 'null-year'),
    ),
    (TABLENS, 'cell-address'): (
        (TABLENS, 'column'),
        (TABLENS, 'table'),
        (TABLENS, 'row'),
    ),
    (TABLENS, 'cell-content-change'): (
        (TABLENS, 'id'),
        (TABLENS, 'rejecting-change-id'),
        (TABLENS, 'acceptance-state'),
    ),
    (TABLENS, 'cell-content-deletion'): ((TABLENS, 'id'),),
    (TABLENS, 'cell-range-source'): (
        (TABLENS, 'last-row-spanned'),
        (TABLENS, 'last-column-spanned'),
        (TABLENS, 'name'),
        (TABLENS, 'filter-options'),
        (XLINKNS, 'actuate'),
        (TABLENS, 'filter-name'),
        (XLINKNS, 'href'),
        (TABLENS, 'refresh-delay'),
        (XLINKNS, 'type'),
    ),
    (TABLENS, 'change-deletion'): ((TABLENS, 'id'),),
    (TABLENS, 'change-track-table-cell'): (
        (OFFICENS, 'string-value'),
        (TABLENS, 'cell-address'),
        (TABLENS, 'number-matrix-columns-spanned'),
        (TABLENS, 'number-matrix-rows-spanned'),
        (TABLENS, 'matrix-covered'),
        (OFFICENS, 'value-type'),
        (OFFICENS, 'boolean-value'),
        (OFFICENS, 'currency'),
        (OFFICENS, 'date-value'),
        (OFFICENS, 'value'),
        (TABLENS, 'formula'),
        (OFFICENS, 'time-value'),
    ),
    (TABLENS, 'consolidation'): (
        (TABLENS, 'function'),
        (TABLENS, 'source-cell-range-addresses'),
        (TABLENS, 'target-cell-address'),
        (TABLENS, 'link-to-source-data'),
        (TABLENS, 'use-labels'),
    ),
    (TABLENS, 'content-validation'): (
        (TABLENS, 'base-cell-address'),
        (TABLENS, 'display-list'),
        (TABLENS, 'allow-empty-cell'),
        (TABLENS, 'name'),
        (TABLENS, 'condition'),
    ),
    (TABLENS, 'content-validations'): (),
    # allowed_attributes
    (TABLENS, 'covered-table-cell'): (
        (TABLENS, 'protect'),
        (OFFICENS, 'string-value'),
        (OFFICENS, 'value'),
        (OFFICENS, 'boolean-value'),
        (OFFICENS, 'currency'),
        (OFFICENS, 'date-value'),
        (TABLENS, 'style-name'),
        (TABLENS, 'content-validation-name'),
        (OFFICENS, 'value-type'),
        (TABLENS, 'number-columns-repeated'),
        (TABLENS, 'formula'),
        (OFFICENS, 'time-value'),
    ),
    (TABLENS, 'cut-offs'): (),
    (TABLENS, 'data-pilot-display-info'): (
        (TABLENS, 'member-count'),
        (TABLENS, 'data-field'),
        (TABLENS, 'enabled'),
        (TABLENS, 'display-member-mode'),
    ),
    (TABLENS, 'data-pilot-field'): (
        (TABLENS, 'selected-page'),
        (TABLENS, 'function'),
        (TABLENS, 'orientation'),
        (TABLENS, 'used-hierarchy'),
        (TABLENS, 'is-data-layout-field'),
        (TABLENS, 'source-field-name'),
    ),
    (TABLENS, 'data-pilot-field-reference'): (
        (TABLENS, 'member-name'),
        (TABLENS, 'field-name'),
        (TABLENS, 'member-type'),
        (TABLENS, 'type'),
    ),
    # allowed_attributes
    (TABLENS, 'data-pilot-group'): ((TABLENS, 'name'),),
    (TABLENS, 'data-pilot-group-member'): ((TABLENS, 'name'),),
    (TABLENS, 'data-pilot-groups'): (
        (TABLENS, 'date-end'),
        (TABLENS, 'end'),
        (TABLENS, 'start'),
        (TABLENS, 'source-field-name'),
        (TABLENS, 'step'),
        (TABLENS, 'date-start'),
        (TABLENS, 'grouped-by'),
    ),
    (TABLENS, 'data-pilot-layout-info'): (
        (TABLENS, 'add-empty-lines'),
        (TABLENS, 'layout-mode'),
    ),
    (TABLENS, 'data-pilot-level'): ((TABLENS, 'show-empty'),),
    # allowed_attributes
    (TABLENS, 'data-pilot-member'): (
        (TABLENS, 'show-details'),
        (TABLENS, 'name'),
        (TABLENS, 'display'),
    ),
    (TABLENS, 'data-pilot-members'): (),
    (TABLENS, 'data-pilot-sort-info'): (
        (TABLENS, 'data-field'),
        (TABLENS, 'sort-mode'),
        (TABLENS, 'order'),
    ),
    (TABLENS, 'data-pilot-subtotal'): ((TABLENS, 'function'),),
    (TABLENS, 'data-pilot-subtotals'): (),
    (TABLENS, 'data-pilot-table'): (
        (TABLENS, 'buttons'),
        (TABLENS, 'application-data'),
        (TABLENS, 'name'),
        (TABLENS, 'drill-down-on-double-click'),
        (TABLENS, 'target-range-address'),
        (TABLENS, 'ignore-empty-rows'),
        (TABLENS, 'identify-categories'),
        (TABLENS, 'show-filter-button'),
        (TABLENS, 'grand-total'),
    ),
    # allowed_attributes
    (TABLENS, 'data-pilot-tables'): (),
    (TABLENS, 'database-range'): (
        (TABLENS, 'orientation'),
        (TABLENS, 'target-range-address'),
        (TABLENS, 'contains-header'),
        (TABLENS, 'on-update-keep-size'),
        (TABLENS, 'name'),
        (TABLENS, 'is-selection'),
        (TABLENS, 'refresh-delay'),
        (TABLENS, 'display-filter-buttons'),
        (TABLENS, 'has-persistent-data'),
        (TABLENS, 'on-update-keep-styles'),
    ),
    (TABLENS, 'database-ranges'): (),
    (TABLENS, 'database-source-query'): (
        (TABLENS, 'query-name'),
        (TABLENS, 'database-name'),
    ),
    # allowed_attributes
    (TABLENS, 'database-source-sql'): (
        (TABLENS, 'parse-sql-statement'),
        (TABLENS, 'database-name'),
        (TABLENS, 'sql-statement'),
    ),
    (TABLENS, 'database-source-table'): (
        (TABLENS, 'database-table-name'),
        (TABLENS, 'database-name'),
    ),
    (TABLENS, 'dde-link'): (),
    (TABLENS, 'dde-links'): (),
    (TABLENS, 'deletion'): (
        (TABLENS, 'rejecting-change-id'),
        (TABLENS, 'multi-deletion-spanned'),
        (TABLENS, 'acceptance-state'),
        (TABLENS, 'table'),
        (TABLENS, 'position'),
        (TABLENS, 'type'),
        (TABLENS, 'id'),
    ),
    # allowed_attributes
    (TABLENS, 'deletions'): (),
    (TABLENS, 'dependencies'): (),
    (TABLENS, 'dependency'): ((TABLENS, 'id'),),
    (TABLENS, 'detective'): (),
    (TABLENS, 'error-macro'): ((TABLENS, 'execute'),),
    (TABLENS, 'error-message'): (
        (TABLENS, 'display'),
        (TABLENS, 'message-type'),
        (TABLENS, 'title'),
    ),
    (TABLENS, 'even-columns'): (
        (TEXTNS, 'paragraph-style-name'),
        (TEXTNS, 'style-name'),
    ),
    (TABLENS, 'even-rows'): (
        (TEXTNS, 'paragraph-style-name'),
        (TEXTNS, 'style-name'),
    ),
    # allowed_attributes
    (TABLENS, 'filter'): (
        (TABLENS, 'target-range-address'),
        (TABLENS, 'display-duplicates'),
        (TABLENS, 'condition-source-range-address'),
        (TABLENS, 'condition-source'),
    ),
    (TABLENS, 'filter-and'): (),
    (TABLENS, 'filter-condition'): (
        (TABLENS, 'operator'),
        (TABLENS, 'field-number'),
        (TABLENS, 'data-type'),
        (TABLENS, 'case-sensitive'),
        (TABLENS, 'value'),
    ),
    (TABLENS, 'filter-or'): (),
    (TABLENS, 'first-column'): (
        (TEXTNS, 'paragraph-style-name'),
        (TEXTNS, 'style-name'),
    ),
    (TABLENS, 'first-row'): (
        (TEXTNS, 'paragraph-style-name'),
        (TEXTNS, 'style-name'),
    ),
    # allowed_attributes
    (TABLENS, 'help-message'): (
        (TABLENS, 'display'),
        (TABLENS, 'title'),
    ),
    (TABLENS, 'highlighted-range'): (
        (TABLENS, 'contains-error'),
        (TABLENS, 'direction'),
        (TABLENS, 'marked-invalid'),
        (TABLENS, 'cell-range-address'),
    ),
    (TABLENS, 'insertion'): (
        (TABLENS, 'count'),
        (TABLENS, 'rejecting-change-id'),
        (TABLENS, 'acceptance-state'),
        (TABLENS, 'table'),
        (TABLENS, 'position'),
        (TABLENS, 'type'),
        (TABLENS, 'id'),
    ),
    (TABLENS, 'insertion-cut-off'): (
        (TABLENS, 'position'),
        (TABLENS, 'id'),
    ),
    (TABLENS, 'iteration'): (
        (TABLENS, 'status'),
        (TABLENS, 'maximum-difference'),
        (TABLENS, 'steps'),
    ),
    # allowed_attributes
    (TABLENS, 'label-range'): (
        (TABLENS, 'label-cell-range-address'),
        (TABLENS, 'data-cell-range-address'),
        (TABLENS, 'orientation'),
    ),
    (TABLENS, 'label-ranges'): (),
    (TABLENS, 'last-column'): (
        (TEXTNS, 'paragraph-style-name'),
        (TEXTNS, 'style-name'),
    ),
    (TABLENS, 'last-row'): (
        (TEXTNS, 'paragraph-style-name'),
        (TEXTNS, 'style-name'),
    ),
    (TABLENS, 'movement'): (
        (TABLENS, 'id'),
        (TABLENS, 'rejecting-change-id'),
        (TABLENS, 'acceptance-state'),
    ),
    (TABLENS, 'movement-cut-off'): (
        (TABLENS, 'position'),
        (TABLENS, 'end-position'),
        (TABLENS, 'start-position'),
    ),
    (TABLENS, 'named-expression'): (
        (TABLENS, 'base-cell-address'),
        (TABLENS, 'expression'),
        (TABLENS, 'name'),
    ),
    (TABLENS, 'named-expressions'): (),
    (TABLENS, 'named-range'): (
        (TABLENS, 'range-usable-as'),
        (TABLENS, 'base-cell-address'),
        (TABLENS, 'name'),
        (TABLENS, 'cell-range-address'),
    ),
    (TABLENS, 'null-date'): (
        (TABLENS, 'date-value'),
        (TABLENS, 'value-type'),
    ),
    (TABLENS, 'odd-columns'): (
        (TEXTNS, 'paragraph-style-name'),
        (TEXTNS, 'style-name'),
    ),
    (TABLENS, 'odd-rows'): (
        (TEXTNS, 'paragraph-style-name'),
        (TEXTNS, 'style-name'),
    ),
    (TABLENS, 'operation'): (
        (TABLENS, 'index'),
        (TABLENS, 'name'),
    ),
    (TABLENS, 'previous'): ((TABLENS, 'id'),),
    (TABLENS, 'scenario'): (
        (TABLENS, 'comment'),
        (TABLENS, 'border-color'),
        (TABLENS, 'copy-back'),
        (TABLENS, 'is-active'),
        (TABLENS, 'protected'),
        (TABLENS, 'copy-formulas'),
        (TABLENS, 'copy-styles'),
        (TABLENS, 'scenario-ranges'),
        (TABLENS, 'display-border'),
    ),
    (TABLENS, 'shapes'): (),
    (TABLENS, 'sort'): (
        (TABLENS, 'case-sensitive'),
        (TABLENS, 'algorithm'),
        (TABLENS, 'target-range-address'),
        (TABLENS, 'country'),
        (TABLENS, 'language'),
        (TABLENS, 'bind-styles-to-content'),
    ),
    (TABLENS, 'sort-by'): (
        (TABLENS, 'field-number'),
        (TABLENS, 'data-type'),
        (TABLENS, 'order'),
    ),
    (TABLENS, 'sort-groups'): (
        (TABLENS, 'data-type'),
        (TABLENS, 'order'),
    ),
    (TABLENS, 'source-cell-range'): ((TABLENS, 'cell-range-address'),),
    (TABLENS, 'source-range-address'): (
        (TABLENS, 'column'),
        (TABLENS, 'end-column'),
        (TABLENS, 'start-table'),
        (TABLENS, 'end-row'),
        (TABLENS, 'table'),
        (TABLENS, 'start-row'),
        (TABLENS, 'row'),
        (TABLENS, 'end-table'),
        (TABLENS, 'start-column'),
    ),
    # allowed_attributes
    (TABLENS, 'source-service'): (
        (TABLENS, 'user-name'),
        (TABLENS, 'source-name'),
        (TABLENS, 'password'),
        (TABLENS, 'object-name'),
        (TABLENS, 'name'),
    ),
    (TABLENS, 'subtotal-field'): (
        (TABLENS, 'function'),
        (TABLENS, 'field-number'),
    ),
    (TABLENS, 'subtotal-rule'): ((TABLENS, 'group-by-field-number'),),
    (TABLENS, 'subtotal-rules'): (
        (TABLENS, 'bind-styles-to-content'),
        (TABLENS, 'page-breaks-on-group-change'),
        (TABLENS, 'case-sensitive'),
    ),
    (TABLENS, 'table'): (
        (TABLENS, 'name'),
        (TABLENS, 'is-sub-table'),
        (TABLENS, 'style-name'),
        (TABLENS, 'protected'),
        (TABLENS, 'print-ranges'),
        (TABLENS, 'print'),
        (TABLENS, 'protection-key'),
    ),
    (TABLENS, 'table-cell'): (
        (TABLENS, 'protect'),
        (TABLENS, 'number-matrix-rows-spanned'),
        (TABLENS, 'number-matrix-columns-spanned'),
        (OFFICENS, 'string-value'),
        (TABLENS, 'number-columns-spanned'),
        (OFFICENS, 'value'),
        (OFFICENS, 'boolean-value'),
        (OFFICENS, 'currency'),
        (OFFICENS, 'date-value'),
        (TABLENS, 'style-name'),
        (TABLENS, 'content-validation-name'),
        (OFFICENS, 'value-type'),
        (TABLENS, 'number-rows-spanned'),
        (TABLENS, 'number-columns-repeated'),
        (TABLENS, 'formula'),
        (OFFICENS, 'time-value'),
    ),
    # allowed_attributes
    (TABLENS, 'table-column'): (
        (TABLENS, 'style-name'),
        (TABLENS, 'default-cell-style-name'),
        (TABLENS, 'visibility'),
        (TABLENS, 'number-columns-repeated'),
    ),
    (TABLENS, 'table-column-group'): ((TABLENS, 'display'),),
    (TABLENS, 'table-columns'): (),
    (TABLENS, 'table-header-columns'): (),
    (TABLENS, 'table-header-rows'): (),
    (TABLENS, 'table-row'): (
        (TABLENS, 'number-rows-repeated'),
        (TABLENS, 'style-name'),
        (TABLENS, 'visibility'),
        (TABLENS, 'default-cell-style-name'),
    ),
    (TABLENS, 'table-row-group'): ((TABLENS, 'display'),),
    (TABLENS, 'table-rows'): (),
    (TABLENS, 'table-source'): (
        (TABLENS, 'filter-options'),
        (XLINKNS, 'actuate'),
        (TABLENS, 'filter-name'),
        (XLINKNS, 'href'),
        (TABLENS, 'mode'),
        (TABLENS, 'table-name'),
        (XLINKNS, 'type'),
        (TABLENS, 'refresh-delay'),
    ),
    (TABLENS, 'table-template'): (
        (TEXTNS, 'last-row-end-column'),
        (TEXTNS, 'first-row-end-column'),
        (TEXTNS, 'name'),
        (TEXTNS, 'last-row-start-column'),
        (TEXTNS, 'first-row-start-column'),
    ),
    (TABLENS, 'target-range-address'): (
        (TABLENS, 'column'),
        (TABLENS, 'end-column'),
        (TABLENS, 'start-table'),
        (TABLENS, 'end-row'),
        (TABLENS, 'table'),
        (TABLENS, 'start-row'),
        (TABLENS, 'row'),
        (TABLENS, 'end-table'),
        (TABLENS, 'start-column'),
    ),
    (TABLENS, 'tracked-changes'): ((TABLENS, 'track-changes'),),
    # allowed_attributes
    (TEXTNS, 'a'): (
        (TEXTNS, 'visited-style-name'),
        (OFFICENS, 'name'),
        (OFFICENS, 'title'),
        (XLINKNS, 'show'),
        (OFFICENS, 'target-frame-name'),
        (XLINKNS, 'actuate'),
        (TEXTNS, 'style-name'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
    ),
    (TEXTNS, 'alphabetical-index'): (
        (TEXTNS, 'protected'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'protection-key'),
    ),
    (TEXTNS, 'alphabetical-index-auto-mark-file'): (
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
    ),
    (TEXTNS, 'alphabetical-index-entry-template'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'alphabetical-index-mark'): (
        (TEXTNS, 'main-entry'),
        (TEXTNS, 'key1-phonetic'),
        (TEXTNS, 'key2'),
        (TEXTNS, 'key1'),
        (TEXTNS, 'string-value'),
        (TEXTNS, 'key2-phonetic'),
        (TEXTNS, 'string-value-phonetic'),
    ),
    # allowed_attributes
    (TEXTNS, 'alphabetical-index-mark-end'): ((TEXTNS, 'id'),),
    (TEXTNS, 'alphabetical-index-mark-start'): (
        (TEXTNS, 'main-entry'),
        (TEXTNS, 'key1-phonetic'),
        (TEXTNS, 'key2'),
        (TEXTNS, 'key1'),
        (TEXTNS, 'string-value-phonetic'),
        (TEXTNS, 'key2-phonetic'),
        (TEXTNS, 'id'),
    ),
    (TEXTNS, 'alphabetical-index-source'): (
        (TEXTNS, 'capitalize-entries'),
        (FONS, 'language'),
        (TEXTNS, 'relative-tab-stop-position'),
        (TEXTNS, 'alphabetical-separators'),
        (TEXTNS, 'combine-entries-with-pp'),
        (TEXTNS, 'combine-entries-with-dash'),
        (TEXTNS, 'sort-algorithm'),
        (TEXTNS, 'ignore-case'),
        (TEXTNS, 'combine-entries'),
        (TEXTNS, 'comma-separated'),
        (FONS, 'country'),
        (TEXTNS, 'index-scope'),
        (TEXTNS, 'main-entry-style-name'),
        (TEXTNS, 'use-keys-as-entries'),
    ),
    # allowed_attributes
    (TEXTNS, 'author-initials'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'author-name'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'bibliography'): (
        (TEXTNS, 'protected'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'protection-key'),
    ),
    (TEXTNS, 'bibliography-configuration'): (
        (TEXTNS, 'suffix'),
        (FONS, 'language'),
        (TEXTNS, 'numbered-entries'),
        (FONS, 'country'),
        (TEXTNS, 'sort-by-position'),
        (TEXTNS, 'sort-algorithm'),
        (TEXTNS, 'prefix'),
    ),
    (TEXTNS, 'bibliography-entry-template'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'bibliography-type'),
    ),
    # allowed_attributes
    (TEXTNS, 'bibliography-mark'): (
        (TEXTNS, 'address'),
        (TEXTNS, 'annote'),
        (TEXTNS, 'author'),
        (TEXTNS, 'bibliography-type'),
        (TEXTNS, 'booktitle'),
        (TEXTNS, 'chapter'),
        (TEXTNS, 'custom1'),
        (TEXTNS, 'custom2'),
        (TEXTNS, 'custom3'),
        (TEXTNS, 'custom4'),
        (TEXTNS, 'custom5'),
        (TEXTNS, 'edition'),
        (TEXTNS, 'editor'),
        (TEXTNS, 'howpublished'),
        (TEXTNS, 'identifier'),
        (TEXTNS, 'institution'),
        (TEXTNS, 'isbn'),
        (TEXTNS, 'issn'),
        (TEXTNS, 'journal'),
        (TEXTNS, 'month'),
        (TEXTNS, 'note'),
        (TEXTNS, 'number'),
        (TEXTNS, 'organizations'),
        (TEXTNS, 'pages'),
        (TEXTNS, 'publisher'),
        (TEXTNS, 'report-type'),
        (TEXTNS, 'school'),
        (TEXTNS, 'series'),
        (TEXTNS, 'title'),
        (TEXTNS, 'url'),
        (TEXTNS, 'volume'),
        (TEXTNS, 'year'),
    ),
    (TEXTNS, 'bibliography-source'): (),
    (TEXTNS, 'bookmark'): ((TEXTNS, 'name'),),
    (TEXTNS, 'bookmark-end'): ((TEXTNS, 'name'),),
    (TEXTNS, 'bookmark-ref'): (
        (TEXTNS, 'ref-name'),
        (TEXTNS, 'reference-format'),
    ),
    (TEXTNS, 'bookmark-start'): ((TEXTNS, 'name'),),
    # allowed_attributes
    (TEXTNS, 'change'): ((TEXTNS, 'change-id'),),
    (TEXTNS, 'change-end'): ((TEXTNS, 'change-id'),),
    (TEXTNS, 'change-start'): ((TEXTNS, 'change-id'),),
    (TEXTNS, 'changed-region'): ((TEXTNS, 'id'),),
    (TEXTNS, 'chapter'): (
        (TEXTNS, 'display'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'conditional-text'): (
        (TEXTNS, 'string-value-if-true'),
        (TEXTNS, 'current-value'),
        (TEXTNS, 'string-value-if-false'),
        (TEXTNS, 'condition'),
    ),
    (TEXTNS, 'creation-date'): (
        (TEXTNS, 'date-value'),
        (TEXTNS, 'fixed'),
        (STYLENS, 'data-style-name'),
    ),
    (TEXTNS, 'creation-time'): (
        (TEXTNS, 'fixed'),
        (TEXTNS, 'time-value'),
        (STYLENS, 'data-style-name'),
    ),
    (TEXTNS, 'creator'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'database-display'): (
        (TEXTNS, 'column-name'),
        (TEXTNS, 'table-name'),
        (TEXTNS, 'table-type'),
        (TEXTNS, 'database-name'),
        (STYLENS, 'data-style-name'),
    ),
    (TEXTNS, 'database-name'): (
        (TEXTNS, 'table-name'),
        (TEXTNS, 'table-type'),
        (TEXTNS, 'database-name'),
    ),
    (TEXTNS, 'database-next'): (
        (TEXTNS, 'table-name'),
        (TEXTNS, 'table-type'),
        (TEXTNS, 'database-name'),
        (TEXTNS, 'condition'),
    ),
    (TEXTNS, 'database-row-number'): (
        (STYLENS, 'num-format'),
        (TEXTNS, 'database-name'),
        (TEXTNS, 'value'),
        (STYLENS, 'num-letter-sync'),
        (TEXTNS, 'table-name'),
        (TEXTNS, 'table-type'),
    ),
    (TEXTNS, 'database-row-select'): (
        (TEXTNS, 'row-number'),
        (TEXTNS, 'table-name'),
        (TEXTNS, 'table-type'),
        (TEXTNS, 'database-name'),
        (TEXTNS, 'condition'),
    ),
    # allowed_attributes
    (TEXTNS, 'date'): (
        (TEXTNS, 'date-value'),
        (TEXTNS, 'fixed'),
        (TEXTNS, 'date-adjust'),
        (STYLENS, 'data-style-name'),
    ),
    (TEXTNS, 'dde-connection'): ((TEXTNS, 'connection-name'),),
    (TEXTNS, 'dde-connection-decl'): (
        (OFFICENS, 'automatic-update'),
        (OFFICENS, 'dde-topic'),
        (OFFICENS, 'dde-application'),
        (OFFICENS, 'name'),
        (OFFICENS, 'dde-item'),
    ),
    (TEXTNS, 'dde-connection-decls'): (),
    (TEXTNS, 'deletion'): (),
    (TEXTNS, 'description'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'editing-cycles'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'editing-duration'): (
        (TEXTNS, 'duration'),
        (TEXTNS, 'fixed'),
        (STYLENS, 'data-style-name'),
    ),
    (TEXTNS, 'execute-macro'): ((TEXTNS, 'name'),),
    (TEXTNS, 'expression'): (
        (TEXTNS, 'display'),
        (OFFICENS, 'string-value'),
        (OFFICENS, 'value'),
        (OFFICENS, 'boolean-value'),
        (OFFICENS, 'currency'),
        (OFFICENS, 'date-value'),
        (STYLENS, 'data-style-name'),
        (OFFICENS, 'value-type'),
        (TEXTNS, 'formula'),
        (OFFICENS, 'time-value'),
    ),
    (TEXTNS, 'file-name'): (
        (TEXTNS, 'fixed'),
        (TEXTNS, 'display'),
    ),
    # allowed_attributes
    (TEXTNS, 'format-change'): (),
    (TEXTNS, 'h'): (
        (TEXTNS, 'restart-numbering'),
        (TEXTNS, 'cond-style-name'),
        (TEXTNS, 'is-list-header'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'class-names'),
        (TEXTNS, 'start-value'),
        (TEXTNS, 'id'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'hidden-paragraph'): (
        (TEXTNS, 'is-hidden'),
        (TEXTNS, 'condition'),
    ),
    (TEXTNS, 'hidden-text'): (
        (TEXTNS, 'string-value'),
        (TEXTNS, 'is-hidden'),
        (TEXTNS, 'condition'),
    ),
    (TEXTNS, 'illustration-index'): (
        (TEXTNS, 'protected'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'protection-key'),
    ),
    (TEXTNS, 'illustration-index-entry-template'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'illustration-index-source'): (
        (TEXTNS, 'index-scope'),
        (TEXTNS, 'caption-sequence-name'),
        (TEXTNS, 'use-caption'),
        (TEXTNS, 'caption-sequence-format'),
        (TEXTNS, 'relative-tab-stop-position'),
    ),
    (TEXTNS, 'index-body'): (),
    (TEXTNS, 'index-entry-bibliography'): (
        (TEXTNS, 'bibliography-data-field'),
        (TEXTNS, 'style-name'),
    ),
    (TEXTNS, 'index-entry-chapter'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'display'),
    ),
    # allowed_attributes
    (TEXTNS, 'index-entry-link-end'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'index-entry-link-start'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'index-entry-page-number'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'index-entry-span'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'index-entry-tab-stop'): (
        (STYLENS, 'position'),
        (TEXTNS, 'style-name'),
        (STYLENS, 'type'),
        (STYLENS, 'leader-char'),
    ),
    (TEXTNS, 'index-entry-text'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'index-source-style'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'index-source-styles'): ((TEXTNS, 'outline-level'),),
    (TEXTNS, 'index-title'): (
        (TEXTNS, 'protected'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'protection-key'),
    ),
    (TEXTNS, 'index-title-template'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'initial-creator'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'insertion'): (),
    # allowed_attributes
    (TEXTNS, 'keywords'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'line-break'): (),
    (TEXTNS, 'linenumbering-configuration'): (
        (TEXTNS, 'number-position'),
        (TEXTNS, 'number-lines'),
        (STYLENS, 'num-format'),
        (TEXTNS, 'count-empty-lines'),
        (TEXTNS, 'count-in-text-boxes'),
        (TEXTNS, 'style-name'),
        (STYLENS, 'num-letter-sync'),
        (TEXTNS, 'increment'),
        (TEXTNS, 'offset'),
        (TEXTNS, 'restart-on-page'),
    ),
    (TEXTNS, 'linenumbering-separator'): ((TEXTNS, 'increment'),),
    (TEXTNS, 'list'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'continue-numbering'),
    ),
    (TEXTNS, 'list-header'): (),
    (TEXTNS, 'list-item'): ((TEXTNS, 'start-value'),),
    (TEXTNS, 'list-level-style-bullet'): (
        (TEXTNS, 'level'),
        (STYLENS, 'num-prefix'),
        (STYLENS, 'num-suffix'),
        (TEXTNS, 'bullet-relative-size'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'bullet-char'),
    ),
    (TEXTNS, 'list-level-style-image'): (
        (XLINKNS, 'show'),
        (XLINKNS, 'actuate'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
        (TEXTNS, 'level'),
    ),
    (TEXTNS, 'list-level-style-number'): (
        (TEXTNS, 'level'),
        (TEXTNS, 'display-levels'),
        (STYLENS, 'num-format'),
        (STYLENS, 'num-suffix'),
        (TEXTNS, 'style-name'),
        (STYLENS, 'num-prefix'),
        (STYLENS, 'num-letter-sync'),
        (TEXTNS, 'start-value'),
    ),
    # allowed_attributes
    (TEXTNS, 'list-style'): (
        (TEXTNS, 'consecutive-numbering'),
        (STYLENS, 'display-name'),
        (STYLENS, 'name'),
    ),
    (TEXTNS, 'measure'): ((TEXTNS, 'kind'),),
    (TEXTNS, 'modification-date'): (
        (TEXTNS, 'date-value'),
        (TEXTNS, 'fixed'),
        (STYLENS, 'data-style-name'),
    ),
    (TEXTNS, 'modification-time'): (
        (TEXTNS, 'fixed'),
        (TEXTNS, 'time-value'),
        (STYLENS, 'data-style-name'),
    ),
    (TEXTNS, 'note'): (
        (TEXTNS, 'note-class'),
        (TEXTNS, 'id'),
    ),
    (TEXTNS, 'note-body'): (),
    (TEXTNS, 'note-citation'): ((TEXTNS, 'label'),),
    (TEXTNS, 'note-continuation-notice-backward'): (),
    (TEXTNS, 'note-continuation-notice-forward'): (),
    (TEXTNS, 'note-ref'): (
        (TEXTNS, 'ref-name'),
        (TEXTNS, 'note-class'),
        (TEXTNS, 'reference-format'),
    ),
    (TEXTNS, 'notes-configuration'): (
        (TEXTNS, 'citation-body-style-name'),
        (STYLENS, 'num-format'),
        (TEXTNS, 'default-style-name'),
        (STYLENS, 'num-suffix'),
        (TEXTNS, 'start-numbering-at'),
        (STYLENS, 'num-prefix'),
        (STYLENS, 'num-letter-sync'),
        (TEXTNS, 'citation-style-name'),
        (TEXTNS, 'footnotes-position'),
        (TEXTNS, 'master-page-name'),
        (TEXTNS, 'start-value'),
        (TEXTNS, 'note-class'),
    ),
    (TEXTNS, 'number'): (),
    (TEXTNS, 'numbered-paragraph'): (
        (TEXTNS, 'continue-numbering'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'start-value'),
        (TEXTNS, 'level'),
    ),
    (TEXTNS, 'object-count'): (
        (STYLENS, 'num-format'),
        (STYLENS, 'num-letter-sync'),
    ),
    (TEXTNS, 'object-index'): (
        (TEXTNS, 'protected'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'protection-key'),
    ),
    # allowed_attributes
    (TEXTNS, 'object-index-entry-template'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'object-index-source'): (
        (TEXTNS, 'use-draw-objects'),
        (TEXTNS, 'use-math-objects'),
        (TEXTNS, 'relative-tab-stop-position'),
        (TEXTNS, 'use-chart-objects'),
        (TEXTNS, 'index-scope'),
        (TEXTNS, 'use-spreadsheet-objects'),
        (TEXTNS, 'use-other-objects'),
    ),
    (TEXTNS, 'outline-level-style'): (
        (TEXTNS, 'level'),
        (TEXTNS, 'display-levels'),
        (STYLENS, 'num-format'),
        (STYLENS, 'num-suffix'),
        (TEXTNS, 'style-name'),
        (STYLENS, 'num-prefix'),
        (STYLENS, 'num-letter-sync'),
        (TEXTNS, 'start-value'),
    ),
    (TEXTNS, 'outline-style'): (),
    (TEXTNS, 'p'): (
        (TEXTNS, 'cond-style-name'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'class-names'),
        (TEXTNS, 'id'),
    ),
    (TEXTNS, 'page'): ((TEXTNS, 'master-page-name'),),
    (TEXTNS, 'page-continuation'): (
        (TEXTNS, 'string-value'),
        (TEXTNS, 'select-page'),
    ),
    (TEXTNS, 'page-number'): (
        (TEXTNS, 'page-adjust'),
        (STYLENS, 'num-format'),
        (TEXTNS, 'fixed'),
        (STYLENS, 'num-letter-sync'),
        (TEXTNS, 'select-page'),
    ),
    (TEXTNS, 'page-sequence'): (),
    (TEXTNS, 'page-variable-get'): (
        (STYLENS, 'num-format'),
        (STYLENS, 'num-letter-sync'),
    ),
    (TEXTNS, 'page-variable-set'): (
        (TEXTNS, 'active'),
        (TEXTNS, 'page-adjust'),
    ),
    (TEXTNS, 'placeholder'): (
        (TEXTNS, 'placeholder-type'),
        (TEXTNS, 'description'),
    ),
    (TEXTNS, 'print-date'): (
        (TEXTNS, 'date-value'),
        (TEXTNS, 'fixed'),
        (STYLENS, 'data-style-name'),
    ),
    (TEXTNS, 'print-time'): (
        (TEXTNS, 'fixed'),
        (TEXTNS, 'time-value'),
        (STYLENS, 'data-style-name'),
    ),
    (TEXTNS, 'printed-by'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'reference-mark'): ((TEXTNS, 'name'),),
    (TEXTNS, 'reference-mark-end'): ((TEXTNS, 'name'),),
    (TEXTNS, 'reference-mark-start'): ((TEXTNS, 'name'),),
    (TEXTNS, 'ruby'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'ruby-base'): (),
    (TEXTNS, 'ruby-text'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 's'): ((TEXTNS, 'c'),),
    (TEXTNS, 'script'): (
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
        (SCRIPTNS, 'language'),
    ),
    (TEXTNS, 'section'): (
        (TEXTNS, 'name'),
        (TEXTNS, 'protection-key'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'protected'),
        (TEXTNS, 'display'),
        (TEXTNS, 'condition'),
    ),
    (TEXTNS, 'section-source'): (
        (TEXTNS, 'filter-name'),
        (XLINKNS, 'href'),
        (XLINKNS, 'type'),
        (TEXTNS, 'section-name'),
        (XLINKNS, 'show'),
    ),
    (TEXTNS, 'sender-city'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-company'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-country'): ((TEXTNS, 'fixed'),),
    # allowed_attributes
    (TEXTNS, 'sender-email'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-fax'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-firstname'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-initials'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-lastname'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-phone-private'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-phone-work'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-position'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-postal-code'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-state-or-province'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-street'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sender-title'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'sequence'): (
        (TEXTNS, 'formula'),
        (STYLENS, 'num-format'),
        (STYLENS, 'num-letter-sync'),
        (TEXTNS, 'name'),
        (TEXTNS, 'ref-name'),
    ),
    (TEXTNS, 'sequence-decl'): (
        (TEXTNS, 'separation-character'),
        (TEXTNS, 'display-outline-level'),
        (TEXTNS, 'name'),
    ),
    (TEXTNS, 'sequence-decls'): (),
    (TEXTNS, 'sequence-ref'): (
        (TEXTNS, 'ref-name'),
        (TEXTNS, 'reference-format'),
    ),
    (TEXTNS, 'sheet-name'): (),
    (TEXTNS, 'soft-page-break'): (),
    (TEXTNS, 'sort-key'): (
        (TEXTNS, 'sort-ascending'),
        (TEXTNS, 'key'),
    ),
    # allowed_attributes
    (TEXTNS, 'span'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'class-names'),
    ),
    (TEXTNS, 'subject'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'tab'): ((TEXTNS, 'tab-ref'),),
    (TEXTNS, 'table-formula'): (
        (TEXTNS, 'formula'),
        (STYLENS, 'data-style-name'),
        (TEXTNS, 'display'),
    ),
    (TEXTNS, 'table-index'): (
        (TEXTNS, 'protected'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'protection-key'),
    ),
    (TEXTNS, 'table-index-entry-template'): ((TEXTNS, 'style-name'),),
    (TEXTNS, 'table-index-source'): (
        (TEXTNS, 'index-scope'),
        (TEXTNS, 'caption-sequence-name'),
        (TEXTNS, 'use-caption'),
        (TEXTNS, 'caption-sequence-format'),
        (TEXTNS, 'relative-tab-stop-position'),
    ),
    # allowed_attributes
    (TEXTNS, 'table-of-content'): (
        (TEXTNS, 'protected'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'protection-key'),
    ),
    (TEXTNS, 'table-of-content-entry-template'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'table-of-content-source'): (
        (TEXTNS, 'index-scope'),
        (TEXTNS, 'outline-level'),
        (TEXTNS, 'relative-tab-stop-position'),
        (TEXTNS, 'use-index-marks'),
        (TEXTNS, 'use-outline-level'),
        (TEXTNS, 'use-index-source-styles'),
    ),
    (TEXTNS, 'template-name'): ((TEXTNS, 'display'),),
    (TEXTNS, 'text-input'): ((TEXTNS, 'description'),),
    (TEXTNS, 'time'): (
        (TEXTNS, 'time-adjust'),
        (TEXTNS, 'fixed'),
        (TEXTNS, 'time-value'),
        (STYLENS, 'data-style-name'),
    ),
    (TEXTNS, 'title'): ((TEXTNS, 'fixed'),),
    (TEXTNS, 'toc-mark'): (
        (TEXTNS, 'string-value'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'toc-mark-end'): ((TEXTNS, 'id'),),
    (TEXTNS, 'toc-mark-start'): (
        (TEXTNS, 'id'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'tracked-changes'): ((TEXTNS, 'track-changes'),),
    (TEXTNS, 'user-defined'): (
        (TEXTNS, 'name'),
        (OFFICENS, 'string-value'),
        (OFFICENS, 'value'),
        (OFFICENS, 'boolean-value'),
        (OFFICENS, 'date-value'),
        (STYLENS, 'data-style-name'),
        (TEXTNS, 'fixed'),
        (OFFICENS, 'time-value'),
    ),
    (TEXTNS, 'user-field-decl'): (
        (TEXTNS, 'name'),
        (OFFICENS, 'string-value'),
        (OFFICENS, 'value'),
        (OFFICENS, 'boolean-value'),
        (OFFICENS, 'currency'),
        (OFFICENS, 'date-value'),
        (OFFICENS, 'value-type'),
        (TEXTNS, 'formula'),
        (OFFICENS, 'time-value'),
    ),
    (TEXTNS, 'user-field-decls'): (),
    (TEXTNS, 'user-field-get'): (
        (STYLENS, 'data-style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'display'),
    ),
    # allowed_attributes
    (TEXTNS, 'user-field-input'): (
        (STYLENS, 'data-style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'description'),
    ),
    (TEXTNS, 'user-index'): (
        (TEXTNS, 'protected'),
        (TEXTNS, 'style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'protection-key'),
    ),
    (TEXTNS, 'user-index-entry-template'): (
        (TEXTNS, 'style-name'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'user-index-mark'): (
        (TEXTNS, 'index-name'),
        (TEXTNS, 'string-value'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'user-index-mark-end'): (
        (TEXTNS, 'id'),
        (TEXTNS, 'outline-level'),
    ),
    (TEXTNS, 'user-index-mark-start'): (
        (TEXTNS, 'index-name'),
        (TEXTNS, 'id'),
        (TEXTNS, 'outline-level'),
    ),
    # allowed_attributes
    (TEXTNS, 'user-index-source'): (
        (TEXTNS, 'copy-outline-levels'),
        (TEXTNS, 'index-name'),
        (TEXTNS, 'index-scope'),
        (TEXTNS, 'relative-tab-stop-position'),
        (TEXTNS, 'use-floating-frames'),
        (TEXTNS, 'use-graphics'),
        (TEXTNS, 'use-index-marks'),
        (TEXTNS, 'use-objects'),
        (TEXTNS, 'use-tables'),
    ),
    (TEXTNS, 'variable-decl'): (
        (TEXTNS, 'name'),
        (OFFICENS, 'value-type'),
    ),
    (TEXTNS, 'variable-decls'): (),
    (TEXTNS, 'variable-get'): (
        (STYLENS, 'data-style-name'),
        (TEXTNS, 'name'),
        (TEXTNS, 'display'),
    ),
    (TEXTNS, 'variable-input'): (
        (STYLENS, 'data-style-name'),
        (TEXTNS, 'display'),
        (TEXTNS, 'name'),
        (OFFICENS, 'value-type'),
        (TEXTNS, 'description'),
    ),
    (TEXTNS, 'variable-set'): (
        (TEXTNS, 'name'),
        (TEXTNS, 'display'),
        (OFFICENS, 'string-value'),
        (OFFICENS, 'value'),
        (OFFICENS, 'boolean-value'),
        (OFFICENS, 'currency'),
        (OFFICENS, 'date-value'),
        (STYLENS, 'data-style-name'),
        (OFFICENS, 'value-type'),
        (TEXTNS, 'formula'),
        (OFFICENS, 'time-value'),
    ),
    # allowed_attributes
}
