Mercurial > pub > Impl
view lib/IMPL/DOM/Schema/ComplexNode.pm @ 416:cc2cf8c0edc2 ref20150831
sync
author | cin |
---|---|
date | Thu, 29 Oct 2015 03:50:25 +0300 |
parents | c6e90e02dd17 |
children |
line wrap: on
line source
package IMPL::DOM::Schema::ComplexNode; use strict; use warnings; use IMPL::declare { base => [ 'IMPL::DOM::Schema::Node' => sub {my %args = @_; $args{nodeName} ||= 'ComplexNode'; %args } ], props => [ content => { get => \&_getContent, set => \&_setContent } ] }; sub _getContent { $_[0]->firstChild; } sub _setContent { $_[0]->firstChild($_[1]); } sub Validate { my ($this,$node,$ctx) = @_; # для случаев анонимных типов, указанных прямо в узле $ctx->{schemaNode} ||= $this; $ctx->{schemaType} = $this; map $_->Validate($node,$ctx), @{$this->childNodes}; } 1; __END__ =pod =head1 DESCRIPTION Описывает сложный узел. Требует либо соответствие структуры, либо соответствия типу. Дочерними элементами могут быть правила контроля свойств и т.п. Первым дочерним элементом может быть только содержимое узла, см. C<content> =head2 PROPERTIES =over =item C<content> Содержимое узла, может быть либо C<IMPL::DOM::Schema::NodeSet> либо C<IMPL::DOM::Schema::NodeList>, в зависимости от того важен порядок или нет. Это свойство ссылается на первый дочерний элемент узла. =back =cut