Author: ddevienne
Date: Fri Apr 15 08:00:09 2005
New Revision: 161477

URL: http://svn.apache.org/viewcvs?view=rev&rev=161477
Log:
Proposal for XML doc of Ant, transformed to HTML using XSL.

Added:
    ant/sandbox/antlibs/gendoc/
    ant/sandbox/antlibs/gendoc/build.xml
    ant/sandbox/antlibs/gendoc/manual/
    ant/sandbox/antlibs/gendoc/manual.xsl
    ant/sandbox/antlibs/gendoc/manual/ant.xml
    ant/sandbox/antlibs/gendoc/manual/mkdir.xml
    ant/sandbox/antlibs/gendoc/whatsnew.xml
    ant/sandbox/antlibs/gendoc/whatsnew.xsl

Added: ant/sandbox/antlibs/gendoc/build.xml
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/gendoc/build.xml?view=auto&rev=161477
==============================================================================
--- ant/sandbox/antlibs/gendoc/build.xml (added)
+++ ant/sandbox/antlibs/gendoc/build.xml Fri Apr 15 08:00:09 2005
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+
+<!--
+============================================================
+  XML+XSL based new documentation for Ant.
+
+  Dominique Devienne, <[EMAIL PROTECTED]>, Mar 2005
+============================================================
+-->
+<project name="xd3ocs" default="all">
+
+  <description>
+    Generates HTML documentation from the custom Ant XML vocabulary,
+    and the custom stylesheets (XSL 1.0 based for now).
+  </description>
+
+  <!-- ===================================================== -->
+  <target name="whatsnew" description="Generates HTML whatsnew">
+
+    <mkdir dir="build" />
+    <style in="whatsnew.xml" out="build/whatsnew.html" style="whatsnew.xsl" />
+
+  </target>
+
+  <!-- ===================================================== -->
+  <target name="manual" description="Generates HTML manual">
+
+    <mkdir dir="build/manual" />
+    <style basedir="manual" includes="*.xml"
+          style="manual.xsl" destdir="build/manual" />
+
+  </target>
+
+  <!-- ===================================================== -->
+  <target name="clean" description="Deletes all generated files">
+
+    <delete quiet="true" includeEmptyDirs="true">
+      <fileset dir="build" />
+    </delete>
+
+  </target>
+
+  <!-- ===================================================== -->
+  <target name="all" depends="whatsnew, manual" />
+
+</project>

