comparison Lib/IMPL/DOM/Schema/ValidationError.pm @ 125:a4b0a819bbda

Small fixes in IMPL::DOM::Schema
author wizard
date Thu, 10 Jun 2010 17:43:51 +0400
parents 196bf443b5e1
children 76515373dac0
comparison
equal deleted inserted replaced
124:e30bdd040fe3 125:a4b0a819bbda
23 my ($this,%args) = @_; 23 my ($this,%args) = @_;
24 24
25 $this->{$Node} = $args{Node}; 25 $this->{$Node} = $args{Node};
26 $this->{$Schema} = $args{Schema} if $args{Schema}; 26 $this->{$Schema} = $args{Schema} if $args{Schema};
27 $this->{$Source} = $args{Source} if $args{Source}; 27 $this->{$Source} = $args{Source} if $args{Source};
28 $this->{$Parent} = $args{Parent} if $args{Parent}; 28 if ($args{Parent}) {
29 $this->{$Parent} = $args{Parent};
30 } elsif ($args{Node}) {
31 $this->{$Parent} = $args{Node}->parentNode;
32 } else {
33 die new IMPL::InvalidArgumentException("A 'Parent' or a 'Node' parameter is required");
34 }
29 $this->{$Message} = FormatMessage(delete $args{Message}, \%args) if $args{Message}; 35 $this->{$Message} = FormatMessage(delete $args{Message}, \%args) if $args{Message};
30 } 36 }
31 37
32 sub toString { 38 sub toString {
33 (my $this) = @_; 39 (my $this) = @_;
34 return $this->Message; 40 return $this->Message;
35 } 41 }
36 42
37 1; 43 1;
44
45 __END__
46
47 =pod
48
49 =head1 NAME
50
51 C<IMPL::DOM::Schema::ValidationError> - Описывает ошибку в документе.
52
53 =head1 DESCRIPTION
54
55 При проверке документа на ошибки формирования возвращается массив с объектами
56 C<IMPL::DOM::Schema::ValidationError>, каждая из которых описывает одну ошибку
57 в документе.
58
59 С помощью данного объекта осущетсвляется привязка элемента схемы, элемента документа
60 и сообщения о причине возникновения ошибки.
61
62 =head1 MEMBERS
63
64 =over
65 =item C<[get] Node>
66
67
68 Узел в документе который привел к ошибке. Как правило это либо простые узлы, либо
69 узлы, которые не могут присутствоать в данном месте по схеме.
70
71 Данное свойство может быть C<undef>.
72
73 =item C<[get] Parent>
74
75 Родительский узел в котором произошла ошибка. Используется в случаях, когда C<Node>
76 не указан, например, если по схеме должен существовать дочерний узел с определенным
77 именем, а в реальном документе его нет.
78
79 Также это свойство может использоваться при формировании сообщения.
80
81 =item C<[get] Schema>
82
83 Схема для C<Node> или узла который должен присутсвовать если C<Node> не задан.
84
85 =item C<[get] Source>
86
87 Схема, проверка которой привела к возникновению ошибки. Поскольку схемы могут
88 использовать ссылки, то данное свойство нужно для получения схемы узла, а не
89 схемы его типа.
90
91 Тоесть проверка схемы узла C<IMPL::DOM::Schema::Node> приводит к проверке схемы
92 типа, например, C<IMPL::DOM::Schema::ComplexType>, а свойство C<Source> будет
93 указывать именно на C<IMPL::DOM::Schema::Node>.
94
95 =item C<[get] Message>
96
97 Возвращает форматированное сообщение об ошибке.
98
99 =item C<toString()>
100
101 Преобразует ошибку к строке, возвращает значение свойства C<Message>
102
103 =back
104
105 =head1 REMARKS
106
107 =begin code
108
109 my $doc = IMPL::DOM::XMLReader->LoadDocument('data.xml');
110 my $schema = IMPL::DOM::Schema->LoadSchema('schema.xml');
111
112 my @errors = $schema->Validate($doc);
113
114 my $node = $doc->selectSingleNode('user','name');
115
116 # Получаем все ошибки относящиеся к данному узлу
117 my @nodeErrors = grep { ($_->Node || $_->Parent) == $node } @errors;
118
119 =end code
120
121 =cut