comparison Lib/IMPL/DOM/Schema.pm @ 18:818c74b038ae

DOM Schema + tests
author Sergey
date Thu, 10 Sep 2009 17:42:47 +0400
parents 7f88e01b58f8
children 1ca530e5c9c5
comparison
equal deleted inserted replaced
17:7f88e01b58f8 18:818c74b038ae
12 private _direct property _TypesMap => prop_all; 12 private _direct property _TypesMap => prop_all;
13 } 13 }
14 14
15 sub ResoveType { 15 sub ResoveType {
16 $_[0]->{$_TypesMap}->{$_[1]}; 16 $_[0]->{$_TypesMap}->{$_[1]};
17 }
18
19 sub Process {
20 my ($this) = @_;
21
22 $this->{$_TypesMap} = { map { $_->type, $_ } grep {$_->isa('IMPL::DOM::Schema::Type')} @{$this->childNodes} };
17 } 23 }
18 24
19 sub MetaSchema { 25 sub MetaSchema {
20 my $schema = new IMPL::DOM::Schema(nodeName => 'schema'); 26 my $schema = new IMPL::DOM::Schema(nodeName => 'schema');
21 27
68 IMPL::DOM::Schema::AnyNode(maxOccur => 'unbounded', minOccur => 0) 74 IMPL::DOM::Schema::AnyNode(maxOccur => 'unbounded', minOccur => 0)
69 ) 75 )
70 ) 76 )
71 ); 77 );
72 78
79 $schema->Process;
80
73 return $schema; 81 return $schema;
74 } 82 }
75 83
76 1; 84 1;
77 85
78 __END__ 86 __END__
79 87
80 =pod 88 =pod
89
90 =head1 DESCRIPTION
91
92 Схема документа. Наследует C<IMPL::DOM::Document>
93
94 =head1 METHODS
95
96 =over
97
98 =item C<< $obj->Process() >>
99
100 Обновляет таблицу типов из содержимого.
101
102 =item C<< $obj->ResolveType($typeName) >>
103
104 Возвращает схему типа c именем C<$typeName>.
105
106 =back
81 107
82 =head1 META SCHEMA 108 =head1 META SCHEMA
83 109
84 Схема для описания схемы, эта схема используется для постороения других схем 110 Схема для описания схемы, эта схема используется для постороения других схем
85 111