|  |  | 
package XML::Schema::Facet::MyFacet; use base qw( XML::Schema::Facet ); sub valid { my ($self, $instance, $type) = @_; my $value = $instance->{ value }; # ..more code here... return $some_condition ? 1 : 0; } package main; my $facet = XML::Schema::Facet::MyFacet->new(...); my $instance = { value => 'some data value', }; print $facet->valid($instance) ? "valid" : "invalid";
        Base class constructor method used to create a new facet
        object or subclass thereof.  A list of 
        'key => value
' pairs can be
        specified as command line arguments, or alternately, a hash
        reference can be passed which contains these configuration
        values.  The method returns a newly instantiated facet object on
        success.  On error it returns undef and sets an internal error
        message which can be retrieved by calling error() as a class method.
# list of options my $facet = XML::Schema::Facet::MyFacet->new( value => 10 ) || die XML::Schema::Facet::MyFacet->error(); # hash ref of options my $facet = XML::Schema::Facet::MyFacet->new( { value => 10 } ) || die XML::Schema::Facet::MyFacet->error();
The following configuration options may be specifed:
| Name | Typical Values | Description | 
| value | $value | The constraining value for the facet. This item is mandatory as all facets require at least one configuring value. However, subclassed facets may expect and interpet this value differently. | 
| name | 'myfacet' | The name of the facet.  This item is optional and if not 
            specified, will be taken as the last element of the package
            name (e.g. XML::Schema::Facet::minLength= 'minLength'. | 
| errmsg | 'failed to match my criteria' | An optional error message to report when an instance of a simple type constrained by this facet fails to meet the required criteria. | 
| annotation | '...something interesting... | An optional annotation. Feel free to add something useful or just your favourite quote from Homer Simpson. | 
init( \%config )
	Initialisation method called by new() passing 
        a reference to a hash array of configuration arguments.  May be
        redefined by subclasses to perform more specific per-object
        initialisation.
    
      This method is used to validate a potential instance of a type against
      the facet.  A reference to a hash array is passed as the first argument.
      This contains the candidate value defined as the value
 
      item and may also contain any other data contributed by other validation 
      facets.  This can effectively be considered as a working scratchpad for
      facets to share.
      
The second argument passed is a reference to the simple type object which is instantiating this value.
Subclassed facets are expected to redefine this method to perform their own validation.
invalid( $msg )
      This method can be called to indicate a validation failure and to 
      generate an appropriate error message based on the custom 
      errmsg value or a constructed message based on the
      $msg
 argument passed and the facet's name and
      value (e.g. "error message (required minLength: 10)"
).
    
name()
	Returns the name of the facet as (optionally) supplied by the
	name configuration item.
    
value()
	Returns the facet value as supplied by the
	value configuration item.
    
annotation()
	Returns the annotation value as supplied by the
	annotation configuration item.