my $xsd=XML::Compile::Schema->new(\@array); my $t= $xsd->template('TREE',$xsd->elements()); print LOG Dumper($t); #### $VAR1 = { 'attrs' => [], ... 'elems' => [ bless( { 'struct' => [...], 'elems' => [ { ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ { ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [ ... ], 'elems' => [ { ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [ ..., 'elems' => [ { ... }, { ... }, { ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { 'attrs' => [], 'elems' => [ bless( { ..., 'elems' => [ { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ {...}, {...} ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [ ... ], 'elems' => [ { ... }, { ... }, { ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [ ... ], 'elems' => [ { ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [ ... ], 'elems' => [ { 'attrs' => [], 'elems' => [ bless( { 'struct' => [ ... ], 'elems' => [ { ... }, { ... }, { ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [... ], 'elems' => [ { ... }, { ... }, { ... }, { ... }, { ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ { ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [... ], 'elems' => [ {...}, {...}, { ... }, { ... }, { ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { ... }, { ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ { ...}, {...}, {...} ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { ... }, { ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ {...}, {...}, {...}, {...}, {...}, {...}, {...} ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ {...}, {...}, {...}, {...}, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ {...}, {...} ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... }, { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ { 'attrs' => [], 'elems' => [ bless( { 'struct' => [...], 'elems' => [ {...}, {...}, {...}, {...} ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... } ], 'tag' => 'sequence' }, 'BLOCK' ) ], ... };