Mercurial > pub > Impl
comparison Lib/IMPL/DOM/Schema/Property.pm @ 103:c289ed9662ca
Schema beta 2
More strict validation, support for inflating a simple nodes and properties
| author | wizard | 
|---|---|
| date | Fri, 07 May 2010 18:17:40 +0400 | 
| parents | d8dc6cad3f55 | 
| children | 196bf443b5e1 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 102:cf3b6ef2be22 | 103:c289ed9662ca | 
|---|---|
| 32 } | 32 } | 
| 33 | 33 | 
| 34 sub Validate { | 34 sub Validate { | 
| 35 my ($this,$node) = @_; | 35 my ($this,$node) = @_; | 
| 36 | 36 | 
| 37 if ($this->minOccur) { | 37 my $prop = $this->name; | 
| 38 my $prop = $this->name; | 38 | 
| 39 my $nodeProp = new IMPL::DOM::Node(nodeName => '::property', nodeValue => eval { $node->$prop() } || $node->nodeProperty($prop)); | 39 # buld a pseudo node for the property value | 
| 40 my $nodeProp = new IMPL::DOM::Node(nodeName => '::property', nodeValue => eval { $node->$prop() } || $node->nodeProperty($prop)); | |
| 40 | 41 | 
| 41 if (! $nodeProp->nodeValue) { | 42 if ($nodeProp->nodeValue) { | 
| 42 return new IMPL::DOM::Schema::ValidationError( | 43 # we have a value so validate it | 
| 43 Message => $this->RequiredMessage, | 44 return $this->SUPER::Validate($nodeProp); | 
| 44 Node => $node, | 45 } elsif($this->minOccur) { | 
| 45 Schema => $this | 46 # we don't have a value but it's a mandatory property | 
| 46 ); | 47 return new IMPL::DOM::Schema::ValidationError( | 
| 47 } | 48 Message => $this->RequiredMessage, | 
| 48 return $this->SUPER::Validate($nodeProp); | 49 Node => $node, | 
| 49 } else { | 50 Schema => $this | 
| 50 return (); | 51 ); | 
| 51 } | 52 } | 
| 53 | |
| 52 } | 54 } | 
| 53 | 55 | 
| 54 1; | 56 1; | 
