What Is PyXB?ΒΆ

PyXB is a pure Python package that generates Python code for classes that correspond to data structures defined by XMLSchema. In concept it is similar to JAXB for Java and CodeSynthesis XSD for C++.

The major goals of PyXB are:

  • Provide a generated Python interface that is “Pythonic”, meaning similar to one that would have been hand-written:
    • Attributes and elements are Python properties, with name conflicts resolved in favor of elements
    • Elements with maxOccurs larger than 1 are stored as Python lists
    • Bindings for type extensions inherit from the binding for the base type
    • Enumeration constraints are exposed as class (constant) variables
  • Support bi-directional conversion (document to Python and back)
  • Allow easy customization of the generated bindings to provide functionality along with content
  • Support all XMLSchema features that are in common use, including:
    • complex content models (nested all/choice/sequence)
    • cross-namespace dependencies
    • include and import directives
    • constraints on simple types
  • Validate the documents against their schema

Secondary goals, some of which have been achieved in the current release, are listed in PyXB Vision.

Previous topic

Overview

Next topic

How to use it

This Page