| 49 | 1 package IMPL::DOM::Schema::ComplexNode; | 
|  | 2 use strict; | 
|  | 3 use warnings; | 
|  | 4 | 
|  | 5 use base qw(IMPL::DOM::Schema::Node); | 
|  | 6 use IMPL::Class::Property; | 
|  | 7 | 
|  | 8 BEGIN { | 
|  | 9     public property content => { | 
|  | 10         get => \&_getContent, | 
|  | 11         set => \&_setContent | 
|  | 12     } | 
|  | 13 } | 
|  | 14 | 
|  | 15 our %CTOR = ( | 
|  | 16     'IMPL::DOM::Schema::Node' => sub {my %args = @_; $args{nodeName} ||= 'ComplexNode'; %args } | 
|  | 17 ); | 
|  | 18 | 
|  | 19 sub _getContent { | 
|  | 20     $_[0]->firstChild; | 
|  | 21 } | 
|  | 22 | 
|  | 23 sub _setContent { | 
|  | 24     $_[0]->firstChild($_[1]); | 
|  | 25 } | 
|  | 26 | 
|  | 27 sub Validate { | 
|  | 28     my ($this,$node) = @_; | 
|  | 29 | 
|  | 30     map $_->Validate($node), @{$this->childNodes}; | 
|  | 31 } | 
|  | 32 | 
|  | 33 1; | 
|  | 34 | 
|  | 35 __END__ | 
|  | 36 | 
|  | 37 =pod | 
|  | 38 | 
|  | 39 =head1 DESCRIPTION | 
|  | 40 | 
|  | 41 Описывает сложный узел. Требует либо соответствие структуры, либо соответствия | 
|  | 42 типу. | 
|  | 43 | 
|  | 44 Дочерними элементами могут быть правила контроля свойств и т.п. | 
|  | 45 Первым дочерним элементом может быть только содержимое узла, см. C<content> | 
|  | 46 | 
|  | 47 =head2 PROPERTIES | 
|  | 48 | 
|  | 49 =over | 
|  | 50 | 
|  | 51 =item C<content> | 
|  | 52 | 
|  | 53 Содержимое узла, может быть либо C<IMPL::DOM::Schema::NodeSet> либо | 
|  | 54 C<IMPL::DOM::Schema::NodeList>, в зависимости от того важен порядок или нет. | 
|  | 55 Это свойство ссылается на первый дочерний элемент узла. | 
|  | 56 | 
|  | 57 =back | 
|  | 58 | 
|  | 59 =cut |