Xalan-C++ API Documentation

The Xalan C++ XSLT Processor Version 1.10

Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

StylesheetConstructionContextDefault Class Reference

An default implementation of an abtract class which provides support for constructing the internal representation of a stylesheet. More...

#include <StylesheetConstructionContextDefault.hpp>

Inheritance diagram for StylesheetConstructionContextDefault:

Inheritance graph
[legend]
Collaboration diagram for StylesheetConstructionContextDefault:

Collaboration graph
[legend]
List of all members.

Public Types

Public Methods

Static Public Methods


Detailed Description

An default implementation of an abtract class which provides support for constructing the internal representation of a stylesheet.


Member Typedef Documentation

typedef XalanVector< ElemTemplateElement *> StylesheetConstructionContextDefault::ElemTemplateElementVectorType<ElemTemplateElement*>
 

typedef XalanArrayAllocator< const void *> StylesheetConstructionContextDefault::PointerVectorAllocatorType<const void*>
 

typedef XalanVector< StylesheetRoot *> StylesheetConstructionContextDefault::StylesheetVectorType<StylesheetRoot*>
 

typedef XalanDOMCharVectorAllocatorType::size_type StylesheetConstructionContextDefault::VectorAllocatorSizeType
 

typedef XalanArrayAllocator< XalanDOMChar > StylesheetConstructionContextDefault::XalanDOMCharVectorAllocatorType<XalanDOMChar>
 


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
eDefaultXalanDOMCharVectorBlockSize  
eDefaultAVTBlockSize  
eDefaultAVTPartSimpleBlockSize  
eDefaultAVTPartXPathBlockSize  
eDefaultXalanQNameByValueBlockSize  
eDefaultPointerVectorBlockSize  
eDefaultElemApplyTemplatesBlockSize  
eDefaultElemAttributeBlockSize  
eDefaultElemAttributeSetBlockSize  
eDefaultElemCallTemplateBlockSize  
eDefaultElemElementBlockSize  
eDefaultElemLiteralResultBlockSize  
eDefaultElemTemplateBlockSize  
eDefaultElemTextLiteralBlockSize  
eDefaultElemValueOfBlockSize  
eDefaultElemVariableBlockSize  
eDefaultMatchPatternDataBlockSize  


Constructor & Destructor Documentation

StylesheetConstructionContextDefault::StylesheetConstructionContextDefault ( MemoryManagerType & theManager,
XSLTEngineImpl & processor,
XPathFactory & xpathFactory,
VectorAllocatorSizeType theXalanDOMCharVectorAllocatorBlockSize = eDefaultXalanDOMCharVectorBlockSize,
XalanAVTAllocator::size_type theAVTAllocatorBlockSize = eDefaultAVTBlockSize,
XalanAVTPartSimpleAllocator::size_type theAVTPartSimpleAllocatorBlockSize = eDefaultAVTPartSimpleBlockSize,
XalanAVTPartXPathAllocator::size_type theAVTPartXPathAllocatorBlockSize = eDefaultAVTPartXPathBlockSize,
XalanQNameByValueAllocator::size_type theXalanQNameByValueAllocatorBlockSize = eDefaultXalanQNameByValueBlockSize,
VectorAllocatorSizeType thePointerVectorAllocatorBlockSize = eDefaultPointerVectorBlockSize )
 

StylesheetConstructionContextDefault::~StylesheetConstructionContextDefault ( ) [virtual]
 


Member Function Documentation

const AVTPart ** StylesheetConstructionContextDefault::allocateAVTPartPointerVector ( size_type theLength ) [virtual]
 

Allocate a vector of const AVTPart* of the specified length.

Parameters:
theLength   The length of the vector
Returns:
A pointer to the vector.

Reimplemented from StylesheetConstructionContext.

const AVT ** StylesheetConstructionContextDefault::allocateAVTPointerVector ( size_type theLength ) [virtual]
 

Allocate a vector of const AVT* of the specified length.

Parameters:
theLength   The length of the vector
Returns:
A pointer to the vector.

Reimplemented from StylesheetConstructionContext.

XalanDOMChar * StylesheetConstructionContextDefault::allocateXalanDOMCharVector ( const XalanDOMChar * theString,
XalanDOMString::size_type theLength = XalanDOMString::npos,
bool fTerminate = true ) [virtual]
 

