The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

   XML::RelaxNG::Compact::PXB  -    create perl XML (RelaxNG Compact) data binding API

VERSION

Version 0.01

DESCRIPTION

       The instance of this class is capable of generating the API tree of the perl objects
    based on  XML (RelaxNG compact) schema described  as perl data structures. If you have bunch
    of XML schemas ( and able to convert them into RelaxNG Compact ) and hate to waste your time
    by writing DOM tree walking code then this module may help you. Of course POD will be created
    automatically as well.
       Also, it will build the tests suit automatically as well and provide perltidy and perlcritic 
    config files for you to assure the absence of problems in your API. The L<Perl::Critic> test will
    be performed as part of the tests suit.
  
    See L<XML::RelaxNG::Compact::DataModel> for more details and examples.
     

SYNOPSIS

METHODS

new({})

   creates new object, accepts reference to hash as parameters container  
   where keys are:
DEBUG - set it to something defined to provide extra logging
top_dir - full pathname to the api root dir, for example test files will be placed as top_dir/test_dir
         Default: C<current directory>
nsregistry - reference to the hash with {ns_prefix => ns_URI} pairs, it will be built into the Element class
datatypes_root - name of the generated datatypes directory
          Default: C<XMLTypes>
schema_version - version identifier for your XML schema
         Default: C<1.0>
test_dir - name for the test suit files ( relative to the <top_dir>)
         Default:  C<t>
   Possible ways to call B<new()>:

  ### with defaults
  $api_builder =   XML::RelaxNG::Compact::PXB->new();

  ## passes hashref with explicit   parameters, for the next example:
  ## api will be created at /root/XMLTypes/v1_0/
  ## and tests files under - /root/t
  
  $api_builder =   XML::RelaxNG::Compact::PXB->new({
                                            top_dir =>   "/root/",
                                            datatypes_root =>   "XMLTypes",
                                            nsregistry => { 'nsid' => 'nsURI'},
                                            schema_version =>   "1.0",
                                            test_dir =>   "t",
                                            footer => POD::Credentials->new({author=> 'Joe Doe'}),
                                            });

buildAPI

   builds XML binding API recursively
   accepts    parameters:
name of the root element - undef by default
reference to the hash representing the RelaxNG Compact schema, empty hash ref by default
parent - is undef for the root element
   returns $self

buildHelpers

     shortcut to build Helper classes only, no arguments
    returns $self
    

buildAM

   prints accessors and mutators for the passed reference to array of names
   
   returns $self

buildTests

     shortcut to build test files  only, no arguments
     returns $self

buildClass

   builds  single class on the filesystem and corresponded test file
   accepts parameters:
name of the element =item hashref with the element definition =item hashref with parent definition if its not the root element
   returns $self

buildTest

     auxiliary method
     it builds test file for current class
     accepts:
            reference to array with elements,
            reference to array with attributes,
            class name
            name of the package
            element name
     returns: nothing

saying

    prints string into the  file handler without new line

sayIt

    prints string into the   file handler with new line added

AUTHOR

   Maxim Grigoriev (FNAL), maxim_at_fnal_dot_gov

LICENSE

  You should have received a copy of the Fermitools license
  with this software.  If not, see <http://fermitools.fnal.gov/about/terms.html>

COPYRIGHT

  Copyright(c) 2007-2008, Fermi Reasearch Alliance (FRA)