xmlchemy
xmlchemy
¶
Enabling declarative definition of lxml custom element classes.
XmlString
¶
Bases: str
Provides string comparison override suitable for serialized XML that is useful for tests.
MetaOxmlElement
¶
Bases: type
Metaclass for BaseOxmlElement.
Source code in src/docx/oxml/xmlchemy.py
BaseAttribute
¶
BaseAttribute(
attr_name: str,
simple_type: Type[BaseXmlEnum] | Type[BaseSimpleType],
)
Base class for OptionalAttribute and RequiredAttribute.
Provides common methods.
Source code in src/docx/oxml/xmlchemy.py
populate_class_members
¶
populate_class_members(
element_cls: MetaOxmlElement, prop_name: str
) -> None
Add the appropriate methods to element_cls.
OptionalAttribute
¶
OptionalAttribute(
attr_name: str,
simple_type: Type[BaseXmlEnum] | Type[BaseSimpleType],
default: BaseXmlEnum
| BaseSimpleType
| str
| bool
| None = None,
)
Bases: BaseAttribute
Defines an optional attribute on a custom element class.
An optional attribute returns a default value when not present for reading. When
assigned None, the attribute is removed, but still returns the default value when
one is specified.
Source code in src/docx/oxml/xmlchemy.py
RequiredAttribute
¶
RequiredAttribute(
attr_name: str,
simple_type: Type[BaseXmlEnum] | Type[BaseSimpleType],
)
Bases: BaseAttribute
Defines a required attribute on a custom element class.
A required attribute is assumed to be present for reading, so does not have a
default value; its actual value is always used. If missing on read, an
InvalidXmlError is raised. It also does not remove the attribute if None is
assigned. Assigning None raises TypeError or ValueError, depending on the
simple type of the attribute.
Source code in src/docx/oxml/xmlchemy.py
_BaseChildElement
¶
Base class for the child-element classes.
The child-element sub-classes correspond to varying cardinalities, such as ZeroOrOne and ZeroOrMore.
Source code in src/docx/oxml/xmlchemy.py
populate_class_members
¶
populate_class_members(
element_cls: MetaOxmlElement, prop_name: str
) -> None
Baseline behavior for adding the appropriate methods to element_cls.
Choice
¶
Bases: _BaseChildElement
Defines a child element belonging to a group, only one of which may appear as a child.
Source code in src/docx/oxml/xmlchemy.py
populate_class_members
¶
populate_class_members(
element_cls: MetaOxmlElement,
group_prop_name: str,
successors: tuple[str, ...],
) -> None
Add the appropriate methods to element_cls.
Source code in src/docx/oxml/xmlchemy.py
OneAndOnlyOne
¶
Bases: _BaseChildElement
Defines a required child element for MetaOxmlElement.
Source code in src/docx/oxml/xmlchemy.py
populate_class_members
¶
populate_class_members(
element_cls: MetaOxmlElement, prop_name: str
) -> None
Add the appropriate methods to element_cls.
OneOrMore
¶
Bases: _BaseChildElement
Defines a repeating child element for MetaOxmlElement that must appear at least once.
Source code in src/docx/oxml/xmlchemy.py
populate_class_members
¶
populate_class_members(
element_cls: MetaOxmlElement, prop_name: str
) -> None
Add the appropriate methods to element_cls.
Source code in src/docx/oxml/xmlchemy.py
ZeroOrMore
¶
Bases: _BaseChildElement
Defines an optional repeating child element for MetaOxmlElement.
Source code in src/docx/oxml/xmlchemy.py
populate_class_members
¶
populate_class_members(
element_cls: MetaOxmlElement, prop_name: str
) -> None
Add the appropriate methods to element_cls.
Source code in src/docx/oxml/xmlchemy.py
ZeroOrOne
¶
Bases: _BaseChildElement
Defines an optional child element for MetaOxmlElement.
Source code in src/docx/oxml/xmlchemy.py
populate_class_members
¶
populate_class_members(
element_cls: MetaOxmlElement, prop_name: str
) -> None
Add the appropriate methods to element_cls.
Source code in src/docx/oxml/xmlchemy.py
ZeroOrOneChoice
¶
ZeroOrOneChoice(
choices: Sequence[Choice],
successors: tuple[str, ...] = (),
)
Bases: _BaseChildElement
Correspondes to an EG_* element group where at most one of its members may
appear as a child.
Source code in src/docx/oxml/xmlchemy.py
populate_class_members
¶
populate_class_members(
element_cls: MetaOxmlElement, prop_name: str
) -> None
Add the appropriate methods to element_cls.
Source code in src/docx/oxml/xmlchemy.py
BaseOxmlElement
¶
Bases: ElementBase
Effective base class for all custom element classes.
Adds standardized behavior to all classes in one place.
xml
property
¶
XML string for this element, suitable for testing purposes.
Pretty printed for readability and without an XML declaration at the top.
first_child_found_in
¶
First child with tag in tagnames, or None if not found.
Source code in src/docx/oxml/xmlchemy.py
remove_all
¶
Remove child elements with tagname (e.g. "a:p") in tagnames.
xpath
¶
Override of lxml _Element.xpath() method.
Provides standard Open XML namespace mapping (nsmap) in centralized location.
namespaces adds prefixes not in the standard mapping, which is needed to
query elements from vendor or custom namespaces. Entries override the standard
mapping where the prefixes collide.
variables binds values to XPath variables, avoiding unsafe string
interpolation for user-supplied values.
Source code in src/docx/oxml/xmlchemy.py
serialize_for_reading
¶
Serialize element to human-readable XML suitable for tests.
No XML declaration.