Allocate a vector of XalanDOMChar of the specified size.

Parameters:
theString   The source character array
theLength   The length of the character vector
fTerminate   If true, terminate the new vector with 0
Returns:
A pointer to the array.

Reimplemented from StylesheetConstructionContext.

XalanDOMChar * StylesheetConstructionContextDefault::allocateXalanDOMCharVector ( XalanDOMString::size_type theLength ) [virtual]
 

Allocate a vector of XalanDOMChar of the specified size.

Parameters:
theLength   The length of the character vector
Returns:
A pointer to the vector.

Reimplemented from StylesheetConstructionContext.

Stylesheet * StylesheetConstructionContextDefault::create ( StylesheetRoot & theStylesheetRoot,
const XalanDOMString & theBaseIdentifier ) [virtual]
 

Create a new Stylesheet instance.

The StylesheetConstructionContext instance owns the Stylesheet instance, and will delete it when asked or when the StylesheetConstructionContext instance is destroyed.

Parameters:
A   reference to the StylesheetRoot instance.
theBaseIdentifier   A URI to the stylesheet file.
Returns:
A pointer to a new StylesheetRoot instance.

Reimplemented from StylesheetConstructionContext.

StylesheetRoot * StylesheetConstructionContextDefault::create ( const XSLTInputSource & theInputSource ) [virtual]
 

Create a new StylesheetRoot instance.

The StylesheetConstructionContext instance owns the StylesheetRoot instance, and will delete it when asked or when the StylesheetConstructionContext instance is destroyed.

Parameters:
theInputSource   A reference to the input source.
Returns:
A pointer to a new StylesheetRoot instance.

Reimplemented from StylesheetConstructionContext.

StylesheetRoot * StylesheetConstructionContextDefault::create ( const XalanDOMString & theBaseIdentifier ) [virtual]
 

Create a new StylesheetRoot instance.

The StylesheetConstructionContext instance owns the StylesheetRoot instance, and will delete it when asked or when the StylesheetConstructionContext instance is destroyed.

Parameters:
theBaseIdentifier   A URI to the stylesheet file.
Returns:
A pointer to a new StylesheetRoot instance.

Reimplemented from StylesheetConstructionContext.

const AVT * StylesheetConstructionContextDefault::createAVT ( const LocatorType * locator,
const XalanDOMChar * name,
const XalanDOMChar * stringedValue,
const PrefixResolver & resolver ) [virtual]
 

Create an AVT instance.

Parameters:
locator   the Locator for the instance. May be null.
name   name of AVT
stringedValue   string value to parse
resolver   resolver for namespace resolution
Returns:
A pointer to the instance.

Reimplemented from StylesheetConstructionContext.

const AVTPart * StylesheetConstructionContextDefault::createAVTPart ( const LocatorType * locator,
const XalanDOMChar * str,
XalanDOMString::size_type len,
const PrefixResolver & resolver ) [virtual]
 

Create an AVTPart instance.

Parameters:
locator   the Locator for the instance. May be null.
str   The XPath expression for the instance
len   The length of the expression
resolver   resolver for namespace resolution
Returns:
A pointer to the instance.

Reimplemented from StylesheetConstructionContext.

const AVTPart * StylesheetConstructionContextDefault::createAVTPart ( const XalanDOMChar * theString,
XalanDOMString::size_type theLength = XalanDOMString::npos ) [virtual]
 

Create an AVTPart instance.

Parameters:
theString   The source character array
theLength   The length of the character vector
fTerminate   If true, terminate the new vector with 0
Returns:
A pointer to the instance.

Reimplemented from StylesheetConstructionContext.

ElemTemplateElement * StylesheetConstructionContextDefault::createElement ( Stylesheet & stylesheetTree,
const XalanDOMChar * name,
const AttributeListType & atts,
ExtensionNSHandler & handler,
const LocatorType * locator = 0 ) [virtual]
 

Create an element to handle an extension element.

The instance owns the memory and will delete the element when it goes out of scope and the containing stylesheet is destroyed.

Parameters:
stylesheetTree   The stylesheet containing the element
name   The name of the element
atts   The list of attributes for the element
handler   The handler for elements in the extension namespace
locator   The Locator instance for error reporting. May be 0.

