schema_parser classes

The ‘’OcxSchema’’ class

class schema_parser.parser.OcxSchema(logger, local_folder='schema_versions\\\\')[source]

Bases: object

The OcxSchema provides functionality for parsing the OCX xsd schema and storing all the elements.

Parameters:

logger – The main python logger

Variables:
  • _namespace – The dict of all namespaces on the form (prefix, namespace) key-value pairs resulting from parsing all schema files, W3C.

  • _ocx_global_elements – Hash table as key-value pairs (tag, OcxSchemaElement) for all parsed schema elements

  • _is_parsed – True if a schema has been parsed, False otherwise

  • _schema_version – The version of the parsed schema

  • _local_folder – The local folder where any external schemas will be downloaded

  • _schema_changes – A list of all schema changes described by the tag SchemaChange contained in the xsd file.

  • _schema_types – The list of xsd types to be parsed. Only these types will be stored.

  • _default_schema – The default schema to be parsed

  • _builtin_xs_types – W3C primitive data types. www.w3.org. Defined in config.yaml

get_default_schema()[source]

Return the default schema to be parsed.

Return type:

str

Returns:

The default schema url.

get_namespaces()[source]

The parsed namespaces’

Return type:

Dict

Returns:

The dict of namespaces as (namespace,prefix) key-value pairs

get_ocx_element_from_type(schema_type)[source]

Method to retrieve the schema element etree.Element with the key ‘type’

Parameters:

schema_type – the ocx type on the form prefix:name

Return type:

Optional[OcxGlobalElement]

Returns:

The OcxGlobalElement instance

get_ocx_elements()[source]

All ocx OcxGlobalElement elements

Return type:

List

Returns:

The list of all parsed OcxGlobalElement instances

get_schema_changes()[source]

The OCX schema change history

Return type:

Dict

Returns:

The schema changes for all schema versions

get_schema_folder()[source]

Return the local folder where the schemas are stored. The local folder is relative to the project root.

Return type:

str

Returns:

The relative path to the local schema folder.

get_schema_version()[source]

The OCX schema version

Return type:

str

Returns:

The coded version string of the OCX schema

is_parsed()[source]
Return type:

bool

process_schema(schema_url='https://raw.githubusercontent.com/OCXStandard/OCX_Schema/working_draft/OCX_Schema.xsd')[source]

Process the XSD schema file and create all hash tables of global elements.

Return type:

bool

Returns:

True of processed OK, False otherwise.

put_default_schema(schema_url)[source]

Return the default schema to be parsed.

Parameters:

schema_url – The location of the schema

put_schema_folder(local_folder)[source]

Set the local folder where the schemas are stored. The local folder is relative to the project root.

tbl_attribute_groups()[source]

All parsed attributeGroup types in the schema and any referenced schemas’

Return type:

Dict

Returns:

List of SchemaType data class holding attributeGroup attributes.

tbl_attribute_types()[source]

The table of all parsed attribute elements in the schema and any referenced schemas’

Return type:

Dict

Returns:

The SchemaType data class attributes of attributeType

tbl_complex_types()[source]

The table of all parsed complexType elements in the schema and any referenced schemas’

Return type:

Dict

Returns:

The SchemaType data class attributes of complexType

tbl_element_types()[source]

The table of all parsed elements of type element in the schema and any referenced schemas’

Return type:

Dict

Returns:

The SchemaType data class attributes of element

tbl_simple_types()[source]

The table of all parsed simpleType elements in the schema and any referenced schemas’

Return type:

Dict

Returns:

The SchemaType data class attributes of simpleType

tbl_summary()[source]

The summary of the parsed schema and any referenced schemas’

Return type:

SchemaSummary

Returns:

The schema summary

The ‘’SchemaHelper’’ class

class schema_parser.helpers.SchemaHelper[source]

Bases: object

A utility class for retrieving OCX attributes and information from an OCX xsd element

static find_schema_changes(root)[source]

Find any schema version changes with tag SchemaChange

