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 |
