diff Lib/IMPL/DOM/Schema/Node.pm @ 148:e6447ad85cb4

DOM objects now have a schema and schemaSource properties RegExp now can launder data Improved post to DOM transformation (multiple values a now supported) Added new axes to navigation queries: ancestor and descendant minor changes and bug fixes
author wizard
date Mon, 16 Aug 2010 08:26:44 +0400
parents 196bf443b5e1
children 1e7f03414b65
line wrap: on
line diff
--- a/Lib/IMPL/DOM/Schema/Node.pm	Mon Aug 09 08:45:36 2010 +0400
+++ b/Lib/IMPL/DOM/Schema/Node.pm	Mon Aug 16 08:26:44 2010 +0400
@@ -18,7 +18,20 @@
 }
 
 our %CTOR = (
-    'IMPL::DOM::Node' => sub {my %args = @_; $args{nodeName} ||= 'Node'; %args}
+    'IMPL::DOM::Node' => sub {
+    	my %args = @_;
+    	delete @args{qw(
+    		minOccur
+    		maxOccur
+    		type
+    		name
+    		display
+    		display_no
+    		display_blame
+    	)} ;
+    	$args{nodeName} ||= 'Node';
+    	%args
+    }
 );
 
 sub CTOR {
@@ -28,9 +41,9 @@
     $this->{$maxOccur} = defined $args{maxOccur} ? $args{maxOccur} : 1;
     $this->{$type} = $args{type};
     $this->{$name} = $args{name} or die new IMPL::InvalidArgumentException('Argument is required','name');
-    $this->{$display} = $args{display};
-    $this->{$display_no} = $args{display_no};
-    $this->{$display_blame} = $args{display_blame};
+    $this->{$display} = $args{display} if $args{display};
+    $this->{$display_no} = $args{display_no} if $args{display};
+    $this->{$display_blame} = $args{display_blame} if $args{display};
 }
 
 sub Validate {
@@ -70,6 +83,48 @@
 
 =head1 DESCRIPTION
 
-Базовый класс для элементов схемы.
+Базовый класс для элементов схемы. Также позволяет объявлять узлы определенного типа.
+
+=head1 MEMBERS
+
+=head2 PROPERTIES
+
+=over
+
+=item C<[get,set] minOccur>
+
+C<default: 1>.
+
+Минимальное количество повторений узла.
+
+=item C<[get,set] maxOccur>
+
+C<default: 1>.
+
+Максимальное количество повторений узла
+
+=item C<[get,set] type>
+
+C<default: undef>
+
+Имя типа из схемы.
+
+=item C<[get,set] name>
+
+Имя узла.
+
+=item C<[get,set] display>
+
+Имя узла для отображения.
+
+=item C<[get,set] display_no>
+
+Имя узла для отображения (родительный падеж).
+
+=item C<[get,set] display_blame>
+
+Имя узла для отображения (винительный падеж).
+
+=back
 
 =cut