Parameters:

root – The root element of the schema

Return type:

List[SchemaChange]

Returns:

A list of SchemaChange dataclasses

classmethod get_reference(element)[source]

The element reference

Return type:

Optional[str]

Returns:

The reference to a global element on the form prefix:name. Returns None if the element is not a reference.

static get_schema_version(root)[source]

Get the current OCX schema version

Parameters:

root – The root element of the schema

Return type:

str

Returns:

The version of the OCX schema

static get_type(element)[source]

The element type given by the element attribute or by its complexContent

Return type:

str

Returns:

The global element type on the form prefix:name. If the element has no type, untyped is returned.

classmethod is_reference(element)[source]

Is a reference or not

Return type:

bool

Returns:

True if the element is a reference, False otherwise

classmethod schema_changes_data_grid(root)[source]

A dictionary of the content of all SchemaChange tags

Parameters:

root – The root element of the schema

Return type:

Dict

Returns:

A dict dta grid with a unique id as key

static unique_tag(name, namespace)[source]

A unique global tag from the element name and namespace

Parameters:
  • name – The name of the element

  • namespace – The namespace

Return type:

str

Returns:

A unique element tag on the form {namespace}name

The ‘’SchemaType’’ class

class schema_parser.data_classes.SchemaType(prefix, name, tag, source_line)[source]

Bases: BaseDataClass

Class for xsd schema type information

Parameters:
  • name – The schema type name

  • prefix – The schema type namespace prefix

  • source_line – The line number in the schema file where the type is defined

  • tag – The schema type tag

name: str
prefix: str
source_line: int
tag: str

The ‘’BaseDataClass’’ class

class schema_parser.data_classes.BaseDataClass[source]

Bases: object

Base class for OCX dataclasses.

Each sub-class has to implement a field metadata with name header for each of its attributes, for example:

name : str = field(metadata={'header': '<User friendly field name>'})

to_dict()[source]

Output the data class as a dict with field names as keys.

Return type:

Dict

The ‘’SchemaSummary’’ class

class schema_parser.data_classes.SchemaSummary(schema_version, schema_types, schema_namespaces)[source]

Bases: object

Class for schema summary information

Parameters:
  • schema_version – The schema version

  • schema_types – Tuples of the number of schema types

  • schema_namespaces – Tuples of namespace prefixes

schema_namespaces: List[Tuple]
schema_types: List[Tuple]
schema_version: List[Tuple]

The ‘’SchemaChange’’ class

class schema_parser.data_classes.SchemaChange(version, author, date, description='')[source]

Bases: BaseDataClass

Class for keeping track of OCX schema changes

Parameters:
  • version – The schema version the change applies to

  • author – The author of the schem change

  • date – The date of the schema change

  • description – A description of the change

author: str
date: str
description: str = ''
version: str

The ‘’OcxGlobalElement’’ class

class schema_parser.elements.OcxGlobalElement(xsd_element, unique_tag, logger)[source]

Bases: object

Global schema element class capturing the xsd schema definition of a global xs:element.

Parameters:
  • xsd_element – The lxml.etree.Element class

  • logger – The main python logger

Variables:
  • log – The Python logger instance

  • _element – The lxml.Element instance

  • _attributes – The attributes of the global element including the attributes of all schema supertypes

  • _reference – The OcxGlobalElement hase reference to a global schema element. ‘None’ if no reference

  • _tag – The unique global tag of the OcXGlobalElement

  • _parents – Hash table of references to all parent schema types with tag as key

  • _children – List of references to all children schema types with tag as key. Includes also children of all super-types.

  • -assertions – List of any assertions associated with the xs:element

add_assertion(test)[source]

Add an assertion test associated to me’

Parameters:

test – The definition of the assertion represented as a string

Returns:

Nothing

add_attribute(attribute)[source]

Add attributes to the global element

Parameters:

attribute – The OcxAttribute instance to be added

add_child(child)[source]

Add a child of an OCX global element’

Parameters:

