<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">











<html>
  <head>
    <title>Apache Anakia - </title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
    <link rel="alternate" href="http://feeds.feedburner.com/ApacheVelocitySiteNews" type="application/rss+xml" title="Apache Anakia -  News" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      </head>
  <body class="composite">
    <div id="banner">
                  <a href="../../../" id="bannerLeft">
    
                                            <img src="images/velocity_project_wide.png" alt="" />
    
            </a>
                          <span id="bannerRight">
    
            <p>Apache Anakia</p>
    
            </span>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
    
            <div class="xleft">
          
          <a href="http://www.apache.org/">Apache</a>
              &gt;
      
          <a href="../../../">Velocity</a>
              &gt;
      
          Anakia
                </div>
            <div class="xright">      <a href="../../../engine/devel/">Engine</a>
          |
          <a href="../../../tools/devel/">Tools</a>
          |
          <a href="../../devel/">Anakia</a>
          |
          <a href="../../../texen/devel/">Texen</a>
          |
          <a href="../../../docbook/">DocBook</a>
          |
          <a href="../../../dvsl/devel/">DVSL</a>
          
  

  
    
  
  
    
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
    
                   <h5>Anakia</h5>
        <ul>
              
    <li class="none">
              <a href="index.html">General</a>
        </li>
              
    <li class="none">
              <a href="../../../download.cgi">Download</a>
        </li>
          </ul>
          <h5>Developers</h5>
        <ul>
              
    <li class="none">
              <a href="license.html">License</a>
        </li>
              
    <li class="none">
              <a href="apidocs/index.html">Javadoc</a>
        </li>
              
    <li class="none">
              <a href="changes-report.html">Changes</a>
        </li>
              
    <li class="none">
              <strong>Resolved Issues</strong>
        </li>
              
    <li class="none">
              <a href="http://svn.apache.org/viewvc/velocity/anakia/trunk/">Source Code Repository</a>
        </li>
          </ul>
          <h5>Community</h5>
        <ul>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/">Wiki</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/GetInvolved">Get Involved</a>
        </li>
              
    <li class="none">
              <a href="../../../contact.html">Mailing Lists</a>
        </li>
          </ul>
          <h5>Velocity Development</h5>
        <ul>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/CodeStandards">Coding Standards</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/DocumentationGuidelines">Documentation Guidelines</a>
        </li>
              
    <li class="none">
              <a href="https://issues.apache.org/jira/browse/ANAKIA">Issues</a>
        </li>
              
    <li class="none">
              <a href="../../../who-we-are.html">Who we are</a>
        </li>
          </ul>
          <h5>Project Documentation</h5>
        <ul>
              
                
              
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-info.html">Project Information</a>
              </li>
              
                
              
      
            
      
            
      
            
      
            
      
            
            
            
      
            
      
            
      
              
            <li class="expanded">
              <a href="project-reports.html">Project Reports</a>
                <ul>
                  
    <li class="none">
              <a href="changelog.html">Change Log</a>
        </li>
                  
    <li class="none">
              <a href="changes-report.html">Changes Report</a>
        </li>
                  
    <li class="none">
              <a href="dev-activity.html">Developer Activity</a>
        </li>
                  
    <li class="none">
              <a href="file-activity.html">File Activity</a>
        </li>
                  
    <li class="none">
              <a href="apidocs/index.html">JavaDocs</a>
        </li>
                  
    <li class="none">
              <strong>Jira Report</strong>
        </li>
                  
    <li class="none">
              <a href="xref/index.html">Source Xref</a>
        </li>
                  
    <li class="none">
              <a href="taglist.html">Tag List</a>
        </li>
                  
    <li class="none">
              <a href="xref-test/index.html">Test Source Xref</a>
        </li>
              </ul>
        </li>
          </ul>
                                             
                        
                        
                        <a class="poweredBy" href="../../../" title="Apache Velocity" ><img class="poweredBy" alt="Apache Velocity" src="images/pbv90x30.png" /></a>
                                
                        
                        
                        <a class="poweredBy" href="../../../rss/news.rss" title="Velocity News Feed" ><img class="poweredBy" alt="Velocity News Feed" src="images/feed-icon-24x24.jpg" /></a>
                    

           
  

  
    
  
  
    
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <h2>Jira Report</h2><table class="bodyTable"><tr class="a"><th>Key</th><th>Summary</th><th>Status</th><th>Resolution</th><th>By</th></tr><tr class="b"><td><a href="https://issues.apache.org:443/jira/browse/ANAKIA-1
" class="externalLink">ANAKIA-1
</a></td><td>Remove Anakia and Texen from Engine distribution
</td><td>Open
</td><td>Unresolved
</td><td>Unassigned
</td></tr><tr class="a"><td><a href="https://issues.apache.org:443/jira/browse/ANAKIA-2
" class="externalLink">ANAKIA-2
</a></td><td>Add FileMapper support to Anakia to allow arbitrary file name mapping
</td><td>Open
</td><td>Unresolved
</td><td>Unassigned
</td></tr><tr class="b"><td><a href="https://issues.apache.org:443/jira/browse/ANAKIA-3
" class="externalLink">ANAKIA-3
</a></td><td>Add equivalent to
<
style
>
'
s xmlcatalog nested elements
</td><td>Open
</td><td>Unresolved
</td><td>Unassigned
</td></tr><tr class="a"><td><a href="https://issues.apache.org:443/jira/browse/ANAKIA-4
" class="externalLink">ANAKIA-4
</a></td><td>Setting xpath namespace bindings?
</td><td>Open
</td><td>Unresolved
</td><td>Unassigned
</td></tr></table>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2007
    
          The Apache Software Foundation
          
  

  
    
  
  
    
             Last Published: 2007-05-01 13:24:28
            </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
