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
 
 Схема для описания схемы, эта схема используется для постороения других схем