Mercurial > pub > Impl
diff 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 |
line wrap: on
line diff
--- a/Lib/IMPL/DOM/Schema.pm Wed Sep 09 17:43:31 2009 +0400 +++ b/Lib/IMPL/DOM/Schema.pm Thu Sep 10 17:42:47 2009 +0400 @@ -16,6 +16,12 @@ $_[0]->{$_TypesMap}->{$_[1]}; } +sub Process { + my ($this) = @_; + + $this->{$_TypesMap} = { map { $_->type, $_ } grep {$_->isa('IMPL::DOM::Schema::Type')} @{$this->childNodes} }; +} + sub MetaSchema { my $schema = new IMPL::DOM::Schema(nodeName => 'schema'); @@ -70,6 +76,8 @@ ) ); + $schema->Process; + return $schema; } @@ -79,6 +87,24 @@ =pod +=head1 DESCRIPTION + +Схема документа. Наследует C<IMPL::DOM::Document> + +=head1 METHODS + +=over + +=item C<< $obj->Process() >> + +Обновляет таблицу типов из содержимого. + +=item C<< $obj->ResolveType($typeName) >> + +Возвращает схему типа c именем C<$typeName>. + +=back + =head1 META SCHEMA Схема для описания схемы, эта схема используется для постороения других схем