Added: ant/sandbox/antlibs/gendoc/manual.xsl
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/gendoc/manual.xsl?view=auto&rev=161477
==============================================================================
--- ant/sandbox/antlibs/gendoc/manual.xsl (added)
+++ ant/sandbox/antlibs/gendoc/manual.xsl Fri Apr 15 08:00:09 2005
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+                xmlns:m="uri:org.apache.ant:manual"
+                xmlns:attr="uri:org.apache.ant:manual:attribute"
+                xmlns:elem="uri:org.apache.ant:manual:element"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+                exclude-result-prefixes="m attr elem">
+
+  <xsl:output method="html" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
+
+  <!-- Space-only nodes matter in the example snippets only -->
+  <xsl:preserve-space elements="m:snippet" />
+
+  <!-- ================================================= -->
+  <xsl:template match="/m:manual">
+    <!-- For now, process only first <task> of each file -->
+    <xsl:apply-templates select="m:task[position()=1]" />
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:task">
+    <html>
+      <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <title>&lt;<xsl:value-of select="@name"/>&gt; task</title>
+        <style type="text/css">
+          code     { font: 9pt monospace, regular; }
+          .antlib  { background-color: #E5E5E5; }
+          .ns      { color: #6A5ACD; background-color: #F2F2F2; }
+          .tag     { color: #804040; font-weight: bold; }
+          .attr    { color: #2E8B57; font-weight: bold; }
+          .value   { color: #FF00FF; background-color: #F2F2F2; }
+          .example { border-left: thick solid gray; padding-left: 1em; }
+          .example pre { margin-bottom: 0.5em; }
+          h4 { margin-bottom: 0.33em; }
+          div.nested-1 { margin-left: 1.0em; }
+          div.nested-1 h5 { margin-bottom: 0.0em; }
+          .synopsis { background-color: #E9E9E9; }
+          .since   {font: italic normal; }
+          .at { font: 9pt monospace, regular; color: gray; }
+          .elem-ref { font: 9pt monospace, regular; font-weight: bold;
+                      color: #804040; background-color: #E5E5E5; }
+          .attr-ref { font: 9pt monospace, regular; font-weight: bold;
+                      color: #2E8B57; background-color: #E5E5E5; }
+        </style>
+      </head>
+      <body>
+        <h2 class="{local-name()}" id="[EMAIL PROTECTED]">
+          <xsl:call-template name="bracket-name" /> task
+        </h2>
+        <xsl:apply-templates />
+      </body>
+    </html>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:alias">
+    <!-- Just ignore for now -->
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:description">
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:task/m:description/m:synopsis">
+    <h3 class="description">Description</h3>
+    <span class="synopsis"><xsl:apply-templates /></span>
+    <br />
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:description/m:synopsis">
+    <span class="synopsis"><xsl:apply-templates /></span>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:attributes">
+    <xsl:if test="m:attribute">
+      <h3>Parameters</h3>
+      <xsl:call-template name="attributes" />
+    </xsl:if>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:nested-element/m:attributes">
+    <xsl:if test="m:attribute">
+      <div class="nested-1">
+        <h5><xsl:call-template name="bracket-name" />'s parameters</h5>
+        <xsl:call-template name="attributes" />
+      </div>
+    </xsl:if>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template name="attributes">
+    <table id="attributes" border="1" cellpadding="2" cellspacing="0">
+      <thead>
+        <tr>
+          <th valign="top"><b>Attribute</b></th>
+          <th valign="top"><b>Description</b></th>
+          <th align="center" valign="top"><b>Required?</b></th>
+        </tr>
+      </thead>
+      <tbody>
+        <xsl:apply-templates select="m:attribute" />
+      </tbody>
+    </table>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:attribute">
+    <tr>
+      <td valign="top">
+        <xsl:value-of select="@name" />
+      </td>
+      <td valign="top">
+        <xsl:apply-templates select="m:synopsis | m:description" />
+      </td>
+      <td align="center" valign="top">
+        <xsl:choose>
+          <xsl:when test="m:required">
+            <xsl:apply-templates select="m:required" />
+          </xsl:when>
+          <xsl:otherwise>No</xsl:otherwise>
+        </xsl:choose>
+      </td>
+    </tr>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:nested-elements">
+    <xsl:if test="m:nested-element">
+      <h3 class="{local-name()}">Parameters specified as nested elements</h3>
+      <xsl:apply-templates select="m:nested-element" />
+    </xsl:if>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:nested-element">
+    <h4 id="[EMAIL PROTECTED]" class="{local-name()}">
+      <xsl:call-template name="bracket-name" />
+      <xsl:if test="@since">
+        <!-- Not great, but will do for now -->
+        <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
+        <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
+        <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
+        <span class="since">(since Ant <xsl:value-of select="@since" />)</span>
+      </xsl:if>
+    </h4>
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:section">
+    <h3 class="{local-name()}"><xsl:value-of select="@name" /></h3>
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:required">
+    Yes<xsl:text/>
+    <xsl:if test="normalize-space(text())!=''">
+      <xsl:text/>, <em><xsl:apply-templates /></em>
+    </xsl:if>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:examples">
+    <xsl:if test="m:example">
+      <h3 class="{local-name()}">Examples</h3>
+      <xsl:apply-templates select="m:example" />
+    </xsl:if>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:example">
+    <xsl:variable name="num"><xsl:number /></xsl:variable>
+    <div class="{local-name()}" id="e.g.{$num}">
+      <xsl:apply-templates />
+    </div>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:snippet">
+    <pre><xsl:apply-templates /></pre>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:snippet/text()">
+    <!-- Swallow the first and last text nodes for better formatting.
+         Note that position() is in the context of all the child nodes
+         of the snippet, both text() and element() nodes.
+         Test for normalize-space='' ??? -->
+    <xsl:if test="not(position()=1 or position()=last())">
+      <xsl:value-of select="." />
+    </xsl:if>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="m:copyright">
+    <hr/>
+    <p align="center">
+      Copyright &#169; <xsl:value-of select="." />
+      The Apache Software Foundation. All rights Reserved.
+    </p>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template name="bracket-name">
+    <xsl:variable name="name">
+      <xsl:choose>
+        <xsl:when test="@name"><xsl:value-of select="@name" /></xsl:when>
+        <xsl:when test="../@name"><xsl:value-of select="../@name" /></xsl:when>
+        <xsl:otherwise><xsl:value-of select="." /></xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <code>&lt;</code><xsl:value-of select="$name"/><code>&gt;</code>
+  </xsl:template>
+
+  <!-- =================================================
+       A reference to a local attribute using the special
+       'attr' namespace (prefix). (from task/type, or a nested element.)
+
+       Note: No links for now, until unicity of link can be asserted.
+    -->
+  <xsl:template match="attr:*">
+    <!--<span class="at">@</span>-->
+    <span class="attr-ref" title="{local-name()} Attribute">
+      <xsl:value-of select="local-name()" />
+    </span>
+  </xsl:template>
+
+  <!-- =================================================
+       A reference to a local nested elemnt using the special
+       'elem' namespace (prefix). (from task/type, or a nested element.)
+
+       Note: No links for now, until unicity of link can be asserted.
+    -->
+  <xsl:template match="elem:*">
+    <!--<span class="at">@</span>-->
+    <span class="elem-ref" title="&lt;{local-name()}&gt; Nested Element">
+      <xsl:text/>&lt;<xsl:value-of select="local-name()" />&gt;<xsl:text/>
+    </span>
+  </xsl:template>
+
+  <!-- =================================================
+       Auto-<code> the boolean values true/false/yes/no.
+    -->
+  <xsl:template match="m:true | m:false | m:yes | m:no">
+    <code><xsl:value-of select="local-name()" /></code>
+  </xsl:template>
+
+
+  <!-- =================================================
+    Handle generic XML
+    -->
+
+  <!-- ================================================= -->
+  <xsl:template match="*[starts-with(namespace-uri(), 'antlib:')]">
+    <xsl:variable name="ns" select="namespace-uri()" />
+    <xsl:call-template name="tag">
+      <xsl:with-param name="class" select="'antlib'" />
+      <!-- TODO: Name should be a link to task/type documentation -->
+      <xsl:with-param name="name">
+        <span title="{$ns}:{local-name()}">
+          <!-- Drop the namespace prefix for Ant tasks/types -->
+          <xsl:if test="not($ns = 'antlib:org.apache.tools.ant')">
+            <span class="ns">
+              <xsl:value-of select="name(namespace::*[. = $ns])" />
+          <!--<xsl:value-of select="substring-before(name(), ':')" />-->
+            </span>:<xsl:text/>
+          </xsl:if>
+          <span class="tag"><xsl:value-of select="local-name()" /></span>
+        </span>
+      </xsl:with-param>
+    </xsl:call-template>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="*[not(namespace-uri() = '')]" priority="-10">
+    <xsl:call-template name="tag" />
+  </xsl:template>
+
+  <!-- =================================================
+       Copy HTML tags in the default namespace as-is,
+       while still converting custom tags thru templates.
+    -->
+  <xsl:template match="*[namespace-uri() = '']" priority="-20">
+    <xsl:copy>
+      <xsl:copy-of select="@*" />
+      <xsl:apply-templates select="node()" />
+    </xsl:copy>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template name="tag">
+    <xsl:param name="name" select="name()" />
+    <xsl:param name="class" select="''" />
+
+    <code>
+      <xsl:if test="$class">
+        <xsl:attribute name="class">
+          <xsl:value-of select="$class" />
+        </xsl:attribute>
+      </xsl:if>
+
+      <!-- tag name start -->
+      <xsl:text/>&lt;<xsl:copy-of select="$name" />
+
+      <!-- show its attributes, if any -->
+      <xsl:apply-templates select="@*" mode="antlib" />
+
+      <xsl:choose>
+        <xsl:when test="node()"> <!-- SOME nested elements -->
+          <xsl:text>&gt;</xsl:text>
+
+          <xsl:apply-templates />
+
+          <!-- tag name end (until lexical end of template) -->
+          <xsl:text/>&lt;/<xsl:copy-of select="$name" />
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:if test="@*"> <!-- No nested elements but SOME attributes -->
+            <xsl:text> /</xsl:text>
+          </xsl:if>
+        </xsl:otherwise>
+      </xsl:choose>
+      <xsl:text>&gt;</xsl:text>
+    </code>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="@*" mode="antlib">
+    <xsl:text> </xsl:text>
+    <span class="attr">
+      <xsl:value-of select="name()"/>
+    </span>=<span class="value">
+      <xsl:text/>"<xsl:value-of select="."/>"<xsl:text/>
+    </span>
+  </xsl:template>
+
+</xsl:stylesheet>

Added: ant/sandbox/antlibs/gendoc/manual/ant.xml
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/gendoc/manual/ant.xml?view=auto&rev=161477
==============================================================================
--- ant/sandbox/antlibs/gendoc/manual/ant.xml (added)
+++ ant/sandbox/antlibs/gendoc/manual/ant.xml Fri Apr 15 08:00:09 2005
@@ -0,0 +1,291 @@
+<?xml version="1.0"?>
+
+<?xml-stylesheet type="text/xsl" href="../manual.xsl"?>
+
+<m:manual xmlns:m="uri:org.apache.ant:manual"
+          xmlns:a="antlib:org.apache.tools.ant"
+          xmlns:elem="uri:org.apache.ant:manual:element"
+          xmlns:attr="uri:org.apache.ant:manual:attribute">
+
+  <m:task name="ant">
+    <m:description>
+      <m:synopsis>Runs Ant on a supplied buildfile.</m:synopsis>
+
+      <p>This can be used to build subprojects.  <strong>This task must not be
+      used outside of a <code>target</code> if it invokes the same build file
+      it is part of.</strong></p>
+
+      <p>When the <attr:antfile/> attribute is omitted, the file "build.xml";
+      in the supplied directory (<attr:dir/> attribute) is used.</p>
+      <p>If no <attr:target/> attribute is supplied, the default target of
+      the new project is used.</p>
+
+      <p>By default, all of the properties of the current project will be
+      available in the new project.  Alternatively, you can set the
+      <attr:inheritAll/> attribute to <m:false/> and only
+      "user" properties (i.e., those passed on the command-line)
+      will be passed to the new project.  In either case, the set of
+      properties passed to the new project will override the properties that
+      are set in the new project (See also the <a
+      href="property.html">property task</a>).</p>
+
+      <p>You can also set properties in the new project from the old project
+      by using nested property tags. These properties are always passed
+      to the new project and any project created in that project
+      regardless of the setting of <attr:inheritAll/>.  This allows you to
+      parameterize your subprojects.  Properties defined on the command line
+      cannot be overridden by nested <elem:property/> elements.</p>
+
+      <p>References to data types can also be passed to the new project, but
+      by default they are not.  If you set the inheritrefs attribute to
+      true, all references will be copied, but they will not override
+      references defined in the new project.</p>
+
+      <p>Nested <elem:reference/> elements can also be used to copy references
+      from the calling project to the
+      new project, optionally under a different id.  References taken from
+      nested elements will override existing references that have been
+      defined outside of targets in the new project - but not those defined
+      inside of targets.</p>
+    </m:description>
+
+    <!-- The task's attributes -->
+    <m:attributes>
+      <m:attribute name="antfile">
+        <m:type>java.io.File</m:type>
+        <m:description>
+          <m:synopsis>the buildfile to use.</m:synopsis>
+          Defaults to "build.xml".  This file is expected to be a filename
+          relative to the dir attribute given.
+        </m:description>
+      </m:attribute>
+
+      <m:attribute name="dir">
+        <m:type>java.io.File</m:type>
+        <m:description>
+          <m:synopsis>
+            the directory to use as a basedir for the new Ant project.
+          </m:synopsis>
+          Defaults to the current project's basedir, unless
+          inheritall has been set to false, in which case it doesn't
+          have a default value.  This will override the basedir
+          setting of the called project.
+        </m:description>
+      </m:attribute>
+
+      <m:attribute name="target">
+        <m:type>java.lang.String</m:type>
+        <m:description>
+          <m:synopsis>
+            the target of the new Ant project that should be executed.
+          </m:synopsis>
+          Defaults to the new project's default target.
+        </m:description>
+      </m:attribute>
+
+      <m:attribute name="output">
+        <m:type>java.io.File</m:type>
+        <m:description>
+          <m:synopsis>
+            Filename to write the ant output to.  
+          </m:synopsis>
+          This is relative to the value of the dir attribute if it has been
+          set or to the base directory of the current project otherwise.
+        </m:description>
+      </m:attribute>
+
+      <m:attribute name="inheritAll">
+        <m:type>boolean</m:type>
+        <m:description>
+          <m:synopsis>Whether to inherit properties.</m:synopsis>
+          If <m:true/>, pass all properties to the
+          new Ant project.  Defaults to <m:false/>.
+        </m:description>
+      </m:attribute>
+
+      <m:attribute name="inheritRefs">
+        <m:type>boolean</m:type>
+        <m:description>
+          <m:synopsis>Whether to inherit references.</m:synopsis>
+          If <m:true/>, pass all references to the
+          new Ant project.  Defaults to <m:false/>.
+        </m:description>
+      </m:attribute>
+    </m:attributes>
+
+    <!-- The tasks nested-elements -->
+    <m:nested-elements>
+      <m:nested-element name="property">
+        <m:description>
+          <m:synopsis>
+            Pass an explicit property value to the new Ant project.
+          </m:synopsis>
+
+          <p>See the description of the <a:property/> task.</p>
+
+          <p>These properties become equivalent to properties you define on
+          the command line. These are special properties and they will always
+          get passed down, even through additional <a:ant/>, <a:antcall/>,
+          <a:subant/> tasks with inheritAll set to <m:false/> (see above).</p>
+
+          <p>Note that the <code>refid</code> attribute points to a
+          reference in the calling project, not in the new one.</p>
+        </m:description>
+      </m:nested-element>
+
+      <m:nested-element name="reference">
+        <m:description>
+          <m:synopsis>
+            Pass an explicit reference value to the new Ant project.
+          </m:synopsis>
+          Used to choose references that shall be copied into the
+          new project, optionally changing their id.
+        </m:description>
+
+        <!-- The <reference> nested-element's attributes -->
+        <m:attributes>
+          <m:attribute name="refid">
+            <m:type>java.lang.String</m:type>
+            <m:required/>
+            <m:description>
+              <m:synopsis>
+                The id of the reference in the <em>calling</em> project.
+              </m:synopsis>
+            </m:description>
+          </m:attribute>
+
+          <m:attribute name="torefid">
+            <m:type>java.lang.String</m:type>
+            <m:description>
+              <m:synopsis>
+                The id of the reference in the <em>new</em> project.
+              </m:synopsis>
+              Defaults to the value of <attr:refid/>.
+            </m:description>
+          </m:attribute>
+        </m:attributes>
+      </m:nested-element>
+
+      <m:nested-element name="propertyset" since="1.6">
+        <m:description>
+          You can specify a set of properties to be copied into the new
+          project with <a:propertyset/>s.
+        </m:description>
+      </m:nested-element>
+
+      <m:nested-element name="target" since="1.6.3">
+        <m:description>
+          <m:synopsis>Call an explicit target.</m:synopsis>
+          You can specify multiple targets using nested <elem:target/>
+          elements instead of using the target attribute.  These will be
+          executed as if Ant had been invoked with a single target whose
+          dependencies are the targets so specified, in the order specified.
+        </m:description>
+
+        <!-- The <target> nested-element's attributes -->
+        <m:attributes>
+          <m:attribute name="name">
+            <m:type>java.lang.String</m:type>
+            <m:required/>
+            <m:description>
+              <m:synopsis>The name of the called target.</m:synopsis>
+            </m:description>
+          </m:attribute>
+        </m:attributes>
+      </m:nested-element>
+      
+    </m:nested-elements>
+
+    <m:section name="Basedir of the new project">
+      <p>The <attr:basedir/> value of the new project is affected
+      by the two attributes <attr:dir/> and <attr:inheritAll/>,
+      see the following table for details:</p>
+
+      <table border="1" cellpadding="2" cellspacing="0">
+        <tr>
+          <th valign="top">dir attribute</th>
+          <th valign="top">inheritAll attribute</th>
+          <th valign="top">new project's basedir</th>
+        </tr>
+        <tr>
+          <td valign="top">value provided</td>
+          <td valign="top">true</td>
+          <td valign="top">value of dir attribute</td>
+        </tr>
+        <tr>
+          <td valign="top">value provided</td>
+          <td valign="top">false</td>
+          <td valign="top">value of dir attribute</td>
+        </tr>
+        <tr>
+          <td valign="top">omitted</td>
+          <td valign="top">true</td>
+          <td valign="top">basedir of calling project (the one whose build
+              file contains the <code>&lt;ant&gt;</code> task).</td>
+        </tr>
+        <tr>
+          <td valign="top">omitted</td>
+          <td valign="top">false</td>
+          <td valign="top">basedir attribute of the 
<code>&lt;project&gt;</code> element
+              of the new project</td>
+        </tr>
+      </table>
+    </m:section>
+
+    <m:examples>
+      <m:example>
+        <m:snippet>
+          <a:ant dir="subproject"/>
+        </m:snippet>
+      </m:example>
+
+      <m:example>
+        <m:snippet>
+          <a:ant antfile="subproject/subbuild.xml"
+               dir="subproject" target="compile"/>
+        </m:snippet>
+      </m:example>
+
+      <m:example>
+        <m:snippet>
+<a:ant antfile="subproject/property_based_subbuild.xml">
+  <a:property name="param1" value="version 1.x"/>
+  <a:property file="config/subproject/default.properties"/>
+</a:ant>
+        </m:snippet>
+      </m:example>
+
+      <m:example>
+        <m:snippet>
+<a:ant inheritAll="false" antfile="subproject/subbuild.xml">
+  <a:property name="output.type" value="html"/>
+</a:ant>
+        </m:snippet>
+      </m:example>
+
+      <m:example>
+        <m:snippet>
+<a:ant antfile="subproject/subbuild.xml"
+     dir="subproject" target="compile"/>
+
+<a:ant dir="subproject"/>
+
+<a:ant antfile="subproject/property_based_subbuild.xml">
+  <a:property name="param1" value="version 1.x"/>
+  <a:property file="config/subproject/default.properties"/>
+</a:ant>
+
+<a:ant inheritAll="false" antfile="subproject/subbuild.xml">
+  <a:property name="output.type" value="html"/>
+</a:ant>
+        </m:snippet>
+        <m:description>
+          The build file of the calling project defines some <a:path/>
+          elements like this:
+        </m:description>
+      </m:example>
+    </m:examples>
+    <m:copyright>2000-2005</m:copyright>
+  </m:task>
+
+</m:manual>

Added: ant/sandbox/antlibs/gendoc/manual/mkdir.xml
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/gendoc/manual/mkdir.xml?view=auto&rev=161477
==============================================================================
--- ant/sandbox/antlibs/gendoc/manual/mkdir.xml (added)
+++ ant/sandbox/antlibs/gendoc/manual/mkdir.xml Fri Apr 15 08:00:09 2005
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+
+<?xml-stylesheet type="text/xsl" href="../manual.xsl"?>
+
+<m:manual xmlns:m="uri:org.apache.ant:manual"
+          xmlns:a="antlib:org.apache.tools.ant">
+
+  <m:task name="mkdir">
+    <!-- (OPTIONAL) A task could have a deprecated alternate name -->
+    <m:alias deprecated="true">md</m:alias>
+
+    <!-- A short description of the task, that will be used
+         in a page listing all available tasks.
+         (Equivalent to the first sentence of a Javadoc block.) -->
+
+    <!-- (OPTIONAL) A more in-depth description of the task.
+         (Equivalent to the rest sentence of a Javadoc block.) -->
+    <m:description>
+      <m:synopsis>Creates a <code>directory</code>.</m:synopsis>
+      Also non-existent parent directories are created, when necessary.
+    </m:description>
+
+    <!-- The tasks attributes -->
+    <m:attributes>
+      <!-- Possibly allow to group attributes
+      <group id="bar"/>
+        -->
+
+      <m:attribute name="dir"> <!-- groups="bar" -->
+        <m:type>java.io.File</m:type>
+        <m:required>unless foo is specified</m:required>
+        <m:description>the directory to create.</m:description>
+      </m:attribute>
+    </m:attributes>
+
+    <!-- The tasks nested-elements -->
+    <m:nested-elements/>
+
+    <m:examples>
+      <m:example>
+        <m:snippet>
+          <a:mkdir dir="${dist}" />
+        </m:snippet>
+        <m:description>
+          Creates a directory <code>${dist}</code>.
+        </m:description>
+      </m:example>
+
+      <m:example>
+        <m:snippet>
+          <a:mkdir dir="${dist}/lib" />
+        </m:snippet>
+        <m:description>
+          Creates a directory <code>${dist}/lib</code>.
+        </m:description>
+      </m:example>
+    </m:examples>
+    <m:copyright>2000-2001,2004-2005</m:copyright>
+  </m:task>
+
+</m:manual>

Added: ant/sandbox/antlibs/gendoc/whatsnew.xml
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/gendoc/whatsnew.xml?view=auto&rev=161477
==============================================================================
--- ant/sandbox/antlibs/gendoc/whatsnew.xml (added)
+++ ant/sandbox/antlibs/gendoc/whatsnew.xml Fri Apr 15 08:00:09 2005
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+
+<?xml-stylesheet type="text/xsl" href="whatsnew.xsl"?>
+
+<w:whatsnew project="Ant"
+            title="What's New in Ant"
+            xmlns:w="uri:org.apache.ant:whatsnew"
+            xmlns:ac="antlib:net.sf.antcontrib"
+            xmlns:ant="antlib:org.apache.tools.ant"
+            xmlns:bm="antlib:com.lgc.buildmagic"
+            xmlns:ds="antlib:com.lgc.decisionspace"
+            xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
+
+  <w:changes from="current Ant 1.6 CVS version" to="current CVS version">
+
+    <!-- =============================================== -->
+    <w:group name="Changes that could break older environments">
+      <w:entry>
+        Use <w:class>org.apache.log4j.Logger</w:class> instead of
+        <w:class>org.apache.log4j.Category</w:class>.  Category has been
+        deprecated for ~2 years and has been removed from the
+        <w:google>log4j</w:google> code.  Logger was introduced in log4j
+        1.2 so users of log4j 1.1 and log4j 1.0 need to upgrade to a newer
+        version of log4j. <w:bugzilla report="31951"/>.
+      </w:entry>
+    </w:group>
+
+    <!-- =============================================== -->
+    <w:group name="Fixed bugs">
+      <w:entry>
+        Translate task does not remove tokens when a key is not found.
+        It logs a verbose message.  <w:bugzilla report="13936"/>.
+      </w:entry>
+
+      <w:entry>
+        Incorrect task name with invalid "javac" task after a "presetdef.
+        <w:bugzilla reports="31389, 29499" />.
+      </w:entry>
+
+      <w:entry>
+        <ant:manifest/> was not printing warnings about invalid manifest
+        elements.  <w:bugzilla report="32190"/>.
+      </w:entry>
+
+      <w:entry>
+        <ant:replace/> got out of memory on large files (part of
+        <w:bugzilla report="32566"/>).  <ant:replace/> can now handle files
+        as long as there is enough disk space available.
+      </w:entry>
+    </w:group>
+
+    <!-- =============================================== -->
+    <w:group name="Other changes">
+      <w:entry>
+        <ant:echoproperties/> now (alphanumerically) sorts the property list
+        before echoing. <w:bugzilla report="18976"/>.
+      </w:entry>
+    </w:group>
+  </w:changes>
+
+</w:whatsnew>

Added: ant/sandbox/antlibs/gendoc/whatsnew.xsl
URL: 
http://svn.apache.org/viewcvs/ant/sandbox/antlibs/gendoc/whatsnew.xsl?view=auto&rev=161477
==============================================================================
--- ant/sandbox/antlibs/gendoc/whatsnew.xsl (added)
+++ ant/sandbox/antlibs/gendoc/whatsnew.xsl Fri Apr 15 08:00:09 2005
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+                xmlns:w="uri:org.apache.ant:whatsnew"
+                xmlns:ac="antlib:net.sf.antcontrib"
+                xmlns:ant="antlib:org.apache.tools.ant"
+                xmlns:bm="antlib:com.lgc.buildmagic"
+                xmlns:ds="antlib:com.lgc.decisionspace"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
+
+  <xsl:output method="html" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
+
+  <!-- ================================================= -->
+  <xsl:template match="/w:whatsnew">
+    <xsl:variable name="title">
+      DecisionSpace Artifacts
+      ~ <xsl:value-of select="/artifacts/@cyclename"/>
+    </xsl:variable>
+    <html>
+      <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <title><xsl:value-of select="@title"/></title>
+        <style type="text/css">
+          code     { font: 9pt CourrierNew, regular; }
+          .antlib  { background-color: #E5E5E5; }
+          .ns      { color: #6A5ACD; background-color: #F2F2F2; }
+          .tag     { color: #804040; font-weight: bold; }
+          .attr    { color: #2E8B57; font-weight: bold; }
+          .value   { color: #FF00FF; background-color: #F2F2F2; }
+        </style>
+      </head>
+      <body>
+        <h1>~ <xsl:value-of select="@title"/> ~</h1>
+        <xsl:apply-templates select="w:changes" />
+      </body>
+    </html>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="w:changes">
+    <h2>
+      From <xsl:value-of select="@from" />
+        to <xsl:value-of select="@to" />
+    </h2>
+    <xsl:apply-templates select="w:group" />
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="w:group">
+    <h3><xsl:value-of select="@name" /></h3>
+    <ul>
+      <xsl:apply-templates select="w:entry" />
+    </ul>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="w:entry">
+    <li>
+      <xsl:apply-templates />
+    </li>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="w:bugzilla">
+    <xsl:if test="@report">
+      BugZilla report 
+      <a href="http://issues.apache.org/bugzilla/[EMAIL PROTECTED]">
+        <xsl:value-of select="@report" />
+      </a>
+    </xsl:if>
+    <xsl:if test="@reports">
+      BugZilla reports
+      <xsl:call-template name="tokenize-ids">
+        <xsl:with-param name="ids" select="@reports" />
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template name="tokenize-ids">
+    <xsl:param name="ids" select="normalize-space(.)" />
+    <xsl:param name="lhs"  select="substring-before($ids, ',')" />
+    <xsl:param name="rhs"  select="substring-after($ids, ',')" />
+    <xsl:param name="id" select="normalize-space($lhs)" />
+    <xsl:param name="rest" select="normalize-space($rhs)" />
+
+    <xsl:choose>
+      <xsl:when test="not(contains($ids, ','))">
+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id={$ids}";>
+          <xsl:value-of select="$ids" />
+        </a>
+      </xsl:when>
+      <xsl:otherwise>
+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id={$id}";>
+          <xsl:value-of select="$id" />
+        </a>
+        <xsl:if test="not($rest = '')">
+          <xsl:text>, </xsl:text>
+          <xsl:call-template name="tokenize-ids">
+            <xsl:with-param name="ids" select="$rest" />
+          </xsl:call-template>
+        </xsl:if>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="w:class">
+    <code><xsl:apply-templates /></code>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="w:google">
+    <a href="http://www.google.com/search?q={text()}">
+      <xsl:value-of select="text()" />
+    </a>
+  </xsl:template>
+
+
+  <!-- =================================================
+    Handle generic XML
+    -->
+
+  <!-- ================================================= -->
+  <xsl:template match="*[starts-with(namespace-uri(), 'antlib:')]">
+    <xsl:variable name="ns" select="namespace-uri()" />
+    <xsl:call-template name="tag">
+      <xsl:with-param name="class" select="'antlib'" />
+      <!-- TODO: Name should be a link to task/type documentation -->
+      <xsl:with-param name="name">
+        <span title="{$ns}:{local-name()}">
+          <!-- Drop the namespace prefix for Ant tasks/types -->
+          <xsl:if test="not($ns = 'antlib:org.apache.tools.ant')">
+            <span class="ns">
+              <xsl:value-of select="name(namespace::*[. = $ns])" />
+          <!--<xsl:value-of select="substring-before(name(), ':')" />-->
+            </span>:<xsl:text/>
+          </xsl:if>
+          <span class="tag"><xsl:value-of select="local-name()" /></span>
+        </span>
+      </xsl:with-param>
+    </xsl:call-template>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="*[not(namespace-uri() = '')]" priority="-10">
+    <xsl:call-template name="tag" />
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="*[namespace-uri() = '']" priority="-20">
+    <xsl:copy-of select="." />
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template name="tag">
+    <xsl:param name="name" select="name()" />
+    <xsl:param name="class" select="''" />
+
+    <code>
+      <xsl:if test="$class">
+        <xsl:attribute name="class">
+          <xsl:value-of select="$class" />
+        </xsl:attribute>
+      </xsl:if>
+
+      <!-- tag name start -->
+      <xsl:text/>&lt;<xsl:copy-of select="$name" />
+
+      <!-- show its attributes, if any -->
+      <xsl:apply-templates select="@*" mode="antlib" />
+
+      <xsl:choose>
+        <xsl:when test="node()"> <!-- SOME nested elements -->
+          <xsl:text/>&gt;<xsl:apply-templates />
+
+          <!-- tag name end (until lexical end of template) -->
+          <xsl:text/>&lt;<xsl:value-of select="$name" />
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:if test="@*"> <!-- No nested elements but SOME attributes -->
+            <xsl:text> /</xsl:text>
+          </xsl:if>
+        </xsl:otherwise>
+      </xsl:choose>
+      <xsl:text>&gt;</xsl:text>
+    </code>
+  </xsl:template>
+
+  <!-- ================================================= -->
+  <xsl:template match="@*" mode="antlib">
+    <xsl:text> </xsl:text>
+    <span class="attr">
+      <xsl:value-of select="name()"/>
+    </span>=<span class="value">
+      <xsl:text/>"<xsl:value-of select="."/>"<xsl:text/>
+    </span>
+  </xsl:template>
+
+</xsl:stylesheet>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to