Returns:
A pointer to the new instance.

Reimplemented from StylesheetConstructionContext.

ElemTemplateElement * StylesheetConstructionContextDefault::createElement ( Stylesheet & stylesheetTree,
const XalanDOMChar * chars,
XalanDOMString::size_type length,
bool preserveSpace,
bool disableOutputEscaping,
const LocatorType * locator = 0 ) [virtual]
 

Create a an element for literal text.

The instance owns the memory and will delete the element when it goes out of scope and the containing stylesheet is destroyed.

Parameters:
stylesheetTree   The stylesheet containing the element
chars   The pointer to character string for element
length   length of the chars parameter.
preserveSpace   true is space should be preserved
disableOutputEscaping   true if output escaping should be disabled
locator   The Locator instance for error reporting. May be 0.

Returns:
A pointer to the new instance.

Reimplemented from StylesheetConstructionContext.

ElemTemplateElement * StylesheetConstructionContextDefault::createElement ( int token,
Stylesheet & stylesheetTree,
const XalanDOMChar * name,
const AttributeListType & atts,
const LocatorType * locator = 0 ) [virtual]
 

Create a elements which have specific names.

The instance owns the memory and will delete the element when it goes out of scope and the containing stylesheet is destroyed.

Parameters:
token   The enum value of the element to create.
stylesheetTree   The stylesheet containing the element
name   The name of the element
atts   The list of attributes for the element
locator   The Locator instance for error reporting. May be 0.

Returns:
A pointer to the new instance.

Reimplemented from StylesheetConstructionContext.

ElemTemplateElement * StylesheetConstructionContextDefault::createElement ( int token,
Stylesheet & stylesheetTree,
const AttributeListType & atts,
const LocatorType * locator = 0 ) [virtual]
 

Create a stylesheet element for the provided type.

The instance owns the memory and will delete the element when it goes out of scope and the containing stylesheet is destroyed.

Parameters:
token   The enum value of the element to create.
stylesheetTree   The stylesheet containing the element
atts   The list of attributes for the element
locator   The Locator instance for error reporting. May be 0.

Returns:
A pointer to the new instance.

Reimplemented from StylesheetConstructionContext.

XPath * StylesheetConstructionContextDefault::createMatchPattern ( const LocatorType * locator,
const XalanDOMChar * str,
const PrefixResolver & resolver,
bool allowVariableReferences = true,
bool allowKeyFunction = true ) [virtual]
 

Create and initialize an xpath for a match pattern and return it.

This is to be used by stylesheet elements that need an XPath that is guaranteed to persist while it lives.

Parameters:
locator   the locator for the XPath. May be null.
str   string to match
resolver   resolver for namespace resolution
allowVariableReferences   If true, variable references are allowed.
allowKeyFunction   If true, calls to the key() function are allowed.
Returns:
XPath for match pattern

Reimplemented from StylesheetConstructionContext.

XPath * StylesheetConstructionContextDefault::createMatchPattern ( const LocatorType * locator,
const XalanDOMString & str,
const PrefixResolver & resolver,
bool allowVariableReferences = true,
bool allowKeyFunction = true ) [virtual]
 

Create and initialize an xpath for a match pattern and return it.

This is to be used by stylesheet elements that need an XPath that is guaranteed to persist while it lives.

Parameters:
locator   the locator for the XPath. May be null.
str   string to match
resolver   resolver for namespace resolution
allowVariableReferences   If true, variable references are allowed.
allowKeyFunction   If true, calls to the key() function are allowed.
Returns:
XPath for match pattern

Reimplemented from StylesheetConstructionContext.

XPath * StylesheetConstructionContextDefault::createXPath ( const LocatorType * locator,
const XalanDOMChar * str,
XalanDOMString::size_type len,
const PrefixResolver & resolver,
bool allowVariableReferences = true,
bool allowKeyFunction = true ) [virtual]
 

Create and initialize an xpath and return it.

This is to be used by stylesheet elements that need an XPath that is guaranteed to persist while it lives.

Parameters:
locator   the locator for the XPath. May be null.
str   string to match
resolver   resolver for namespace resolution
Returns:
XPath for string matched

Reimplemented from StylesheetConstructionContext.