child – The added child instance of a OcxChildElement class

Returns:

Nothing

attributes_to_dict()[source]

A dictionary of all OcxGlobalElement attribute values

Return type:

Dict

Returns:

A dictionary of attribute values with heading keys

Heading keys

Attribute

Type

Use

Default

Fixed

Description

children_to_dict()[source]

A dictionary of all OcxGlobalElement children values

Return type:

Dict

Returns:

table – A dictionary of attribute values with heading keys:

Heading keys

Child

Type

Use

Cardinality

Description

get_annotation()[source]

The global element annotation or description

Return type:

str

Returns:

The annotation string of the element

get_assertion_tests()[source]

Get all my assertions

Return type:

List

Returns:

Assertion tests in a list

get_attributes()[source]

The global element attributes including also parent attributes

Return type:

List

Returns:

A dict of all attributes including also parent attributes

get_cardinality()[source]

Get the cardinality of the OcxGlobalElement

Return type:

str

Returns:

The cardinality as sting represented by [lower, upper]

get_children()[source]

Get all my children xsd types

Return type:

List

Returns:

Return all children as a dict of key-value pairs (tag, OCXChildElement)

get_name()[source]

The global element name

Return type:

str

Returns:

The name of the global schema element as a str

get_namespace()[source]

The element _namespace

Return type:

str

Returns:

The _namespace of the global schema element as a str

get_parent_names()[source]

Get all my parent names

Return type:

List

Returns:

Return all parents names in a list

get_parents()[source]

Get all my attributes

Return type:

dict

Returns:

Return all parents as a dict of key-value pairs (tag, Element)

get_prefix()[source]

The global element _namespace prefix

Return type:

str

Returns:

The type of the global schema element as a str

get_properties()[source]

A dictionary of all OcxGlobalElement property values

Return type:

Dict

Returns:

table

A dictionary of property values with heading keys:

Heading keys

Name

Type

Use

Cardinality

Fixed

Description

get_reference()[source]

Get the reference to a global element

Return type:

str

Returns:

tag – The unique tag to the global referenced element

get_schema_element()[source]

Get the schema xsd element of the OcxSchemeElement object

Return type:

Element

Returns:

My xsd schema element

get_substitution_group()[source]

Return the name of the substitutionGroup

Return type:

Optional[str]

Returns:

The name of the substitutionGroup, None otherwise

get_tag()[source]

The global schema element unique tag

Return type:

str

Returns:

The element tag on the form {prefix}name

get_type()[source]

The global element type

Return type:

str

Returns:

The type of the global schema element as a str

get_use()[source]

The element’s use, required or optional

Return type:

str

Returns:

The element usereq. if mandatory, else opt

has_assertion()[source]

Whether the element has assertions or not’

Return type:

bool

Returns:

Tru if the global element as assertions, False otherwise

is_abstract()[source]

Whether the element is abstract

Return type:

bool

Returns:

True if the element is abstract, False otherwise

is_choice()[source]

Whether the element is a choice or not

Return type:

bool

Returns:

True if the element is a choice, False otherwise

is_mandatory()[source]

Whether the element mandatory or not

Return type:

bool

Returns:

Returns True if the element is mandatory, False otherwise

is_reference()[source]

Whether the element has a reference or not

Return type:

bool

Returns:

is_reference – True if the element has a reference, False otherwise

is_substitution_group()[source]

Whether the element is part of a substitutionGroup

Return type:

bool

Returns:

True if the element is a substitutionGroup, False otherwise

put_cardinality(element)[source]

Override the cardinality of the OcxGlobalElement

Parameters:

element – the etree.Element node

put_child(tag, child)[source]

Add a child element of type OCxChildElement

Parameters:
  • tag – The unique tag of the parent element

  • child – The child xsd schema element

Returns:

None

put_parent(tag, parent)[source]

Add a parent element

Parameters:
  • tag – The unique tag of the parent element

  • parent – The parent xsd schema element

Returns:

None

put_reference(tag)[source]

