Mercurial > pub > Impl
diff Lib/IMPL/DOM/Schema.pm @ 16:75d55f4ee263
Окончательная концепция описания схем и построения DOM документов
author | Sergey |
---|---|
date | Tue, 08 Sep 2009 17:29:07 +0400 |
parents | 16795016e70b |
children | 7f88e01b58f8 |
line wrap: on
line diff
--- a/Lib/IMPL/DOM/Schema.pm Mon Sep 07 17:30:55 2009 +0400 +++ b/Lib/IMPL/DOM/Schema.pm Tue Sep 08 17:29:07 2009 +0400 @@ -12,4 +12,93 @@ private _direct property _TypesMap => prop_all; } +sub ResoveType { + $_[0]->{$_TypesMap}->{$_[1]}; +} + +sub MetaSchema { + my $schema = new IMPL::DOM::Schema(nodeName => 'schema'); + + $schema->appendRange( + IMPL::DOM::Schema::ComplexNode->new(nodeName => 'schema')->appendRange( + IMPL::DOM::Schema::NodeSet->new()->appendRange( + IMPL::DOM::Schema::Node->new(nodeName => 'ComplexNode', type => 'ComplexNode', minOccur => 0, maxOccur=>'unbounded'), + IMPL::DOM::Schema::Node->new(nodeName => 'ComplexType', type => 'ComplexType', minOccur => 0, maxOccur=>'unbounded'), + IMPL::DOM::Schema::Node->new(nodeName => 'SimpleNode', type => 'SimpleNode', minOccur => 0, maxOccur=>'unbounded'), + IMPL::DOM::Schema::Node->new(nodeName => 'SimpleType', type => 'SimpleType', minOccur => 0, maxOccur=>'unbounded'), + IMPL::DOM::Schema::SimpleNode->new(nodeName => 'Node', minOccur => 0, maxOccur=>'unbounded'), + IMPL::DOM::Schema::SimpleNode->new(nodeName => 'Include', minOccur => 0, maxOccur=>'unbounded') + ) + ), + IMPL::DOM::Schema::ComplexType->new(type => 'NodeSet', native => 'IMPL::DOM::Schema::NodeSet')->appendRange( + IMPL::DOM::Schema::NodeSet->new()->appendRange( + IMPL::DOM::Schema::Node->new(nodeName => 'ComplexNode', type => 'ComplexNode', minOccur => 0, maxOccur=>'unbounded'), + IMPL::DOM::Schema::Node->new(nodeName => 'SimpleNode', type => 'SimpleNode', minOccur => 0, maxOccur=>'unbounded'), + IMPL::DOM::Schema::SimpleNode->new(nodeName => 'Node', minOccur => 0, maxOccur=>'unbounded'), + ) + ) + ) +} + 1; + +__END__ + +=pod + +=head1 META SCHEMA + + , + +<schema> + <ComplexNode nodeName="schema"> + <NodeSet> + <Node minOcuur="0" maxOccur="unbounded" nodeName="ComplexNode" type="ComplexNode"/> + <Node minOcuur="0" maxOccur="unbounded" nodeName="SimpleNode" type="SimpleNode"/> + <Node minOcuur="0" maxOccur="unbounded" nodeName="ComplexType" type="ComplexType"/> + <Node minOcuur="0" maxOccur="unbounded" nodeName="SimpleType" type="SimpleType"/> + <SimpleNode minOcuur="0" maxOccur="unbounded" nodeName="Node"/> + <SimpleNode minOcuur="0" maxOccur="unbounded" nodeName="Include"/> + </NodeSet> + </ComplexNode> + + <ComplexType type="NodeContainer"> + <NodeSet> + <Node minOcuur="0" maxOccur="unbounded" nodeName="ComplexNode" type="ComplexNode"/> + <Node minOcuur="0" maxOccur="unbounded" nodeName="SimpleNode" type="SimpleNode"/> + <SimpleNode minOcuur="0" maxOccur="unbounded" nodeName="Node"/> + </NodeSet> + </ComplexType> + + + <ComplexType type="ComplexType"> + <NodeList> + <Node nodeName="NodeSet" type="NodeContainer" minOcuur=0/> + <Node nodeName="NodeList" type="NodeContainer" minOccur=0/> + <AnyNode minOccur="0" maxOccur="unbounded"/> + </NodeList> + </ComplexType> + + <ComplexType type="ComplexNode"> + <NodeList> + <Node nodeName="NodeSet" type="NodeContainer" minOcuur=0/> + <Node nodeName="NodeList" type="NodeContainer" minOccur=0/> + <AnyNode minOccur="0" maxOccur="unbounded"/> + </NodeList> + </ComplexType> + + <ComplexType type="SimpleNode"> + <NodeSet> + <AnyNode minOccur=0 maxOccur="unbounded"/> + </NodeSet> + </ComplexType> + + <ComplexType type="SimpleType"> + <NodeSet> + <AnyNode minOccur=0 maxOccur="unbounded"/> + </NodeSet> + </ComplexType> + +</schema> + +=cut