The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Apache::AxKit::Provider - base Provider class

SYNOPSIS

Override the base ContentProvider class and enable it using:

    AxContentProvider MyClass
    
    # alternatively use:
    # PerlSetVar AxContentProvider MyClass

Override the base StyleProvider class and enable it using:

    AxStyleProvider MyClass
    
    # alternatively use:
    # PerlSetVar AxStyleProvider MyClass

DESCRIPTION

The Provider class is used to read in the data sources for the given URL. The ContentProvider handles the task of returning the data for the XML source document, while the StyleProvider fetches the data for any stylesheets that will be applied to that source document. The default for each is Provider::File, which reads from the filesystem, although obviously you can read from just about anywhere.

Should you wish to override the default Provider, these are the methods you need to implement:

process()

Determine whether or not to process this URL. For example, you don't want to process a directory request, or if the resource doesn't exist. Return 1 to tell AxKit to process this URL, or die with a Declined exception (with a reason) if you do not wish to process this URL.

mtime()

Return the last modification time in days before the current time.

get_styles()

Extract the stylesheets from the XML resource. Should return an array ref of styles. The style entries are hashes refs with required keys 'href', 'module' and 'type'.

A sample return value of get_styles() could be:

  [{ type => "text/xsl",
     href => "path/to/your/stylesheet.xsl",
     module => "Apache::AxKit::Language::LibXSLT" }]

This allows one to use a different stylemapping than the default server configuration. If 'module' is ommited AxKit will apply the given default module for the type as it was added by 'AxAddStyleMap' in the configuration.

get_fh()

This method should return an open filehandle, or die if that's not possible.

get_strref()

This method returns a reference to a scalar containing the contents of the stylesheet, or die if that's not possible. At least one of get_fh or get_strref must work.

key()

This method should return a "key" value that is unique to this URL.

get_ext_ent_handler()

This should return a sub reference that can be used instead of XML::Parser's default external entity handler. See the XML::Parser documentation for what this sub should do (or look at the code in the File provider).

exists()

Return 1 if the resource exists (and is readable).