XPath * StylesheetConstructionContextDefault::createXPath ( const LocatorType * locator,
const XalanDOMChar * str,
const PrefixResolver & resolver,
bool allowVariableReferences = true,
bool allowKeyFunction = true ) [virtual]
 

Create and initialize an xpath and return it.

This is to be used by stylesheet elements that need an XPath that is guaranteed to persist while it lives.

Parameters:
locator   the locator for the XPath. May be null.
str   string to match
resolver   resolver for namespace resolution
Returns:
XPath for string matched

Reimplemented from StylesheetConstructionContext.

XPath * StylesheetConstructionContextDefault::createXPath ( const LocatorType * locator,
const XalanDOMString & str,
const PrefixResolver & resolver,
bool allowVariableReferences = true,
bool allowKeyFunction = true ) [virtual]
 

Create and initialize an xpath and return it.

This is to be used by stylesheet elements that need an XPath that is guaranteed to persist while it lives.

Parameters:
locator   the locator for the XPath. May be null.
str   string to match
resolver   resolver for namespace resolution
Returns:
XPath for string matched

Reimplemented from StylesheetConstructionContext.

const XalanMatchPatternData * StylesheetConstructionContextDefault::createXalanMatchPatternData ( const ElemTemplate & theTemplate,
size_type thePosition,
const XalanDOMString & theTargetString,
const XPath & theMatchPattern,
const XalanDOMString & thePatternString,
XPath::eMatchScore thePriority ) [virtual]
 

Create an instance of XalanMatchPatternData, which describes data related to a match pattern and template in stylesheet.

The instance owns the memory and will delete the element when it goes out of scope and the containing stylesheet is destroyed.

Parameters:
theTemplate   The ElemTemplate node that contains the template for this pattern
thePosition   The position in the stylesheet
theTargetString   The target string for match pattern
TheMatchPattern   The match pattern
thePatternString   the pattern string
thePriority   The priority for the match pattern.

Returns:
A pointer to the new instance.

Reimplemented from StylesheetConstructionContext.

const XalanQName * StylesheetConstructionContextDefault::createXalanQName ( const XalanDOMChar * qname,
const NamespacesStackType & namespaces,
const LocatorType * locator = 0,
bool fUseDefault = false ) [virtual]
 

Create a XalanQName-derived instance.

Parameters:
qname   The qname string
namespaces   The stack of namespaces
Locator   The current Locator, if any
fUseDefault   If true, a qname without a prefix will use the default namespace
Returns:
A pointer to the new instance

Reimplemented from StylesheetConstructionContext.

const XalanQName * StylesheetConstructionContextDefault::createXalanQName ( const XalanDOMString & qname,
const NamespacesStackType & namespaces,
const LocatorType * locator = 0,
bool fUseDefault = false ) [virtual]
 

Create a XalanQName-derived instance.

Parameters:
qname   The qname string
namespaces   The stack of namespaces
Locator   The current Locator, if any
fUseDefault   If true, a qname without a prefix will use the default namespace
Returns:
A pointer to the new instance

Reimplemented from StylesheetConstructionContext.

void StylesheetConstructionContextDefault::destroy ( StylesheetRoot * theStylesheetRoot ) [virtual]
 

Destroy a StylesheetRoot instance.

If this StylesheetConstructionContext instance does not own the StylesheetRoot, it will not delete it

Parameters:
theStylesheet   A pointer to the StylesheetRoot instance to delete.

Reimplemented from StylesheetConstructionContext.

void StylesheetConstructionContextDefault::error ( const XalanDOMString & msg,
const XalanNode * sourceNode,
const LocatorType * locator ) const [virtual]
 

Reimplemented from StylesheetConstructionContext.

void StylesheetConstructionContextDefault::error ( const XalanDOMString & msg,
const XalanNode * sourceNode = 0,
const ElemTemplateElement * styleNode = 0 ) const [virtual]
 

Reimplemented from StylesheetConstructionContext.

XalanDOMString & StylesheetConstructionContextDefault::getCachedString ( ) [virtual]
 

Get a cached string for temporary use.

Returns:
A reference to the string

Reimplemented from StylesheetConstructionContext.

eElementToken StylesheetConstructionContextDefault::getElementNameToken ( const XalanDOMString & name ) [static]
 

eElementToken StylesheetConstructionContextDefault::getElementToken ( const XalanDOMString & name ) const [virtual]
 