Assign the reference to a global element

Returns:

tag – The unique tag to the global referenced element

The ‘’OcxChildElement’’ class

class schema_parser.elements.OcxChildElement(xs_element)[source]

Bases: object

Class capturing the OCX xsd schema definition of a child or sub element xs:element.

Parameters:

xs_element – The lxml.etree.Element class

Variables:
  • _tag – The unique tag of th schema element

  • _element – The xs:element instance

  • _name – The attribute name

  • _type – The attribute type

  • _use – Whether the child is optional or required

  • _cardinality – The cardinality of the element

  • _annotation – The element description

  • _is_choice – The child element is a xs:choice

attributes_to_dict()[source]

A dictionary of the ‘’OcxChildElement’’ values

Return type:

Dict

Returns:

table – dictionary of all OcxAttribute attribute values with columns:

Heading titles

Child

Cardinality

Choice

Global

Description

get_cardinality()[source]

Get the cardinality of the OcxChildElement

Return type:

str

Returns:

The cardinality as sting represented by [lower, upper]

get_description()[source]

The annotation text of the element

Return type:

str

Returns:

The description of the element

get_name()[source]

The name of the xs:attribute

Return type:

str

Returns:

The name of the attribute

get_type()[source]

The type of the xs:attribute

Return type:

str

Returns:

The attribute type

get_use()[source]

Mandatory or optional sub element

Return type:

str

Returns:

The element use, either req. or opt.

is_choice()[source]

Whether the element is a choice or not

Return type:

bool

Returns:

True if the element is a choice, False otherwise

is_global()[source]

Whether the element is a global schema element

Return type:

bool

Returns:

True if the element is global, False otherwise

is_mandatory()[source]

Whether the element mandatory or not

Return type:

bool

Returns:

True if the element is mandatory, False otherwise

put_description(text)[source]

Set the xs:attribute documentation string

Returns:

None

put_name(name)[source]

Set the xs:attribute name

Returns:

None

put_reference(tag)[source]

Set the tag reference to the global schema element

Returns:

None

put_type(type)[source]

Set the xs:attribute type string

Returns:

None

put_use(use)[source]

Set the xs:attribute use string

Returns:

None

The ‘’OcxAttribute’’ class

class schema_parser.elements.OcxAttribute(xs_attribute)[source]

Bases: object

Global schema attribute class capturing the xsd schema definition of a global xs:attribute.

Parameters:

xs_attribute – The lxml.etree.Element class

Variables:
  • _name – The attribute name

  • _type – The attribute type

  • _use – Whether the attribute is optional or required

  • _fixed – Whether the attribute has a fixed value if any

  • _default – The deaflalt value of the attribute if any

  • _annotation – The attribute description

  • _is_global – True if the element is global, False otherwise

attributes_to_dict()[source]

A dictionary of the OcxAttribute values

Return type:

Dict

Returns:

table – A dictionary of all OcxAttribute attribute values with columns:

Heading titles

Attribute

Type

Use

Default

Fixed

Description

get_default()[source]

The default value of the xs:attribute

Return type:

str

Returns:

Returns the default value of the attribute or an empty string if None

get_description()[source]

The annotation string of the xs:attribute

Return type:

str

Returns:

The attribute description text

get_fixed()[source]

The fixed value of the xs:attribute

Return type:

str

Returns:

Returns the fixed value of the attribute or an empty string if None

get_name()[source]

The name of the xs:attribute

Return type:

str

Returns:

The name of the attribute

get_type()[source]

The type of the xs:attribute

Return type:

str

Returns:

The attribute type

get_use()[source]

The xs:attribute use (optional or required)

Return type:

str

Returns:

Returns either ‘required’ or ‘optional’

put_description(text)[source]

Set the xs:attribute documentation string

Returns:

None

put_name(name)[source]

Set the xs:attribute name

Returns:

None

put_type(type)[source]

Set the xs:attribute type string

Returns:

None

put_use(use)[source]

Set the xs:attribute use string

Returns:

None