# 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.