NAME

XML::Pastor::Schema::ComplexType - Class that represents the META information about a W3C schema complex type.

WARNING

This module is used internally by XML::Pastor. You do not normally know much about this module to actually use XML::Pastor. It is documented here for completeness and for XML::Pastor developers. Do not count on the interface of this module. It may change in any of the subsequent releases. You have been warned.

ISA

This class descends from XML::Pastor::Schema::Type and hence from <XML::Pastor::Schema::Object>.

SYNOPSIS

my $type = XML::Pastor::Schema::ComplexType->new();

$type->setFields(name => 'Country', scope=> 'global', nameIsAutoGenerated=>0);
$type->base('Location');
$type->derivedBy('extension');

print $type->name();	# prints 'Country'.
print $type->scope();	# prints 'global'.
print $type->base();	# prints 'Location'.
print $type->derivedBy();	# prints 'extension'.

DESCRIPTION

XML::Pastor::Schema::ComplexType is a data-oriented object class that reprsents a W3C Complex Type. It is parsed from the W3C schema and is used a building block for the produced schema model. It is also used embedded as class data within the complex classes generated by XML::Pastor. This way, objects of this class contain META information about the W3C schema simple type that they represent.

Like other schema object classes, this is a data-oriented object class, meaning it doesn't have many methods other than a constructor and various accessors.

METHODS

CONSTRUCTORS

new()

$class->new(%fields)

CONSTRUCTOR, overridden.

The new() constructor method instantiates a new object. It is inheritable.

Any -named- fields that are passed as parameters are initialized to those values within the newly created object.

In its overriden form, what this method does is as follows:

  • sets the contentType field to 'complex';

  • creates the attributes and elements array-ref fields if not passed already as parameters;

  • creates the attributeInfo and elementInfo hash-ref fields if not passed already as parameters;

.

ACCESSORS

Inherited accessors

Several accessors are inherited by this class from its ancestors XML::Pastor::Schema::Type and XML::Pastor::Schema::Object. Please see XML::Pastor::Schema::Type and XML::Pastor::Schema::Object for a documentation of those.

Accessors defined here

attributes()

my $attribs = $object->attributes();  # GET
$object->attributes($attribs);        # SET

A reference to an array containing the names of the attributes that this complex type has.

Notice that this field refers to only attributes that are declared at this level. Any attributes that are inherited via derivation by extension are not considered here.

attributeInfo()

my $ai = $object->attributeInfo();  # GET
$object->attributeInfo($ai);        # SET

A reference to a hash whose keys are the names of the attributes, and whose values are objects of type XML::Pastor::Schema::Attribute, that give meta information about those attributes.

Notice that this field refers to only attributes that are declared at this level. Any attributes that are inherited via derivation by extension are not considered here.

elements()

my $elems = $object->elements();  # GET
$object->elements($elems);        # SET

A reference to an array containing the names of the child elements that this complex type has. The array does not take into consideration any differnce between sequence, choice, or all groupings.

Notice that this field refers to only child elements that are declared at this level. Any child elements that are inherited via derivation by extension are not considered here.

elementInfo()

my $ei = $object->elementInfo();  # GET
$object->elementInfo($ei);        # SET

A reference to a hash whose keys are the names of the child elements, and whose values are objects of type XML::Pastor::Schema::Element, that give meta information about those child elements.

Notice that this field refers to only child elements that are declared at this level. Any child elements that are inherited via derivation by extension are not considered here.

targetNamespace()

my $tns = $object->targetNamespace();  # GET
$object->targetNamespace($tns);        # SET

The target name space of the complex type (typically a URI).

xAttributes()

my $attribs = $object->xAttributes();  # GET
$object->xAttributes($attribs);        # SET

A reference to an array containing the names of the attributes that this complex type has.

The value of this field is undefined when this complex type is not derived from any other. When defined, this includes all the attributes including even those inherited via derivation by extension.

xAttributeInfo()

my $ai = $object->xAttributeInfo();  # GET
$object->xAttributeInfo($ai);        # SET

A reference to a hash whose keys are the names of the attributes, and whose values are objects of type XML::Pastor::Schema::Attribute, that give meta information about those attributes.

The value of this field is undefined when this complex type is not derived from any other. When defined, this includes all the attributes including even those inherited via derivation by extension.

xElements()

my $elems = $object->xElements();  # GET
$object->xElements($elems);        # SET

A reference to an array containing the names of the child elements that this complex type has. The array does not take into consideration any differnce between sequence, choice, or all groupings.

The value of this field is undefined when this complex type is not derived from any other. When defined, this includes all the child elements including even those inherited via derivation by extension.

xElementInfo()

my $ei = $object->xElementInfo();  # GET
$object->xElementInfo($ei);        # SET

A reference to a hash whose keys are the names of the child elements, and whose values are objects of type XML::Pastor::Schema::Element, that give meta information about those attributes.

The value of this field is undefined when this complex type is not derived from any other. When defined, this includes all the child elements including even those inherited via derivation by extension.

OTHER METHODS

effectiveAttributes()

When this complex type has been derived from another, "xAttributes()" will be defined. In this case this method returns the same as "xAttributes()". Otherwise, it returns the same as "attributes()".

effectiveAttributeInfo()

When this complex type has been derived from another, "xAttributeInfo()" will be defined. In this case this method returns the same as "xAttributeInfo()". Otherwise, it returns the same as "attributeInfo()".

effectiveElements()

When this complex type has been derived from another, "xElements()" will be defined. In this case this method returns the same as "xElements()". Otherwise, it returns the same as "elements()".

effectiveElementInfo()

When this complex type has been derived from another, "xElementInfo()" will be defined. In this case this method returns the same as "xElementInfo()". Otherwise, it returns the same as "elementInfo()".

.

BUGS & CAVEATS

There no known bugs at this time, but this doesn't mean there are aren't any. Note that, although some testing was done prior to releasing the module, this should still be considered alpha code. So use it at your own risk.

Note that there may be other bugs or limitations that the author is not aware of.

AUTHOR

Ayhan Ulusoy <dev(at)ulusoy(dot)name>

COPYRIGHT

Copyright (C) 2006-2007 Ayhan Ulusoy. All Rights Reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

See also XML::Pastor, XML::Pastor::ComplexType, XML::Pastor::SimpleType

If you are curious about the implementation, see XML::Pastor::Schema::Parser, XML::Pastor::Schema::Model, XML::Pastor::Generator.

If you really want to dig in, see XML::Pastor::Schema::Attribute, XML::Pastor::Schema::AttributeGroup, XML::Pastor::Schema::ComplexType, XML::Pastor::Schema::Element, XML::Pastor::Schema::Group, XML::Pastor::Schema::List, XML::Pastor::Schema::SimpleType, XML::Pastor::Schema::Type, XML::Pastor::Schema::Object