<?xml version="1.0"?>
<!--
  Copyright 2002,2004 The Apache Software Foundation.
  
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<j:jelly xmlns:j="jelly:core">

<html>
  <body>

    <h1>Ant properties</h1>

    <p>The project name is <b><j:expr value="${project.name}"/></b>
    </p>

    <table>
      <tr>
        <th>Targets</th>
      </tr>

      <j:forEach var="iter" items="${project.targets}">
        <tr>
          <td><j:expr value="${iter.key}"/></td>
        </tr>
      </j:forEach>
    </table>

    <table>
      <tr>
        <th>Property Name</th>
        <th>Property Value</th>
      </tr>

      <j:forEach var="iter" items="${project.getProperties()}">
        <tr>
          <td><j:expr value="${iter.key}"/></td>
          <td><j:expr value="${iter.value}"/></td>
        </tr>
      </j:forEach>
    </table>

  </body>

</html>

</j:jelly>
