Mercurial > pub > Impl
annotate Lib/IMPL/DOM/Schema.pm @ 17:7f88e01b58f8
dom
| author | Sergey |
|---|---|
| date | Wed, 09 Sep 2009 17:43:31 +0400 |
| parents | 75d55f4ee263 |
| children | 818c74b038ae |
| rev | line source |
|---|---|
| 15 | 1 package IMPL::DOM::Schema; |
| 2 use strict; | |
| 3 use warnings; | |
| 4 | |
| 5 use base qw(IMPL::DOM::Document); | |
| 6 use IMPL::Class::Property; | |
| 7 use IMPL::Class::Property::Direct; | |
| 8 | |
| 9 __PACKAGE__->PassThroughArgs; | |
| 10 | |
| 11 BEGIN { | |
| 12 private _direct property _TypesMap => prop_all; | |
| 13 } | |
| 14 | |
|
16
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
15 sub ResoveType { |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
16 $_[0]->{$_TypesMap}->{$_[1]}; |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
17 } |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
18 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
19 sub MetaSchema { |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
20 my $schema = new IMPL::DOM::Schema(nodeName => 'schema'); |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
21 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
22 $schema->appendRange( |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
23 IMPL::DOM::Schema::ComplexNode->new(nodeName => 'schema')->appendRange( |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
24 IMPL::DOM::Schema::NodeSet->new()->appendRange( |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
25 IMPL::DOM::Schema::Node->new(nodeName => 'ComplexNode', type => 'ComplexNode', minOccur => 0, maxOccur=>'unbounded'), |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
26 IMPL::DOM::Schema::Node->new(nodeName => 'ComplexType', type => 'ComplexType', minOccur => 0, maxOccur=>'unbounded'), |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
27 IMPL::DOM::Schema::Node->new(nodeName => 'SimpleNode', type => 'SimpleNode', minOccur => 0, maxOccur=>'unbounded'), |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
28 IMPL::DOM::Schema::Node->new(nodeName => 'SimpleType', type => 'SimpleType', minOccur => 0, maxOccur=>'unbounded'), |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
29 IMPL::DOM::Schema::SimpleNode->new(nodeName => 'Node', minOccur => 0, maxOccur=>'unbounded'), |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
30 IMPL::DOM::Schema::SimpleNode->new(nodeName => 'Include', minOccur => 0, maxOccur=>'unbounded') |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
31 ) |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
32 ), |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
33 IMPL::DOM::Schema::ComplexType->new(type => 'NodeSet', native => 'IMPL::DOM::Schema::NodeSet')->appendRange( |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
34 IMPL::DOM::Schema::NodeSet->new()->appendRange( |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
35 IMPL::DOM::Schema::Node->new(nodeName => 'ComplexNode', type => 'ComplexNode', minOccur => 0, maxOccur=>'unbounded'), |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
36 IMPL::DOM::Schema::Node->new(nodeName => 'SimpleNode', type => 'SimpleNode', minOccur => 0, maxOccur=>'unbounded'), |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
37 IMPL::DOM::Schema::SimpleNode->new(nodeName => 'Node', minOccur => 0, maxOccur=>'unbounded'), |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
38 ) |
| 17 | 39 ), |
| 40 IMPL::DOM::Schema::ComplexType->new(type => 'NodeList', native => 'IMPL::DOM::Schema::NodeList')->appendRange( | |
| 41 IMPL::DOM::Schema::NodeSet->new()->appendRange( | |
| 42 IMPL::DOM::Schema::Node->new(nodeName => 'ComplexNode', type => 'ComplexNode', minOccur => 0, maxOccur=>'unbounded'), | |
| 43 IMPL::DOM::Schema::Node->new(nodeName => 'SimpleNode', type => 'SimpleNode', minOccur => 0, maxOccur=>'unbounded'), | |
| 44 IMPL::DOM::Schema::SimpleNode->new(nodeName => 'Node', minOccur => 0, maxOccur=>'unbounded'), | |
| 45 ) | |
| 46 ), | |
| 47 IMPL::DOM::Schema::ComplexType->new(type => 'ComplexType', native => 'IMPL::DOM::Schema::ComplexType')->appendRange( | |
| 48 IMPL::DOM::Schema::NodeList->new()->appendRange( | |
| 49 IMPL::DOM::Schema::Node->new(nodeName => 'NodeSet', minOccur => 0, type => 'NodeSet'), | |
| 50 IMPL::DOM::Schema::Node->new(nodeName => 'NodeList', minOccur => 0, type => 'NodeSet'), | |
| 51 IMPL::DOM::Schema::SimpleNode->new(nodeName => 'Node', minOccur => 0, maxOccur => 'unbounded') | |
| 52 ) | |
| 53 ), | |
| 54 IMPL::DOM::Schema::ComplexType->new(type => 'ComplexNode', native => 'IMPL::DOM::Schema::ComplexNode')->appendRange( | |
| 55 IMPL::DOM::Schema::NodeList->new()->appendRange( | |
| 56 IMPL::DOM::Schema::Node->new(nodeName => 'NodeSet', minOccur => 0, type => 'NodeSet'), | |
| 57 IMPL::DOM::Schema::Node->new(nodeName => 'NodeList', minOccur => 0, type => 'NodeSet'), | |
| 58 IMPL::DOM::Schema::SimpleNode->new(nodeName => 'Node', minOccur => 0, maxOccur => 'unbounded') | |
| 59 ) | |
| 60 ), | |
| 61 IMPL::DOM::Schema::ComplexType->new(type => 'SimpleType', native => 'IMPL::DOM::Schema::SimpleType')->appendRange( | |
| 62 IMPL::DOM::Schema::NodeSet->new()->appendRange( | |
| 63 IMPL::DOM::Schema::AnyNode(maxOccur => 'unbounded', minOccur => 0) | |
| 64 ) | |
| 65 ), | |
| 66 IMPL::DOM::Schema::ComplexType->new(type => 'SimpleNode', native => 'IMPL::DOM::Schema::SimpleNode')->appendRange( | |
| 67 IMPL::DOM::Schema::NodeSet->new()->appendRange( | |
| 68 IMPL::DOM::Schema::AnyNode(maxOccur => 'unbounded', minOccur => 0) | |
| 69 ) | |
|
16
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
70 ) |
| 17 | 71 ); |
| 72 | |
| 73 return $schema; | |
|
16
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
74 } |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
75 |
| 15 | 76 1; |
|
16
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
77 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
78 __END__ |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
79 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
80 =pod |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
81 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
82 =head1 META SCHEMA |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
83 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
84 , |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
85 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
86 <schema> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
87 <ComplexNode nodeName="schema"> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
88 <NodeSet> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
89 <Node minOcuur="0" maxOccur="unbounded" nodeName="ComplexNode" type="ComplexNode"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
90 <Node minOcuur="0" maxOccur="unbounded" nodeName="SimpleNode" type="SimpleNode"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
91 <Node minOcuur="0" maxOccur="unbounded" nodeName="ComplexType" type="ComplexType"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
92 <Node minOcuur="0" maxOccur="unbounded" nodeName="SimpleType" type="SimpleType"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
93 <SimpleNode minOcuur="0" maxOccur="unbounded" nodeName="Node"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
94 <SimpleNode minOcuur="0" maxOccur="unbounded" nodeName="Include"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
95 </NodeSet> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
96 </ComplexNode> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
97 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
98 <ComplexType type="NodeContainer"> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
99 <NodeSet> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
100 <Node minOcuur="0" maxOccur="unbounded" nodeName="ComplexNode" type="ComplexNode"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
101 <Node minOcuur="0" maxOccur="unbounded" nodeName="SimpleNode" type="SimpleNode"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
102 <SimpleNode minOcuur="0" maxOccur="unbounded" nodeName="Node"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
103 </NodeSet> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
104 </ComplexType> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
105 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
106 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
107 <ComplexType type="ComplexType"> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
108 <NodeList> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
109 <Node nodeName="NodeSet" type="NodeContainer" minOcuur=0/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
110 <Node nodeName="NodeList" type="NodeContainer" minOccur=0/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
111 <AnyNode minOccur="0" maxOccur="unbounded"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
112 </NodeList> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
113 </ComplexType> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
114 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
115 <ComplexType type="ComplexNode"> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
116 <NodeList> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
117 <Node nodeName="NodeSet" type="NodeContainer" minOcuur=0/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
118 <Node nodeName="NodeList" type="NodeContainer" minOccur=0/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
119 <AnyNode minOccur="0" maxOccur="unbounded"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
120 </NodeList> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
121 </ComplexType> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
122 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
123 <ComplexType type="SimpleNode"> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
124 <NodeSet> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
125 <AnyNode minOccur=0 maxOccur="unbounded"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
126 </NodeSet> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
127 </ComplexType> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
128 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
129 <ComplexType type="SimpleType"> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
130 <NodeSet> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
131 <AnyNode minOccur=0 maxOccur="unbounded"/> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
132 </NodeSet> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
133 </ComplexType> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
134 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
135 </schema> |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
136 |
|
75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
Sergey
parents:
15
diff
changeset
|
137 =cut |