Given an XSL tag name, return an integer token that corresponds to the enums defined above.

Parameters:
name   a probable xsl:xxx element
Returns:
The enum value for that token, or ELEMNAME_UNDEFINED

Reimplemented from StylesheetConstructionContext.

const LocatorType * StylesheetConstructionContextDefault::getLocatorFromStack ( ) const [virtual]
 

Get the locator from the top of the locator stack.

Returns:
A pointer to the Locator, or 0 if there is nothing on the stack.

Reimplemented from StylesheetConstructionContext.

const XalanDOMString & StylesheetConstructionContextDefault::getPooledString ( const XalanDOMChar * theString,
XalanDOMString::size_type theLength = XalanDOMString::npos ) [virtual]
 

Get a pooled string given the source character array.

If the string already exists in the pool, no copy will be made. If not, a copy will be made and kept for later use.

Parameters:
theString   The source character array
theLength   The length of the character array
Returns:
a const reference to a pooled string.

Reimplemented from StylesheetConstructionContext.

const XalanDOMString & StylesheetConstructionContextDefault::getPooledString ( const XalanDOMString & theString ) [virtual]
 

Get a pooled string given the source string.

If the string already exists in the pool, no copy will be made. If not, a copy will be made and kept for later use.

Parameters:
theString   The source string
Returns:
a const reference to a pooled string.

Reimplemented from StylesheetConstructionContext.

URLAutoPtrType StylesheetConstructionContextDefault::getURLFromString ( const XalanDOMString & urlString,
const XalanDOMString & base ) [virtual]
 

Determine the fully qualified URI for a string.

Parameters:
urlString   string to qualify
base   base location for URI
Returns:
auto pointer to fully qualified URI

Reimplemented from StylesheetConstructionContext.

URLAutoPtrType StylesheetConstructionContextDefault::getURLFromString ( const XalanDOMString & urlString ) [virtual]
 

Determine the fully qualified URI for a string.

Parameters:
urlString   string to qualify
Returns:
auto pointer to fully qualified URI

Reimplemented from StylesheetConstructionContext.

XalanDOMString & StylesheetConstructionContextDefault::getURLStringFromString ( const XalanDOMString & urlString,
const XalanDOMString & base,
XalanDOMString & theResult ) [virtual]
 

Determine the fully qualified URI for a string.

Parameters:
urlString   string to qualify
base   base location for URI
Returns:
string to fully qualified URI

Reimplemented from StylesheetConstructionContext.

XalanDOMString & StylesheetConstructionContextDefault::getURLStringFromString ( const XalanDOMString & urlString,
XalanDOMString & theResult ) [virtual]
 

Determine the fully qualified URI for a string.

Parameters:
urlString   string to qualify
Returns:
string to fully qualified URI

Reimplemented from StylesheetConstructionContext.

const XalanDOMString & StylesheetConstructionContextDefault::getXSLTNamespaceURI ( ) const [virtual]
 

Retrieve the URI for the current XSLT namespace, for example, "http://www.w3.org/1999/XSL/Transform".

Returns:
URI string

Reimplemented from StylesheetConstructionContext.

double StylesheetConstructionContextDefault::getXSLTVersionSupported ( ) const [virtual]
 

Get the latest XSLT version currently supported.

Returns:
XSLT version number

Reimplemented from StylesheetConstructionContext.

const XalanDOMString & StylesheetConstructionContextDefault::getXalanXSLNameSpaceURL ( ) const [virtual]
 

Get the Xalan namespace for built-in extensions.

Returns:
Xalan namespace for extensions

Reimplemented from StylesheetConstructionContext.

bool StylesheetConstructionContextDefault::isValidQName ( const XalanDOMChar * theName,
const Stylesheet & theStylesheet,
const LocatorType * theLocator = 0 ) [virtual]
 

Given an name, determine if it is a valid QName.

Parameters:
theName   The name to check
theStylesheet   The current Stylesheet instance
theLocator   The Locator for error reporting. May be 0.

Returns:
true if the string is a valid QName.

Reimplemented from StylesheetConstructionContext.

bool StylesheetConstructionContextDefault::isXMLSpaceAttribute ( const XalanDOMChar * theAttributeName,
const Stylesheet & theStylesheet,
const LocatorType * theLocator = 0 ) [virtual]
 

