Mercurial > pub > Impl
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 |