NAME
Apache2::ASP::Manual::ConfigXML - Documentation about the XML config file
DESCRIPTION
One benefit of keeping all of your application's configuration data in one place is ease of maintenance. Anyone who has had to deal with an application that used hard-coded database connection strings, hostnames or file paths would agree that an application can be rendered unmaintainable by poor configuration.
FILE NAME
The default filename of the XML config file is apache2-asp-config.xml
CONTENTS
The following is an example of the contents of apache2-asp-config.xml
on Linux:
<?xml version="1.0" ?>
<config>
<web_application>
<domain_re>^.*$</domain_re>
<do_reload_on_script_change>1</do_reload_on_script_change>
<application_name>DefaultApp</application_name>
<application_root>@ServerRoot@</application_root>
<handler_root>@ServerRoot@/handlers</handler_root>
<media_manager_upload_root>@ServerRoot@/MEDIA</media_manager_upload_root>
<www_root>@ServerRoot@/htdocs</www_root>
<page_cache_root>@ServerRoot@/PAGE_CACHE</page_cache_root>
<application_state>
<manager>Apache2::ASP::ApplicationStateManager::SQLite</manager>
<dsn>DBI:SQLite:dbname=/tmp/apache2_asp_applications</dsn>
<password></password>
<username></username>
</application_state>
<session_state>
<manager>Apache2::ASP::SessionStateManager::SQLite</manager>
<cookie_domain>localhost</cookie_domain>
<cookie_name>session-id</cookie_name>
<dsn>DBI:SQLite:dbname=/tmp/apache2_asp_sessions</dsn>
<password></password>
<username></username>
<session_timeout>30</session_timeout>
</session_state>
<settings>
<!-- lib is required -->
<lib>@ServerRoot@/lib</lib>
<!-- the rest are completely arbitrary -->
<dsn>DBI:mysql:databasename:localhost</dsn>
<username>my-username</username>
<password>swordfish</password>
</settings>
</web_application>
</config>
The following is an example of the apache2-asp-config.xml
file on Windows:
<?xml version="1.0" ?>
<config>
<web_application>
<domain_re>.*</domain_re>
<do_reload_on_script_change>1</do_reload_on_script_change>
<application_name>DefaultApp</application_name>
<application_root>@ServerRoot@</application_root>
<handler_root>@ServerRoot@\handlers</handler_root>
<media_manager_upload_root>@ServerRoot@\MEDIA</media_manager_upload_root>
<www_root>@ServerRoot@/htdocs</www_root>
<page_cache_root>@ServerRoot@\PAGE_CACHE</page_cache_root>
<application_state>
<manager>Apache2::ASP::ApplicationStateManager::SQLite</manager>
<dsn>DBI:SQLite:dbname=apache2-asp/tmp/sessiontest</dsn>
<password>j@p@n</password>
<username>root</username>
</application_state>
<session_state>
<manager>Apache2::ASP::SessionStateManager::SQLite</manager>
<cookie_domain>127.0.0.1</cookie_domain>
<cookie_name>session-id</cookie_name>
<dsn>DBI:SQLite:dbname=apache2-asp/tmp/sessiontest</dsn>
<password>j@p@n</password>
<username>root</username>
<session_timeout>30</session_timeout>
</session_state>
<settings>
<!-- lib is required -->
<lib>@ServerRoot@\lib</lib>
<!-- the rest are completely arbitrary -->
<dsn>DBI:mysql:databasename:hostname</dsn>
<password>j@p@n</password>
<username>root</username>
</settings>
</web_application>
</config>
DTD
This is the DTD for the XML config file:
<!ELEMENT application_name ( #PCDATA ) >
<!ELEMENT application_root ( #PCDATA ) >
<!ELEMENT application_state ( manager, dsn, password, username ) >
<!ELEMENT config ( web_application ) >
<!ELEMENT cookie_domain ( #PCDATA ) >
<!ELEMENT cookie_name ( #PCDATA ) >
<!ELEMENT do_reload_on_script_change ( #PCDATA ) >
<!ELEMENT domain_re ( #PCDATA ) >
<!ELEMENT dsn ( #PCDATA ) >
<!ELEMENT handler_root ( #PCDATA ) >
<!ELEMENT lib ( #PCDATA ) >
<!ELEMENT manager ( #PCDATA ) >
<!ELEMENT media_manager_upload_root ( #PCDATA ) >
<!ELEMENT page_cache_root ( #PCDATA ) >
<!ELEMENT password ( #PCDATA ) >
<!ELEMENT session_state ( manager, cookie_domain, cookie_name, dsn, password, username, session_timeout ) >
<!ELEMENT session_timeout ( #PCDATA ) >
<!ELEMENT settings ( lib ) >
<!ELEMENT username ( #PCDATA ) >
<!ELEMENT web_application ( domain_re, do_reload_on_script_change, application_name, application_root, handler_root, media_manager_upload_root, www_root, page_cache_root, application_state, session_state, settings ) >
<!ELEMENT www_root ( #PCDATA ) >
And this is the XML schema for the config file:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="application_name">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="application_root">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="application_state">
<xs:complexType>
<xs:sequence>
<xs:element ref="manager" />
<xs:element ref="dsn" />
<xs:element ref="password" />
<xs:element ref="username" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="config">
<xs:complexType>
<xs:sequence>
<xs:element ref="web_application" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="cookie_domain">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="cookie_name">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="do_reload_on_script_change">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="domain_re">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="dsn">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="handler_root">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="lib">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="manager">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="media_manager_upload_root">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="page_cache_root">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="password">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="session_state">
<xs:complexType>
<xs:sequence>
<xs:element ref="manager" />
<xs:element ref="cookie_domain" />
<xs:element ref="cookie_name" />
<xs:element ref="dsn" />
<xs:element ref="password" />
<xs:element ref="username" />
<xs:element ref="session_timeout" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="session_timeout">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="settings">
<xs:complexType>
<xs:sequence>
<xs:element ref="lib" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="username">
<xs:complexType mixed="true" />
</xs:element>
<xs:element name="web_application">
<xs:complexType>
<xs:sequence>
<xs:element ref="domain_re" />
<xs:element ref="do_reload_on_script_change" />
<xs:element ref="application_name" />
<xs:element ref="application_root" />
<xs:element ref="handler_root" />
<xs:element ref="media_manager_upload_root" />
<xs:element ref="www_root" />
<xs:element ref="page_cache_root" />
<xs:element ref="application_state" />
<xs:element ref="session_state" />
<xs:element ref="settings" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="www_root">
<xs:complexType mixed="true" />
</xs:element>
</xs:schema>
PARSING
As of 2007-07-03, the XML config file is parsed by XML::Simple. Anything that breaks XML::Simple will break Apache2::ASP::Config.
BUGS
It's possible that some bugs have found their way into this release.
Use RT http://rt.cpan.org/NoAuth/Bugs.html?Dist=Apache2-ASP to submit bug reports.
HOMEPAGE
Please visit the Apache2::ASP homepage at http://apache2-asp.no-ip.org/ to see examples of Apache2::ASP in action.
AUTHOR
John Drago mailto:jdrago_999@yahoo.com
COPYRIGHT AND LICENSE
Copyright 2007 John Drago, All rights reserved.
This software is free software. It may be used and distributed under the same terms as Perl itself.