diff Lib/IMPL/DOM/Schema/NodeSet.pm @ 49:16ada169ca75

migrating to the Eclipse IDE
author wizard@linux-odin.local
date Fri, 26 Feb 2010 10:49:21 +0300
parents 7f00786f8210
children df6b4f054957
line wrap: on
line diff
--- a/Lib/IMPL/DOM/Schema/NodeSet.pm	Fri Feb 26 01:43:42 2010 +0300
+++ b/Lib/IMPL/DOM/Schema/NodeSet.pm	Fri Feb 26 10:49:21 2010 +0300
@@ -1,91 +1,91 @@
-package IMPL::DOM::Schema::NodeSet;
-use strict;
-use warnings;
-
-use base qw(IMPL::DOM::Node);
-use IMPL::Class::Property;
-
-our %CTOR = (
-    'IMPL::DOM::Node' => sub { nodeName => 'NodeSet' }
-);
-
-BEGIN {
-    public property messageUnexpected => prop_all;
-    public property messageMax => prop_all;
-    public property messageMin => prop_all;
-}
-
-sub CTOR {
-    my ($this,%args) = @_;
-    
-    $this->messageMax( $args{messageMax} || 'Too many %Node.nodeName% nodes');
-    $this->messageMin( $args{messageMin} || '%Schema.name% nodes expected');
-    $this->messageUnexpected( $args{messageUnexpected} || 'A %Node.nodeName% isn\'t allowed in %Node.parentNode.path%');
-}
-
-sub Validate {
-    my ($this,$node) = @_;
-    
-    my @errors;
-    
-    my %nodes;
-    my $anyNode;
-    foreach (@{$this->childNodes}) {
-        if ($_->isa('IMPL::DOM::Schema::AnyNode')) {
-            $anyNode = {Schema => $_, Min => $_->minOccur, Max => $_->maxOccur eq 'unbounded' ? undef : $_->maxOccur , Seen => 0 };
-        } else {
-            $nodes{$_->name} = {Schema => $_, Min => $_->minOccur, Max => $_->maxOccur eq 'unbounded' ? undef : $_->maxOccur , Seen => 0 };
-        }
-    }
-    
-    foreach my $child ( @{$node->childNodes} ) {
-        if (my $info = $nodes{$child->nodeName} || $anyNode) {
-            $info->{Seen}++;
-            push @errors,new IMPL::DOM::Schema::ValidationError (
-                Source => $this,
-                Node => $child,
-                Schema => $info->{Schema},
-                Message => $this->messageMax
-            ) if ($info->{Max} and $info->{Seen} > $info->{Max});
-            
-            if (my @localErrors = $info->{Schema}->Validate($child)) {
-                push @errors,@localErrors;
-            }
-        } else {
-            push @errors, new IMPL::DOM::Schema::ValidationError (
-                Source => $this,
-                Node => $child,
-                Schema => $info->{Schema},
-                Message => $this->messageUnexpected
-            )
-        }
-    }
-    
-    foreach my $info (values %nodes) {
-        push @errors, new IMPL::DOM::Schema::ValidationError (
-            Source => $this,
-            Schema => $info->{Schema},
-            Node => $node,
-            Message => $this->messageMin
-        ) if $info->{Min} > $info->{Seen};
-    }
-    
-    return @errors;
-}
-
-1;
-
-__END__
-
-=pod
-
-=head1 DESCRIPTION
-
-Содержимое для сложного узла. Порядок не важен. Дочерними элементами могут быть
-только C<IMPL::DOM::Schema::ComplexNode> и C<IMPL::DOM::Schema::SimpleNode>.
-
-При проверке данного правила, проверяются имеющиеся элементы на соответсие схемы
-и количества встречаемости, после чего проверяются количественные ограничения
-для несуществующих элементов.
-
-=cut
+package IMPL::DOM::Schema::NodeSet;
+use strict;
+use warnings;
+
+use base qw(IMPL::DOM::Node);
+use IMPL::Class::Property;
+
+our %CTOR = (
+    'IMPL::DOM::Node' => sub { nodeName => 'NodeSet' }
+);
+
+BEGIN {
+    public property messageUnexpected => prop_all;
+    public property messageMax => prop_all;
+    public property messageMin => prop_all;
+}
+
+sub CTOR {
+    my ($this,%args) = @_;
+    
+    $this->messageMax( $args{messageMax} || 'Too many %Node.nodeName% nodes');
+    $this->messageMin( $args{messageMin} || '%Schema.name% nodes expected');
+    $this->messageUnexpected( $args{messageUnexpected} || 'A %Node.nodeName% isn\'t allowed in %Node.parentNode.path%');
+}
+
+sub Validate {
+    my ($this,$node) = @_;
+    
+    my @errors;
+    
+    my %nodes;
+    my $anyNode;
+    foreach (@{$this->childNodes}) {
+        if ($_->isa('IMPL::DOM::Schema::AnyNode')) {
+            $anyNode = {Schema => $_, Min => $_->minOccur, Max => $_->maxOccur eq 'unbounded' ? undef : $_->maxOccur , Seen => 0 };
+        } else {
+            $nodes{$_->name} = {Schema => $_, Min => $_->minOccur, Max => $_->maxOccur eq 'unbounded' ? undef : $_->maxOccur , Seen => 0 };
+        }
+    }
+    
+    foreach my $child ( @{$node->childNodes} ) {
+        if (my $info = $nodes{$child->nodeName} || $anyNode) {
+            $info->{Seen}++;
+            push @errors,new IMPL::DOM::Schema::ValidationError (
+                Source => $this,
+                Node => $child,
+                Schema => $info->{Schema},
+                Message => $this->messageMax
+            ) if ($info->{Max} and $info->{Seen} > $info->{Max});
+            
+            if (my @localErrors = $info->{Schema}->Validate($child)) {
+                push @errors,@localErrors;
+            }
+        } else {
+            push @errors, new IMPL::DOM::Schema::ValidationError (
+                Source => $this,
+                Node => $child,
+                Schema => $info->{Schema},
+                Message => $this->messageUnexpected
+            )
+        }
+    }
+    
+    foreach my $info (values %nodes) {
+        push @errors, new IMPL::DOM::Schema::ValidationError (
+            Source => $this,
+            Schema => $info->{Schema},
+            Node => $node,
+            Message => $this->messageMin
+        ) if $info->{Min} > $info->{Seen};
+    }
+    
+    return @errors;
+}
+
+1;
+
+__END__
+
+=pod
+
+=head1 DESCRIPTION
+
+Содержимое для сложного узла. Порядок не важен. Дочерними элементами могут быть
+только C<IMPL::DOM::Schema::ComplexNode> и C<IMPL::DOM::Schema::SimpleNode>.
+
+При проверке данного правила, проверяются имеющиеся элементы на соответсие схемы
+и количества встречаемости, после чего проверяются количественные ограничения
+для несуществующих элементов.
+
+=cut