
   NOTES - APACHE XALAN DOCUMENTATION PROJECT

The development repository is located at:

   http://svn.apache.org/repos/asf/xalan/c/branch/Xalan-Docs

This branch is started by <shathaway@apache.org>

It contains prototype work for the development of Xalan PMC documentation.

1. Developer-Notes
  Contains some useful planning documents, including various style guides,
  Version compatibility notes, and other planning documents.

2. docs
  This directory is for the review and construction of the
  web pages for the XALAN top-level web page and its projects.

2.a.	docs/xalan

  The "xalan" subdirectory contains the web pages for the
  "http://xalan.apache.org" home page.  Subdirectories of
  doc/xalan are the url children of "http://xalan.apache.org/".

2.a.1.	docs/xalan/xalan-c

  docs/xalan/xalan-c contains the constructed web pages for the
  "http://xalan.apache.org/xalan-c/" project

2.a.2.	docs/xalan/xalan-j

  docs/xalan/xalan-j contains the constructed web pages for the
  "http://xalan.apache.org/xalan-j/" project

3. xalan
  Contains the StyleBook XML markup and transformations used to
  construct the "docs" and its subdirectory html content.

3.a.	xalan/c
  Contains content based on "xalan/c/trunk/xdocs" as a foundation
  for new web page development.

3.a.1.	xalan/c/trunk/bin
  Is a placeholder for an Xalan command-line XSLT processor.

3.a.2.  xalan/c/trunk/build
  Is a placeholder for the web page construction products.

3.a.3.	xalan/c/trunk/xdocs
  Contains the web page document construction scripts and 
  Apache StyleBook XML sources for building the web pages.
  Note: The StyleBook Java .jar files are no longer needed.

3.b.	xalan/j
  Contains content based on "xalan/j/trunk/xdocs" as a foundation
  for new web page development.

3.b.1.	xalan/j/trunk/bin
  Is a placeholder for an Xalan command-line XSLT processor.

3.b.2.	xalan/j/trunk/build
  Is a placeholder for the web page construction products.

3.b.3.	xalan/j/trunk/xdocs
  Contains the web page document construction scripts and
  Apache StyleBook XML sources for building the web pages.
  Note: The StyleBook Java .jar files are no longer needed.

--------

RESOURCES

apache-xalan.css
  Controls the look-and-feel of the StyleBook transformed XML.

asf_logo.png
  Is the ASF wide feather logo.

note.gif
  Is an icon to accompany notes on XALAN web pages.

Xalan-Logo-tm.png
  A trademarked (TM) logo for the Apache XALAN Projects.

XalanC-Logo-tm.png
  A trademarked (TM) logo for the Apache XALAN-C Project.

XalanJ-Logo-tm.png
  A trademarked (TM) logo for the Apache XALAN-J Project.

XalanC-Logo8x15-tm.png
  A trademarked (TM) logo in high resolution for advertizing.

I can create additional XALAN logos of requested resolution.
Send requests to <shathaway@apache.org>.

Discussions of the XALAN Documentation Project can be posted
to the mailto:xalan-dev@xml.apache.org list.







