blob: 0ee3102532dc854a4fbe9f5147debade0011aebf [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta property="og:image" content="http://www.apache.org/images/asf_logo.gif" />
<!--
<link rel="stylesheet" type="text/css" media="screen" href="http://www.apache.org/css/style.css">
-->
<link rel="stylesheet" type="text/css" media="screen" href="https://www.apache.org/css/code.css">
<link href="/css/profile.css" rel="stylesheet" type="text/css" />
<link href="/css/xmlgraphics.css" rel="stylesheet" type="text/css" />
<link href="/css/print.css" rel="stylesheet" type="text/css" media="print" />
<script src="https://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript" src="/js/jquery.stoc.js"></script>
<script>
$(document).ready(function(){
$('ul#navigation a').each(function() {
if (this.href === window.location.href)
{ $(this). attr('id', 'forefront');}
});
$('ul#navigation a#forefront').each(function() {
});
})
$(function(){
$("#items").stoc({ search: "#content", stocTitle: "<h3>Page Contents</h3>" });
});
</script>
<style>
.highlight {color: red;}
</style>
</head>
<body>
<div id="banner">&nbsp;
</div>
<div id="navigation">
<style type="text/css">
/* The following code is added by mdx_elementid.py
It was originally lifted from http://subversion.apache.org/style/site.css */
/*
* Hide class="elementid-permalink", except when an enclosing heading
* has the :hover property.
*/
.headerlink, .elementid-permalink {
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<p><a href="/"><img alt="Apache XML Graphics Project Logo" src="/images/apache-xml-graphics.gif" title="Apache XML Graphics Project" /></a></p>
<h1 id="apache-batik">Apache Batik<a class="headerlink" href="#apache-batik" title="Permanent link">&para;</a></h1>
<ul>
<li><a href="/batik/">Overview</a></li>
<li><a href="/batik/license.html">License</a></li>
<li><a href="/batik/download.html">Download</a></li>
<li><a href="/batik/install.html">Notes</a></li>
<li><a href="/batik/status.html">Status</a></li>
<li><a href="/batik/demo-static.html">Demo</a></li>
<li><a href="/batik/faq.html">FAQs</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/XMLGRAPHICSBATIK">Batik Wiki</a></li>
<li><a href="/batik/mailing-lists.html">Mailing lists</a></li>
<li><a href="/batik/contributors.html">Contributors</a></li>
<li><a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20BATIK%20AND%20resolution%20%3D%20Unresolved%20AND%20status%20in%20%28Open%2C%20%22In%20Progress%22%2C%20Reopened%29%20ORDER%20BY%20priority%20DESC">Bug database</a></li>
<li><a href="/batik/uses.html">Projects using Batik</a></li>
<li>
<h2 id="batik-tools">Batik Tools<a class="headerlink" href="#batik-tools" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="/batik/tools/">Overview</a></li>
<li><a href="/batik/tools/browser.html">Browser</a></li>
<li><a href="/batik/tools/rasterizer.html">Rasterizer</a></li>
<li><a href="/batik/tools/font-converter.html">Font converter</a></li>
<li><a href="/batik/tools/pretty-printer.html">Pretty printer</a></li>
</ul>
</li>
<li>
<h2 id="using-batik">Using Batik<a class="headerlink" href="#using-batik" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="/batik/using/">Overview</a></li>
<li><a href="/batik/using/architecture.html">Architecture</a></li>
<li><a href="/batik/javadoc/">Javadoc APIs</a></li>
<li><a href="/batik/using/dom-api.html">DOM API</a></li>
<li><a href="/batik/using/parsers.html">Parsers</a></li>
<li>
<h3 id="scripting">Scripting<a class="headerlink" href="#scripting" title="Permanent link">&para;</a></h3>
</li>
<li><a href="/batik/using/scripting/ecmascript.html">Scripting with ECMAScript</a></li>
<li><a href="/batik/using/scripting/java.html">Scripting with Java</a></li>
<li><a href="/batik/using/scripting/security.html">Scripting with Security</a></li>
<li><a href="/batik/using/svg-generator.html">SVG generator</a></li>
<li><a href="/batik/using/swing.html">Swing components</a></li>
<li><a href="/batik/using/transcoder.html">Transcoder API</a></li>
<li><a href="/batik/using/extending.html">Extending Batik</a></li>
</ul>
</li>
<li>
<h2 id="development">Development<a class="headerlink" href="#development" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="/batik/dev/">Overview</a></li>
<li><a href="/batik/dev/branches.html">Branches</a></li>
<li><a href="/batik/dev/svg12.html">SVG 1.2 support</a></li>
<li><a href="/batik/dev/test.html">Test infrastructure</a></li>
</ul>
</li>
</ul>
<h1 id="apache-xml-graphics">Apache&trade; XML Graphics<a class="headerlink" href="#apache-xml-graphics" title="Permanent link">&para;</a></h1>
<ul>
<li>
<h3 id="project-overview">Project Overview<a class="headerlink" href="#project-overview" title="Permanent link">&para;</a></h3>
<ul>
<li><a href="/team.html">Who We Are</a></li>
<li><a href="/legal.html">Legal Stuff</a></li>
<li><a href="/charter.html">Project Charter</a></li>
<li><a href="/mail.html">Mailing Lists</a></li>
<li><a href="/repo.html">Code Repositories</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">ASF Sponsorship Program</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">ASF Thanks</a></li>
<li><a href="https://www.apache.org/licenses/">Licenses</a></li>
<li><a href="/security.html">Apache XML Graphics Security</a></li>
<li><a href="https://www.apache.org/security/">ASF Security</a></li>
</ul>
</li>
</ul>
<h1 id="sub-projects">Sub Projects<a class="headerlink" href="#sub-projects" title="Permanent link">&para;</a></h1>
<ul>
<li><a href="/fop/">Apache FOP</a></li>
<li><a href="/commons/">Apache XML Graphics Commons</a></li>
</ul>
<h2 id="search-apache-xml-graphics">Search Apache XML Graphics<a class="headerlink" href="#search-apache-xml-graphics" title="Permanent link">&para;</a></h2>
<form name="search" id="search" action="https://www.google.com/search" method="get">
<input value="xmlgraphics.apache.org" name="sitesearch" type="hidden"/>
<input type="text" name="q" id="query" />
<input type="submit" id="submit" value="Search" />
</form>
<h3 id="apachecon-n-america">ApacheCon N. America<a class="headerlink" href="#apachecon-n-america" title="Permanent link">&para;</a></h3>
<p><a title="ApacheCon North America" href="https://www.apachecon.com"><img class="apachecon_logo" alt="ApacheCon North America" src="https://www.apachecon.com/images/landingpage/apachecon-logo.png" width="200" /></a><br /><br /></p>
<ul>
<li><strong><a href="https://www.apachecon.com/">ApacheCon NA</a></strong></li>
</ul>
<p>Hope to see you there!</p>
<h3 id="apachecon-europe">ApacheCon Europe<a class="headerlink" href="#apachecon-europe" title="Permanent link">&para;</a></h3>
<p><a title="ApacheCon Europe" href="https://www.apachecon.com"><img class="apachecon_logo" alt="ApacheCon Europe" src="https://www.apachecon.com/images/landingpage/apachecon-logo.png" width="200" /></a><br /><br /></p>
<ul>
<li><strong><a href="https://www.apachecon.com/">ApacheCon Europe</a></strong></li>
</ul>
<p>Hope to see you there!</p>
<p><a title="Apache Software Foundation" href="https://www.apache.org"><img id="asf_logo_url" alt="Apache Software Foundation " src="/images/asf_logo_url.png" width="200" /></a><br /><br /></p>
<p><a title="Support the Apache Software Foundation" href="https://donate.apache.org/"><img id="asf_support_url" alt="Support the Apache Software Foundation " src="https://blogs.apache.org/foundation/mediaresource/d67ca611-a57c-462d-ac23-95063f81d175" width="200" /></a></p>
<script>
$(document).ready(function () {
$('#navigation :header').click(function () {
var text = $(this).siblings('ul');
if (text.is(':hidden')) {
text.slideDown('200');
} else {
text.slideUp('200');
}
});
if ($('#navigation :header').siblings('ul')) {
$('#navigation :header').append(' &raquo;');
}
$('#navigation > ul > li ul').hide();
var str=location.href.toLowerCase();
$("#navigation li a").each(function() {
if (str.indexOf(this.href.toLowerCase()) > -1) {
$(this).parents().slideDown('200');
$("li.highlight").removeClass("highlight");
$(this).parent().addClass("highlight");
}
});
})
</script> </div>
<div id="bannertext" style="border-bottom: 2px dashed #666666; height: 100px;">
<a href="/batik/"><img src="/images/apache-batik-logo.png" alt="The Apache FOP Project" width="256" height="96" style="float:left; margin-right: 15px;" /></a>
<h2>The Apache&trade; Batik Project</h2>
</div>
<h1>SVG 1.2 support</h1>
<h1>SVG 1.2 support</h1>
<p>This page details information atbout Batik’s implementation of features from SVG 1.2, <a href="http://www.w3.org/TR/SVGTiny12/">Tiny</a> and <a href="http://www.w3.org/TR/SVG12/">Full</a>. Note that the information on this page is based on the code in the Subversion repository trunk.</p>
<h2 id="dom3">DOM Level 3</h2>
<p>DOM Level 3 <a href="http://www.w3.org/TR/DOM-Level-3-Core/">Core</a>, <a href="http://www.w3.org/TR/DOM-Level-3-Events/">Events</a> and <a href="http://www.w3.org/TR/DOM-Level-3-XPath/">XPath</a> are all supported. These features are available regardless of whether the document has <code>version="1.1"</code> or <code>version="1.2"</code> set on the root <code>svg</code> element.</p>
<p>There are a few issues with the DOM Level 3 Core implementation:</p>
<ol>
<li>
<p>The <code>Document.compareDocumentPosition</code> method does not give the correct result when used on DTD notation or entity nodes in the document.</p>
</li>
<li>
<p><code>Node.renameNode</code> always creates a new node and replaces the old node with it. This is technically allowed, but sub-optimal.</p>
</li>
<li>
<p>XML Schema information is never used. Batik does not implement XML Schema, so any methods or attributes that would utilise or expose schema information (such as the <code>schemaTypeInfo</code> attribute on the <code>Attr</code> and <code>Element</code> interfaces) do not do so.</p>
</li>
<li>
<p><code>Document.normalizeDocument</code> ignores the <code>"entities"</code> parameter in the document’s <code>DOMConfiguration</code>.</p>
</li>
</ol>
<h3 id="dom3java">Using DOM Level 3 functionality from Java</h3>
<p>JREs before 1.5 include the DOM Level 2 interfaces and this can cause problems when trying to use the DOM Level 3 versions of these same interface files (<code>org.w3c.dom.*</code>). Though the concrete Batik DOM classes implement the DOM Level 3 functionality, you won’t be able to access those methods through the <code>org.w3c.dom</code> interfaces on these earlier JREs.</p>
<p>There are two ways to overcome this problem. The first is to install the DOM Level 3 interfaces using the <a href="https://docs.oracle.com/javase/6/docs/technotes/guides/standards/">Endorsed Standards Override Mechanism</a>. Copy the file <code>lib/xml-apis-ext.jar</code> into the endorsed standards override directory and the DOM Level 3 interfaces will be visible. You can then write code against them (for example, call <code>Document.renameNode</code> directly). However, this will mean that other people cannot run or compile your code unless they have JRE 1.5 or later, or they have also installed the <code>xml-apis-ext.jar</code> in the same way.</p>
<p>The second method, which requires less messing about with the JRE, is to cast your DOM objects to the concrete Batik DOM objects and call your DOM Level 3 methods directly on them. The Batik DOM classes are in the <code>org.apache.batik.dom</code> package. The classes named <code>Abstract*</code> implement the DOM interfaces, and also contain the DOM Level 3 methods. The advantage of this method is that for your code to compile and run in others’ environments, they need not install any jars with the endorsed standards overrides.</p>
<p>Here is an example of using the second method to get access to DOM Level 3 specific methods:</p>
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">org.apache.batik.dom.AbstractDocument</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.batik.dom.svg.SVGDOMImplementation</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.w3c.dom.DOMImplementation</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.w3c.dom.Document</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.w3c.dom.Element</span><span class="o">;</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">C</span> <span class="o">{</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">f</span><span class="o">()</span> <span class="o">{</span>
<span class="c1">// Create a new SVG document</span>
<span class="n">DOMImplementation</span> <span class="n">impl</span> <span class="o">=</span> <span class="n">SVGDOMImplementation</span><span class="o">.</span><span class="na">getDOMImplementation</span><span class="o">();</span>
<span class="n">Document</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">impl</span><span class="o">.</span><span class="na">createDocument</span><span class="o">(</span><span class="s">&quot;http://www.w3.org/2000/svg&quot;</span><span class="o">,</span> <span class="s">&quot;svg&quot;</span><span class="o">,</span> <span class="kc">null</span><span class="o">);</span>
<span class="c1">// Create a &#39;g&#39; element and append it to the root &#39;svg&#39; element</span>
<span class="n">Element</span> <span class="n">e</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="na">createElementNS</span><span class="o">(</span><span class="s">&quot;http://www.w3.org/2000/svg&quot;</span><span class="o">,</span> <span class="s">&quot;g&quot;</span><span class="o">);</span>
<span class="n">doc</span><span class="o">.</span><span class="na">getDocumentElement</span><span class="o">().</span><span class="na">appendChild</span><span class="o">(</span><span class="n">e</span><span class="o">);</span>
<span class="c1">// Cast the document object to org.apache.batik.dom.AbstractDocument,</span>
<span class="c1">// so that DOM 3 methods will be guaranteed to be visible</span>
<span class="n">AbstractDocument</span> <span class="n">document</span> <span class="o">=</span> <span class="o">(</span><span class="n">AbstractDocument</span><span class="o">)</span> <span class="n">doc</span><span class="o">;</span>
<span class="c1">// Now a DOM 3 method can be used</span>
<span class="n">document</span><span class="o">.</span><span class="na">renameNode</span><span class="o">(</span><span class="n">e</span><span class="o">,</span> <span class="s">&quot;http://www.w3.org/2000/svg&quot;</span><span class="o">,</span> <span class="s">&quot;text&quot;</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div>
<p>For cases where the DOM Level 3 versions of these interfaces contain constants that you wish to use, the constants have been copied into the Batik DOM classes. For example:</p>
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">org.apache.batik.dom.AbstractNode</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.batik.dom.svg.SVGDOMImplementation</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.w3c.dom.DOMImplementation</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.w3c.dom.Document</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.w3c.dom.Element</span><span class="o">;</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">C</span> <span class="o">{</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">f</span><span class="o">()</span> <span class="o">{</span>
<span class="c1">// Create a new SVG document</span>
<span class="n">DOMImplementation</span> <span class="n">impl</span> <span class="o">=</span> <span class="n">SVGDOMImplementation</span><span class="o">.</span><span class="na">getDOMImplementation</span><span class="o">();</span>
<span class="n">Document</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">impl</span><span class="o">.</span><span class="na">createDocument</span><span class="o">(</span><span class="s">&quot;http://www.w3.org/2000/svg&quot;</span><span class="o">,</span> <span class="s">&quot;svg&quot;</span><span class="o">,</span> <span class="kc">null</span><span class="o">);</span>
<span class="c1">// Create a &#39;g&#39; element and append it to the root &#39;svg&#39; element</span>
<span class="n">Element</span> <span class="n">svg</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="na">getDocumentElement</span><span class="o">();</span>
<span class="n">Element</span> <span class="n">e</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="na">createElementNS</span><span class="o">(</span><span class="s">&quot;http://www.w3.org/2000/svg&quot;</span><span class="o">,</span> <span class="s">&quot;g&quot;</span><span class="o">);</span>
<span class="n">svg</span><span class="o">.</span><span class="na">appendChild</span><span class="o">(</span><span class="n">e</span><span class="o">);</span>
<span class="n">AbstractNode</span> <span class="n">n1</span> <span class="o">=</span> <span class="o">(</span><span class="n">AbstractNode</span><span class="o">)</span> <span class="n">svg</span><span class="o">;</span>
<span class="n">AbstractNode</span> <span class="n">n2</span> <span class="o">=</span> <span class="o">(</span><span class="n">AbstractNode</span><span class="o">)</span> <span class="n">e</span><span class="o">;</span>
<span class="kt">int</span> <span class="n">position</span> <span class="o">=</span> <span class="n">n1</span><span class="o">.</span><span class="na">compareDocumentPosition</span><span class="o">(</span><span class="n">n2</span><span class="o">);</span>
<span class="k">if</span> <span class="o">(</span><span class="n">position</span> <span class="o">==</span> <span class="n">AbstractNode</span><span class="o">.</span><span class="na">DOCUMENT_POSITION_PRECEDING</span>
<span class="o">|</span> <span class="n">AbstractNode</span><span class="o">.</span><span class="na">DOCUMENT_POSITION_CONTAINS</span><span class="o">)</span> <span class="o">{</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;The svg element contains the g element.&quot;</span><span class="o">);</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;Something is wrong!&quot;</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div>
<p>Note that using these org.apache.batik.dom interfaces is only needed for the DOM Level 3 Core and Events interfaces. There were no earlier versions of the DOM XPath interfaces to conflict with, so these can be used directly (<code>org.w3c.dom.xpath</code>).</p>
<p>Of course, none of this matters if you are just using the DOM 3 functionality in ECMAScript, as the matter of interfaces is hidden from the scripting environment.</p>
<h2 id="sxbl">XML Binding Language for SVG (sXBL)</h2>
<p>sXBL is supported in documents with <code>version="1.2"</code>. However, the following issues exist:</p>
<ol>
<li>
<p>sXBL cannot be used for <a href="http://www.w3.org/TR/2004/WD-SVG12-20041027/binding.html#sXBL-bindings-for-svg">SVG resources</a> or <a href="http://www.w3.org/TR/2004/WD-SVG12-20041027/binding.html#sXBL-bindings-for-visual-effects">visual effects</a>.</p>
</li>
<li>
<p>The <code>traitDef</code> element is not implemented.</p>
</li>
<li>
<p>The <a href="http://www.w3.org/TR/sXBL/#shadow0">handling of CSS</a> is probably not quite correct.</p>
</li>
</ol>
<p>Two content selector languages are supported: XPath 1.0 Patterns and the drastically reduced XPath subset. XPath Patterns is the default language. To change the language used to the XPath subset, put an attribute <code>batik:selectorLanguage="XPathSubset"</code> on the <code>xbl:content</code> element or on the <code>svg</code> document element. (The <code>batik</code> extension namespace prefix should be declared with <code>xmlns:batik="http://xml.apache.org/batik/ext"</code>.)</p>
<p>Note that sXBL is likely to be dropped in favor of <a href="http://www.w3.org/TR/xbl2">XBL 2.0</a> in <a href="http://www.w3.org/TR/SVG12/">SVG 1.2 Full</a>.</p>
<h2 id="flowtext">Flowing text and graphics</h2>
<p>The <code>flowRoot</code>, <code>flowRegion</code>, <code>flowDiv</code>, <code>flowPara</code>, <code>flowSpan</code>, <code>flowRegionBreak</code> and <code>flowLine</code> elements from <a href="http://www.w3.org/TR/SVG12/">SVG 1.2 Full</a> ’s <a href="http://www.w3.org/TR/2004/WD-SVG12-20041027/flow.html">Flowing Text and Graphics</a> chapter are supported in documents with <code>version="1.2"</code>.</p>
<p>The more recent <a href="http://www.w3.org/TR/SVGTiny12/">SVG 1.2 Tiny</a> draft specifies a different syntax for (a more restricted version of) flowing text, and the full flowing text syntax is therefore likely to change.</p>
<h2 id="other">Other SVG 1.2 features</h2>
<p>The following other features from SVG 1.2 are supported:</p>
<ul>
<li>
<p>the <a href="http://www.w3.org/TR/SVGTiny12/painting.html#SolidColorElement">paint server element,</a></p>
</li>
<li>
<p>the <code>multiImage</code>, <code>subImageRef</code> and <code>subImage</code> elements for <a href="http://www.w3.org/TR/2004/WD-SVG12-20041027/media.html#multires">Alternate content based on display resolutions</a>,</p>
</li>
<li>
<p>the XML Events <a href="http://www.w3.org/TR/SVGTiny12/script.html#HandlerElement">element</a>,</p>
</li>
<li>
<p>self-contained <a href="http://www.w3.org/TR/2004/WD-SVG12-20041027/nonvisual.html#external-references">resource documents</a>,</p>
</li>
<li>
<p>the mouse <a href="http://www.w3.org/TR/2004/WD-SVG12-20041027/dom.html#wheelevent">wheel event</a> (which is likely to be superseded by a similar event developed by the W3C WebAPI WG),</p>
</li>
<li>
<p>the <a href="http://www.w3.org/TR/2004/WD-SVG12-20041027/dom.html#shapemod">ShapeChange and RenderedBBoxChange events</a> (though the <code>boundingBox</code> attribute of the RenderedBBoxChange event is not used), and</p>
</li>
<li>
<p>the <code>startMouseCapture</code> and <code>stopMouseCapture</code> methods on the <a href="http://www.w3.org/TR/2004/WD-SVG12-20041027/api.html#GlobalObject">global object</a>.</p>
</li>
</ul>
<div class="clear"></div>
<div id="footer">
<div class="copyright">
<div style="float:left; padding: 7px;">
<a title="Apache Software Foundation" href="http://www.apache.org"><img id="asf-feather-logo" alt="Apache Software Foundation" src="/images/asf_logo_url.png" width="200" /></a>
</div>
<p>
Copyright &copy; 2016 The Apache Software Foundation, Licensed under
the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
<br />
Apache, Apache XML Graphics, Apache FOP, Apache Batik, the Apache feather logo, and the
Apache XML Graphics logos are trademarks of <a href="http://www.apache.org">The Apache
Software Foundation</a>. All other marks mentioned may be trademarks or registered
trademarks of their respective owners.
<br />
</p>
</div>
</div>
</body>
</html>