diff lib/IMPL/DOM/Schema/AnyNode.pm @ 407:c6e90e02dd17 ref20150831

renamed Lib->lib
author cin
date Fri, 04 Sep 2015 19:40:23 +0300
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/IMPL/DOM/Schema/AnyNode.pm	Fri Sep 04 19:40:23 2015 +0300
@@ -0,0 +1,42 @@
+package IMPL::DOM::Schema::AnyNode;
+use strict;
+use warnings;
+
+use IMPL::declare {
+	base => [
+		'IMPL::DOM::Schema::Node' => sub {
+	        my %args = @_;
+	        $args{nodeName} ||= 'AnyNode';
+	        $args{name} = '::any';
+	        
+	        %args;
+	    }
+	]
+};
+
+1;
+
+__END__
+
+=pod
+
+=head1 DESCRIPTION
+
+Узел с произвольным именем, для этого узла предусмотрена специальная проверка
+в контейнерах.
+
+В контейнерах типа C<IMPL::DOM::Schema::NodeSet> этот узел можно использовать только один раз
+причем его использование исключает использование узла C<IMPL::DOM::Schema::SwitchNode>.
+
+В контейнерах типа С<IMPL::DOM::Schema::NodeList> данный узел может применяться несколько раз
+для решения таких задач как последовательности разноименных узлов с одним типом.
+
+<NodeList>
+    <SimpleNode name="firstName"/>
+    <SimpleNode name="age"/>
+    <AnyNode type="Notes" minOccur="0" maxOccur="unbounded"/>
+    <Node name="primaryAddress" type="Address"/>
+    <AnyNode/>
+</NodeList>
+
+=cut