comparison Lib/IMPL/DOM/Schema/Node.pm @ 24:7f00786f8210

Первая рабочая реазизация схемы и навигаторов
author Sergey
date Mon, 05 Oct 2009 00:48:49 +0400
parents 267460284fb3
children c2e7f7c96bcd
comparison
equal deleted inserted replaced
23:716b287d4795 24:7f00786f8210
6 use IMPL::Class::Property; 6 use IMPL::Class::Property;
7 use IMPL::DOM::Property qw(_dom); 7 use IMPL::DOM::Property qw(_dom);
8 use IMPL::Class::Property::Direct; 8 use IMPL::Class::Property::Direct;
9 9
10 BEGIN { 10 BEGIN {
11 public property minOccur => prop_all; 11 public _direct property minOccur => prop_all;
12 public property maxOccur => prop_all; 12 public _direct property maxOccur => prop_all;
13 public property type => prop_all; 13 public _direct property type => prop_all;
14 public property name => prop_all; 14 public _direct property name => prop_all;
15 } 15 }
16 16
17 our %CTOR = ( 17 our %CTOR = (
18 'IMPL::DOM::Node' => sub {my %args = @_; $args{nodeName} ||= 'Node'; %args} 18 'IMPL::DOM::Node' => sub {my %args = @_; $args{nodeName} ||= 'Node'; %args}
19 ); 19 );
20 20
21 sub CTOR { 21 sub CTOR {
22 my ($this,%args) = @_; 22 my ($this,%args) = @_;
23 23
24 $this->minOccur(defined $args{minOccur} ? $args{minOccur} : 1); 24 $this->{$minOccur} = defined $args{minOccur} ? $args{minOccur} : 1;
25 $this->maxOccur(defined $args{maxOccur} ? $args{maxOccur} : 1); 25 $this->{$maxOccur} = defined $args{maxOccur} ? $args{maxOccur} : 1;
26 $this->type($args{type}); 26 $this->{$type} = $args{type};
27 $this->name($args{name}) or die new IMPL::InvalidArgumentException('Argument is required','name'); 27 $this->{$name} = $args{name} or die new IMPL::InvalidArgumentException('Argument is required','name');
28 } 28 }
29 29
30 sub Validate { 30 sub Validate {
31 my ($this,$node) = @_; 31 my ($this,$node) = @_;
32 32
33 if (my $schemaType = $this->type ? $this->rootNode->resolveType($this->type) : undef ) { 33 if (my $schemaType = $this->{$type} ? $this->rootNode->resolveType($this->{$type}) : undef ) {
34 return $schemaType->Validate($node); 34 return $schemaType->Validate($node);
35 } else { 35 } else {
36 return (); 36 return ();
37 } 37 }
38 }
39
40 sub qname {
41 $_[0]->nodeName.'[name='.$_[0]->{$name}.']';
38 } 42 }
39 43
40 1; 44 1;
41 45
42 __END__ 46 __END__