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
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
See Unsupported features in XML::Compile::Translate
See performance optimization in XML::Compile::Translate
See qualified XML in XML::Compile::Translate
See Name-spaces in XML::Compile::Translate
See Wildcards handlers in XML::Compile::Translate
Wildcards are not (yet) supported.
Hooks are implemented since version 0.82. They can be used to improve the template output.
None defined yet.
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.
None defined yet.
Typemaps are currently only available to improve the PERL 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.
$schemas->template(PERL => $some_type, typemap => { $type1 => '&myfunc' # $myfunc->('WRITER', ...) , $type2 => '$interf' # $interf->($object, ...) , $type3 => 'My::Class' });