SYNOPSIS

 my $schema = XML::Compile::Schema->new(...);
 print $schema->template(XML  => $type, ...);
 print $schema->template(PERL => $type, ...);

 # script as wrapper for this module
 schema2example -f XML ...

See SYNOPSIS in XML::Compile::Translate

DESCRIPTION

The translator understands schemas, but does not encode that into actions. This module interprets the parse results of the translator, and creates a kind of abstract syntax tree from it, which can be used for documentational purposes. Then, it implements to ways to represent that knowledge: as an XML or a Perl example of the data-structure which the schema describes.

See DESCRIPTION in XML::Compile::Translate

Unsupported features

See Unsupported features in XML::Compile::Translate

DETAILS

Translator options

performance optimization

See performance optimization in XML::Compile::Translate

qualified XML

See qualified XML in XML::Compile::Translate

Name-spaces

See Name-spaces in XML::Compile::Translate

Wildcards handlers

See Wildcards handlers in XML::Compile::Translate

Processing Wildcards

Wildcards are not (yet) supported.

Schema hooks

Hooks are implemented since version 0.82. They can be used to improve the template output.

hooks executed before the template is generated

None defined yet.

hooks executed as replacement

The predefined hook COLLAPSE can be used to remove the extensive listing of some elements. Usually used with a type of which you know the structure or which is repeated often.

hooks for post-processing, after the data is collected

None defined yet.

Typemaps

Typemaps are currently only available to improve the PERL output.

Typemaps for PERL template output

You can pass < &function_name > to indicate that the code reference with variable name < $function_name > will be called. Mind the change of < & > into < $ >.

When < $object_name > is provided, then that object is an interface object, which will be called for the indicated type.

In case class name (any bareword will do) is specified, it is shown as a call to the toXML() instance method call from some data object of the specified class.

» Example: typemaps with template
  $schemas->template(PERL => $some_type, typemap =>
    { $type1 => '&myfunc'   # $myfunc->('WRITER', ...)
    , $type2 => '$interf'   # $interf->($object, ...)
    , $type3 => 'My::Class'
    });