comparison Lib/IMPL/DOM/Schema/ComplexNode.pm @ 7:94d47b388442

Улучшены тесты Исправлены ошибки Улучшена документация Работа над схемой DOM
author Sergey
date Mon, 24 Aug 2009 01:05:34 +0400
parents
children fffb153be599
comparison
equal deleted inserted replaced
6:e2cd73ccc5bd 7:94d47b388442
1 package IMPL::DOM::Schema::ComplexNode;
2 use strict;
3 use warnings;
4
5 use base qw(IMPL::DOM::Schema::Item);
6 use IMPL::Class::Property;
7
8 BEGIN {
9 public property nodeType => prop_all;
10 public property content => {
11 get => \&_getContent,
12 set => \&_setContent
13 }
14 }
15
16 __PACKAGE__->PassThroughArgs;
17
18 sub _getContent {
19 $_[0]->firstChild;
20 }
21
22 sub _setContent {
23 $_[0]->firstChild($_[1]);
24 }
25
26 sub Validate {
27 my ($this,$node) = @_;
28
29 if (my $type = $this->nodeType) {
30 my $schemaType = $this->Schema->ResolveType($type);
31 return $schemaType->Validate($node);
32 } else {
33 my @errors;
34 push @errors, $_->Validate foreach @{$this->childNodes};
35
36 if (@errors and $this->Message) {
37 return {
38 Error => 1,
39 Message => $this->formatMessage($node),
40 InnerErrors => \@errors
41 };
42 } else {
43 return @errors;
44 }
45 }
46 }
47
48 1;
49
50 __END__
51
52 =pod
53
54 =head1 DESCRIPTION
55
56 . ,
57 .
58
59 ..
60 , . C<content>
61
62 =head2 PROPERTIES
63
64 =over
65
66 =item C<nodeType>
67
68 , .
69 C<content> .
70
71 =item C<content>
72
73 , C<IMPL::DOM::Schema::NodeSet>
74 C<IMPL::DOM::Schema::NodeList>, .
75 .
76
77 =back
78
79 =cut