Given an name, determine if it is the xml:space attribute.

Parameters:
theAttributeName   The name to check
theStylesheet   The current Stylesheet instance
theLocator   The Locator for error reporting. May be 0.

Returns:
true if the string is the xml:space attribute name

Reimplemented from StylesheetConstructionContext.

bool StylesheetConstructionContextDefault::isXSLUseAttributeSetsAttribute ( const XalanDOMChar * theAttributeName,
const Stylesheet & theStylesheet,
const LocatorType * theLocator = 0 ) [virtual]
 

Given an name, determine if it is the xsl:use-attribute-sets attribute.

Parameters:
theAttributeName   The name to check
theStylesheet   The current Stylesheet instance
theLocator   The Locator for error reporting. May be 0.

Returns:
true if the string is the xsl:use-attribute-sets attribute name

Reimplemented from StylesheetConstructionContext.

void StylesheetConstructionContextDefault::message ( const XalanDOMString & msg,
const XalanNode * sourceNode,
const LocatorType * locator ) const [virtual]
 

Reimplemented from StylesheetConstructionContext.

void StylesheetConstructionContextDefault::message ( const XalanDOMString & msg,
const XalanNode * sourceNode = 0,
const ElemTemplateElement * styleNode = 0 ) const [virtual]
 

Reimplemented from StylesheetConstructionContext.

XalanDocument * StylesheetConstructionContextDefault::parseXML ( const XalanDOMString & urlString,
DocumentHandlerType * docHandler,
XalanDocument * docToRegister ) [virtual]
 

Read in the XML file, either producing a Document or calling SAX events, and register the document in a table.

If the document has already been read in, it will not be reparsed.

Parameters:
urlString   location of the XML
docHandler   pointer to SAX event handler
docToRegister   if using a SAX event handler, the object to register in the source docs table.
Returns:
document object, which represents the parsed XML
Exceptions:
SAXException  

Reimplemented from StylesheetConstructionContext.

void StylesheetConstructionContextDefault::popLocatorStack ( ) [virtual]
 

Pop the locator from the top of the locator stack.

Reimplemented from StylesheetConstructionContext.

void StylesheetConstructionContextDefault::pushLocatorOnStack ( const LocatorType * locator ) [virtual]
 

Push a locator on to the locator stack.

Parameters:
A   pointer to the Locator to push.

Reimplemented from StylesheetConstructionContext.

bool StylesheetConstructionContextDefault::releaseCachedString ( XalanDOMString & theString ) [virtual]
 

Return a cached string.

Parameters:
theString   The string to release.

Returns:
true if the string was released successfully.

Reimplemented from StylesheetConstructionContext.

void StylesheetConstructionContextDefault::reset ( ) [virtual]
 

Reset the StylesheetConstructionContext instance.

Any existing objects created by the instance will be destroyed.

Reimplemented from StylesheetConstructionContext.

const XalanQName ** StylesheetConstructionContextDefault::tokenizeQNames ( size_type & count,
const XalanDOMChar * qnameTokens,
const NamespacesStackType & namespaces,
const LocatorType * locator = 0,
bool fUseDefault = false ) [virtual]
 

Tokenize a string and return the QNames corresponding to those tokens.

Parameters:
count   The number of namespaces in the vector returned
qnameTokens   The string to tokenize
namespaces   The stack of namespaces
Locator   The current Locator, if any
fUseDefault   If true, qnames without prefixes will use the default namespace
Returns:
The resulting vector of XalanQName instances.

Reimplemented from StylesheetConstructionContext.

void StylesheetConstructionContextDefault::warn ( const XalanDOMString & msg,
const XalanNode * sourceNode,
const LocatorType * locator ) const [virtual]
 

Reimplemented from StylesheetConstructionContext.

void StylesheetConstructionContextDefault::warn ( const XalanDOMString & msg,
const XalanNode * sourceNode = 0,
const ElemTemplateElement * styleNode = 0 ) const [virtual]
 

Reimplemented from StylesheetConstructionContext.


The documentation for this class was generated from the following file:

Interpreting class diagrams

Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.

dot

Xalan-C++ XSLT Processor Version 1.10
Copyright © 1999-2004 The Apache Software Foundation. All Rights Reserved.

Apache Logo