You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlgraphics.apache.org by bu...@apache.org on 2012/04/15 07:46:24 UTC

svn commit: r813020 [2/8] - in /websites/staging/xmlgraphics/trunk/content: ./ batik/ batik/demo/ batik/dev/ batik/tools/ batik/using/ batik/using/scripting/

Added: websites/staging/xmlgraphics/trunk/content/batik/dev/test.html
==============================================================================
--- websites/staging/xmlgraphics/trunk/content/batik/dev/test.html (added)
+++ websites/staging/xmlgraphics/trunk/content/batik/dev/test.html Sun Apr 15 05:46:22 2012
@@ -0,0 +1,292 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <title>Test infrastructure</title>
+
+    <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="http://www.apache.org/css/code.css">
+-->
+    <link href="/css/xmlgraphics.css" rel="stylesheet" type="text/css">
+
+    </style>
+
+    
+
+    
+    
+  </head>
+
+  <body>
+	  <div id="banner">&nbsp;
+	  </div>
+
+	  <div id="navigation">
+	  <h1 id="xml-graphics">XML Graphics</h1>
+<ul>
+<li><a href="/">Overview</a></li>
+<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="http://www.apache.org/foundation/sponsorship.html">ASF Sponsorship Program</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">ASF Thanks</a></li>
+</ul>
+<h1 id="subprojects">Subprojects</h1>
+<ul>
+<li><a href="/batik/">Batik</a></li>
+<li><a href="/fop/">FOP</a></li>
+<li><a href="/commons/">Commons</a></li>
+</ul>
+<form name="search" id="search" action="http://www.google.com/search" method="get">
+  <input value="xmlgraphics.apache.org" name="sitesearch" type="hidden"/>
+  <input type="text" name="q" id="query" /><br />
+  <input type="submit" id="submit" value="Search" />
+</form>
+	  </div>
+	
+	  <div id="bannertext">
+        <a href="/"><img src="/images/apache-xml-graphics.gif" alt="The Apache XML Graphics Project" width="220" heigh="51" /></a>
+        <h1>Test infrastructure</h1>
+      </div>
+        <p><a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/batik/">Batik</a>&nbsp;&raquo&nbsp;<a href="/batik/dev/">Dev</a></p>
+      </div>
+      <div id="content" class="grid_16"><div class="section-content"><p>This document describes the Batik test infrastructure whose goals are to:</p>
+<ul>
+<li>
+<p>make it easy to detect regressions,</p>
+</li>
+<li>
+<p>make it easy to run test suites, and</p>
+</li>
+<li>
+<p>make it easy to write new tests and add them to an existing test suite.</p>
+</li>
+</ul>
+<p>The intent for the test infrastructure is that it grows along with Batik and keeps monitoring the health of the code base.</p>
+<p>While the test suites in the infrastructure will be run every day by build/test machines, they are also intended to help the commiters and developers get confident that their code modifications did not introduce regressions.</p>
+<h1 id="infrastructure">The test infrastructure</h1>
+<h2 id="high-level-interfaces-high-levelinterfaces">High-level interfaces ## {#High-level+interfaces}</h2>
+<p>The following are the high level interfaces in the infrastructure.</p>
+<dl>
+<dt><a href="../javadoc/org/apache/batik/test/Test.html">Test</a></dt>
+<dd>A <code>Test</code> is performing whatever check is needed in its <code>run</code> method, and each run produces a <code>TestReport</code> .</dd>
+<dt><a href="../javadoc/org/apache/batik/test/TestReport.html">TestReport</a></dt>
+<dd>A <code>TestReport</code> describes whether a <code>Test</code> run passed or failed and provides a description of the failure in terms of an error code (unique in the context of a given <code>Test</code> ) and a set of key/value pairs.</dd>
+<dt><a href="../javadoc/org/apache/batik/test/TestSuite.html">TestSuite</a></dt>
+<dd>A <code>TestSuite</code> is a test aggregation which can run a set of <code>Test</code> instances.</dd>
+<dt><a href="../javadoc/org/apache/batik/test/TestReportProcessor.html">TestReportProcessor</a></dt>
+<dd>A <code>TestReportProcessor</code> is used to analyze a <code>TestReport</code> . A specific implementation can choose to create graphs, send an email or write an HTML file.</dd>
+</dl>
+<h2 id="default-implementations-defaultimplementations">Default implementations ## {#Default+implementations}</h2>
+<p>The test infrastructure comes with a number of default implementations for the interfaces described above. Specifically:</p>
+<dl>
+<dt><a href="../javadoc/org/apache/batik/test/AbstractTest.html">AbstractTest</a></dt>
+<dd>This implementation of the <code>Test</code> interface is intended to make it easier to write a “safe” <code>Test</code> implementation. See the <a href="#writingNewTests">Writing new tests</a> section for a description of how to use that class.</dd>
+<dt><a href="../javadoc/org/apache/batik/test/DefaultTestReport.html">DefaultTestReport</a></dt>
+<dd>This class provides a simple implementation of the <code>TestReport</code> interface that most <code>Test</code> implementations will be able to use. See the <a href="#writingNewTests">Writing new tests</a> section for more details.</dd>
+<dt><a href="../javadoc/org/apache/batik/test/DefaultTestSuite.html">DefaultTestSuite</a></dt>
+<dd>This class provides an implementation of the <code>TestSuite</code> interface and makes it easy to aggregate <code>Test</code> instances.</dd>
+<dt><a href="../javadoc/org/apache/batik/test/SimpleTestReportProcessor.html">SimpleTestReportProcessor</a></dt>
+<dd>This class is a sample <code>TestReportProcessor</code> implementation that simply traces the content of a <code>TestReport</code> to an output stream.</dd>
+<dt><a href="../javadoc/org/apache/batik/test/TestReportMailer.html">TestReportMailer</a></dt>
+<dd>This is another implementation of the <code>TestReportProcessor</code> interface that emails a test report to a list of destination e-mail addresses.</dd>
+</dl>
+<h2 id="xml-implementations-xmlimplementations">XML implementations ## {#XML+implementations}</h2>
+<p>The test infrastructure is using XML-out (and XML-in too, see the <a href="#runningATestSuite">Running a test suite</a> section) as a favorite way to generate test reports. The <a href="../javadoc/org/apache/batik/test/XMLTestReportProcessor.html">XMLTestReportProcessor</a> implementation of the <code>TestReportProcessor</code> interface. It outputs reports in XML in a configurable directory.</p>
+<p>The <code>XMLTestReportProcessor</code> can notify an <a href="../javadoc/org/apache/batik/test/XMLReportConsumer.html">XMLReportConsumer</a> when it has created a new report. There is one implementation of that interface that can run an XSL stylesheet on the XML report (e.g., to generate an HTML report), called <a href="../javadoc/org/apache/batik/test/XSLXMLReportConsumer.html">XSLXMLReportConsumer</a> . This is used by the <code>regard</code> rule in the Batik build to produce an HTML report for the default regression test suite.</p>
+<h1 id="managingATestSuite">Managing test suites</h1>
+<p>The infrastructure is designed to make it easy to create, update and modify test suites. This section describes how to describe a set of tests to be run and how to actually run that test suite.</p>
+<h2 id="describing-a-test-suite-describingatestsuite">Describing a test suite ## {#Describing+a+test+suite}</h2>
+<p>Test suites can be described in XML (XML-in refered to earlier in this document). The general format for describing a test suite is:
+<testSuite id="testSuiteA" name="MyFavoriteTestSuite">
+  <!-- Set of tests to be run -->
+  <test id="t1" class="myFavoriteTestClassA"/>
+  <test id="t2" class="myFavoriteTestClassB"/>
+  <test id="t3" class="myFavoriteTestClassC"/>
+</testSuite>
+Note that tests can be grouped in <code>testGroup</code> elements, which can have their own <code>id</code> and <code>class</code> attributes. This is useful because it allows developers to run specific tests or test groups by specifying their IDs. In addition, because the class attribute is inherited by a <code>test</code> element from its parent, <code>testGroup</code> s allow the developers to group tests which use the same class and specify that class on the group.</p>
+<p><code>Test</code> instances listed in a test suite can have arguments passed to them, as defined by the test class. These arguments are passed in using <code>arg</code> child elements.</p>
+<p>The following example shows a test suite with two tests:
+<testSuite id="sampleTestSuite" name="SAMPLE TEST SUITE"></p>
+<p><!-- ========================================================================== -->
+  <!-- Validates that the SVGRenderingAccuracyTest class is operating as expected -->
+  <!-- ========================================================================== -->
+  <test id="renderingAccuracyTest" class="org.apache.batik.test.svg.SVGRenderingAccuracyTestValidator"/></p>
+<p><!-- ========================================================================== -->
+  <!-- Rendering regression tests                                                 -->
+  <!-- ========================================================================== -->
+  <test id="anne.svg" class="org.apache.batik.test.svg.SVGRenderingAccuracyTest">
+    <arg class="java.net.URL" 
+         value="file:samples/anne.svg"/>
+    <arg class="java.net.URL" 
+         value="file:test-references/samples/solaris/anne.png"/>
+    <property name="VariationURL" 
+           class="java.net.URL" 
+           value="file:test-references/samples/variation/anne.png"/>
+    <property name="SaveVariation" 
+           class="java.io.File" 
+           value="test-references/samples/variation-candidate/anne.png"/>
+  </test></p>
+<p></testSuite></p>
+<h2 id="runningATestSuite">Running a test suite</h2>
+<p>Yet another XML file describes which test to run and how to process the generated test reports. The general syntax is something like:
+<testRun id="regard" name="Test Run Name Here"></p>
+<p><!-- =================================== -->
+  <!-- Descriptions of processors that     -->
+  <!-- will process the results of the     -->
+  <!-- test suite                          -->
+  <!-- =================================== -->
+  <testReportProcessor class="myFavoriteReportProcessorA"/>
+  <testReportProcessor class="myFavoriteReportProcessorB"/></p>
+<p><!-- =================================== -->
+  <!-- Set of test suite to run. They will -->
+  <!-- produce TestReports.                -->
+  <!-- =================================== -->
+  <testSuite href="http://url.to.my.first.test.suite"/>
+  <testSuite href="http://url.to.my.second.test.suite"/></p>
+<p></testRun>
+ <code>testRun</code> elements can be nested. In a nutshell, you can specify a set of <code>TestReportProcessor</code> s which should process the <code>TestReport</code> generated by the <code>TestSuite</code> built from the list of <code>Test</code> instances described in the files referenced by the <code>testSuite</code> elements.</p>
+<p>For example:
+<testRun name="Batik Standard Regression Test Run"></p>
+<p><testRun name="REGARD">
+    <testReportProcessor class="org.apache.batik.test.xml.XMLTestReportProcessor"> 
+      <arg class="org.apache.batik.test.xml.XSLXMLReportConsumer">
+        <!-- Stylesheet -->
+        <arg class="java.lang.String" value="file:test-resources/org/apache/batik/test/svg/HTMLReport.xsl"/>
+        <!-- Ouput Directory -->
+        <arg class="java.lang.String" value="test-reports/html"/>
+        <!-- Output file prefix -->
+        <arg class="java.lang.String" value="RegardResult"/>
+        <!-- Output file suffix -->
+        <arg class="java.lang.String" value=".html"/>
+      </arg>
+    </testReportProcessor></p>
+<div class="codehilite"><pre><span class="o">&lt;</span><span class="n">testSuite</span> <span class="n">href</span><span class="o">=</span><span class="s">&quot;file:test-resources/org/apache/batik/test/samplesRendering.xml&quot;</span><span class="o">/&gt;</span> 
+<span class="o">&lt;</span><span class="n">testSuite</span> <span class="n">href</span><span class="o">=</span><span class="s">&quot;file:test-resources/org/apache/batik/svggen/regsvggen.xml&quot;</span><span class="o">/&gt;</span>
+<span class="o">&lt;</span><span class="n">testSuite</span> <span class="n">href</span><span class="o">=</span><span class="s">&quot;file:test-resources/org/apache/batik/test/unitTesting.xml&quot;</span><span class="o">/&gt;</span>
+</pre></div>
+
+
+<p></testRun></p>
+<p></testRun>
+There is a rule in Batik's <code>build.xml</code> file to run a test suite defined in an XML file as the one above. At the command line, type the following, for Windows:
+build runtestsuite path/to/my/newly/created/testSuite.xml
+and for Unix:
+build.sh runtestsuite path/to/my/newly/created/testSuite.xml
+In addition, the <code>regard</code> rule runs a specific set of tests by default, so that you do not need to pass any <em>testRun</em> file argument.</p>
+<p><strong> <code>regard</code> is the project’s safeguard against regressions</strong> .</p>
+<h1 id="regard">regard: the Batik regression test suite</h1>
+<p>The regard test suite contains all the regression tests for the Batik project. The <code>regard</code> tool is a specific test suite description, <code>regard.xml</code> (which you can find in the <code>test-resources/org/apache/batik/test</code> directory). That file contains a set of test suite files which sould be run.</p>
+<p>The following describes how to use the regard tool and some of the most important tests in the regard test suite.</p>
+<h2 id="running-regard-runningregard">Running regard ## {#Running+regard}</h2>
+<p>The regard tool lets you run either all the tests or any specific test you want in the test suite. To run all the tests in the regard test suite, type the following at the command line, for Windows:
+build regard
+and for Unix:
+build.sh regard
+To run a specific test in the test suite, type the qualified test ID or any substring of that ID:
+build.sh regard id-list
+For example:
+build.sh regard unitTesting.ts batikFX.svg
+will run all the tests with an ID containing <code>unitTesting.ts</code> (i.e., all the test selection unit testing, see <code>test-resources/org/apache/batik/gvt/unitTesting.xml</code> ) and the accuracy rendering test on <code>batikFX.svg</code> (because it is the only test with <code>batikFX.svg</code> in its ID).</p>
+<h2 id="rendering-accuracy-tests-renderingaccuracytests">Rendering accuracy tests ## {#Rendering+accuracy+tests}</h2>
+<p>There is a <code>Test</code> implementation, <a href="../javadoc/org/apache/batik/test/SVGRenderingAccuracyTest.html">SVGRenderingAccuracyTest</a> , which checks that Batik’s rendering of an SVG document stays accurate. It compares reference images with the rendering Batik produces and reports any discrepency.</p>
+<p>An <code>SVGRenderingAccuracyTest</code> ’s constructor configuration is made of:</p>
+<ul>
+<li>
+<p>the URL to the SVG it should render, and</p>
+</li>
+<li>
+<p>the URL to a reference PNG file.</p>
+</li>
+</ul>
+<p>The default behavior for the test is to render the SVG into a PNG file and compare with the reference image. If there is no difference, the test passes. Otherwise, it fails.</p>
+<p>In addition to this default behavior, the <code>SVGRenderingAccuracyTest</code> can take an optional configuration parameter, an image URL defined as an “accepted” variation around the reference image. If such a variation image is specified, then the test will pass if:</p>
+<ul>
+<li>
+<p>the rasterized SVG is equal to the reference image, or</p>
+</li>
+<li>
+<p>the difference between the rasterized SVG and the reference image is exactly the same as the accepted variation image.</p>
+</li>
+</ul>
+<p>Finally, to ease the process of creating “accepted” variation images, <code>SVGRenderingAccuracyTest</code> can take an optional file name (called <code>saveVariation</code> ) describing where the variation between the rasterized SVG and the reference image will be stored in case the rasterized SVG is different from the reference image and the difference is not equal to the variation image, if any was defined. That way, it becomes possible to run a test, and if that test fails, the developer can review the <code>saveVariation</code> image and decide whether it is an acceptable variation or not and use it in subsequent test run as the “accepted” variation image, which will allow the test to pass if that exact same variation remains constant.</p>
+<h2 id="day-to-day-use-of-regard-daytodayuseofregard">Day to day use of regard ## {#Day+to+day+use+of+regard}</h2>
+<h3 id="initial-set-up-initialsetup">Initial set up ### {#Initial+set+up}</h3>
+<p>To set up the test environment the first time, you need to:</p>
+<ul>
+<li>
+<p>check out the latest version of the code, including the <code>test-</code> * directories (sources, resources and references) and the <code>build.xml</code> file, and</p>
+</li>
+<li>
+<p>run the regard test suite once:build regard</p>
+</li>
+</ul>
+<p>This will generate an HTML test report ( <code>report.html</code> ) in the<tt>test-reports/ <em>yyyy</em> . <em>mm</em> . <em>dd</em> - <em>HHhMMmSSs</em> /html</tt>directory. Depending on how much different text rendering is between your work environment and the environment used to create the reference images, you will get more or less test that will fail, because of differences in the way text is rendered on various platforms and because of fonts not being available on some platforms. For example, a running the test on a Windows 2000 laptop against images generated on the Solaris platform caused 16 tests out of 71 to fail.</p>
+<p>Review the HTML report to make sure that the differences are really due to text variations. This will usually be the case and you can make sure by clicking on the diff images contained in the report to see them at full scale. You can you can then turn the “candidate” variations generated by the test into “accepted” variations by moving files from one directory to another:
+mv test-references/samples/candidate-variations/<em>.png test-references/samples/accepted-variations/</em>.png
+mv test-references/samples/tests/candidate-variations/<em>.png test-references/samples/tests/accepted-variations/</em>.png
+You can now run the test again:
+build regard
+Check the newly generated HTML report in the <code>test-reports/html</code> directory: there should no longer be any test failure.</p>
+<h3 id="daily-usage-dailyusage">Daily usage ### {#Daily+usage}</h3>
+<p>Once the intial set up has been done, you can use regard by simply updating your SVN copy, including the test-references. If no change occurs, your test will keep passing with your reference images. If a test fails (e.g., if someone checks in a new reference image from a platform different than the one you are using, you will have to check if it is because of system specific reasons or if there is a bigger problem.</p>
+<h2 id="svg-generator-tests-svggeneratortests">SVG generator tests ## {#SVG+generator+tests}</h2>
+<p>Regard contains over 100 tests for checking regressions on the SVG generator. If you use <code>svggen</code> as an argument to regard, all the SVG generator tests will be run (because <code>regard.xml</code> points to <code>test-resources/org/apache/batik/svggen/regsvggen.xml</code> , which is a test suite description for the SVG generator and that file’s root <code>testSuite</code> element has the “svggen” ID).</p>
+<h1 id="writingNewTests">Writing new tests</h1>
+<p>Writing a new test involves either configuring a new test or writing a new <code>Test</code> class. In both cases, you will need to add an entry to a test suite’s XML description. This section uses two test suites as an example: the “regard” test suite to show how to configure a new test and the “unitTests” test suite to show how to add a new <code>Test</code> implementation.</p>
+<h2 id="adding-a-new-test-configuration-addinganewtestconfiguration">Adding a new test configuration ## {#Adding+a+new+test+configuration}</h2>
+<p>Imagine that you add a cool new test case to the <code>samples</code> directory, such as <code>linking-viewBox.svg</code> . In order to check for regressions on that file you can add the following entry:
+  <test id="anne.svg" class="org.apache.batik.test.svg.SVGRenderingAccuracyTest">
+    <arg class="java.net.URL" 
+        value="file:samples/tests/linkingViewBox.svg"/>
+    <arg class="java.net.URL" 
+         value="file:test-references/samples/tests/solaris/linkingViewBox.png"/>
+    <property name="VariationURL" 
+              class="java.net.URL" 
+              value="file:test-references/samples/tests/variation/linkingViewBox.png"/>
+    <property name="SaveVariation" 
+              class="java.io.File" 
+              value="test-references/samples/tests/variation-candidate/linkingViewBox.png"/>
+  </test>
+to the <code>test-resources/org/apache/batik/test/samplesRendering.xml</code> test suite description, the description of the regard test suite. If you have access to the build machine where the reference images are typically generated, you can check 0n the reference image in <code>test-references/samples/tests</code> . Otherwise (and this is OK), you can let the test fail the first time it is run on the build/test machine and that will be a reminder for whoever is responsible for that machine that a valid reference image should be checked in.</p>
+<h2 id="writing-a-new-test-writinganewtest">Writing a new test ## {#Writing+a+new+test}</h2>
+<p>Imagine you want to validate some aspect of your code, and let's take the bridge error handling as an example. You could create a new class in the <code>test-sources</code> directory, in <code>test-sources/org/apache/batik/bridge</code> in our example, and let's call it <code>ErrorHandlingTest</code> . To simplify the implementation of the <code>Test</code> interface, you can choose to derive from the <code>AbstractTest</code> class and generate a <code>DefaultTestReport</code> .</p>
+<p>While writing the <code>Test</code> you may want to use your own XML file with just your test, for example:
+  <testReportProcessor class="org.apache.batik.test.SimpleTestReportProcessor"/> </p>
+<p><test class="org.apache.batik.bridge.ErrorHandlingTest">
+    <!-- Expected error code -->
+    <arg class="java.lang.String" value="expected.error.code"/>
+    <!-- Input SVG that this test manipulates to generate error conditions -->
+    <arg class="java.net.URL" value="file:test-resources/org/apache/batik/bridge/ErrorHandlingBase.svg"/>
+    <!-- Id of the element to test -->
+    <arg class="java.lang.String value="rectangle6"/>
+    <!-- Attribute to test -->
+    <arg class="java.lang.String value="x"/>
+    <!-- Value to test on the attribute -->
+    <arg class="java.lang.String value="abcd"/>
+  </test>
+This is just an example and does not pretend to be the right way to go about implementing or specifying this specific type of test. Once done with tuning the test, one or multiple configurations for the test can be added to the relevant test suite’s XML description. In some cases, it will be interesting to create a separate test suite.</p></div></div>
+      <div class="clear"></div>
+
+	  <div id="footer">
+		<a alt="Apache Software Foundation" href="http://www.apache.org">
+		  <img id="asf-logo" alt="Apache Software Foundation" src="/images/feather-small.gif"/ width="100">
+		</a>
+		<div class="copyright">
+		  <p>
+			Copyright &copy; 2011 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, 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>

Added: websites/staging/xmlgraphics/trunk/content/batik/faq.html
==============================================================================
--- websites/staging/xmlgraphics/trunk/content/batik/faq.html (added)
+++ websites/staging/xmlgraphics/trunk/content/batik/faq.html Sun Apr 15 05:46:22 2012
@@ -0,0 +1,243 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <title>Frequently Asked Questions</title>
+
+    <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="http://www.apache.org/css/code.css">
+-->
+    <link href="/css/xmlgraphics.css" rel="stylesheet" type="text/css">
+
+    </style>
+
+    
+
+    
+    
+  </head>
+
+  <body>
+	  <div id="banner">&nbsp;
+	  </div>
+
+	  <div id="navigation">
+	  <h1 id="xml-graphics">XML Graphics</h1>
+<ul>
+<li><a href="/">Overview</a></li>
+<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="http://www.apache.org/foundation/sponsorship.html">ASF Sponsorship Program</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">ASF Thanks</a></li>
+</ul>
+<h1 id="subprojects">Subprojects</h1>
+<ul>
+<li><a href="/batik/">Batik</a></li>
+<li><a href="/fop/">FOP</a></li>
+<li><a href="/commons/">Commons</a></li>
+</ul>
+<form name="search" id="search" action="http://www.google.com/search" method="get">
+  <input value="xmlgraphics.apache.org" name="sitesearch" type="hidden"/>
+  <input type="text" name="q" id="query" /><br />
+  <input type="submit" id="submit" value="Search" />
+</form>
+	  </div>
+	
+	  <div id="bannertext">
+        <a href="/"><img src="/images/apache-xml-graphics.gif" alt="The Apache XML Graphics Project" width="220" heigh="51" /></a>
+        <h1>Frequently Asked Questions</h1>
+      </div>
+        <p><a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/batik/">Batik</a></p>
+      </div>
+      <div id="content" class="grid_16"><div class="section-content"><h1 id="Questions">Questions</h1>
+<h2 id="part-general">1. General questions</h2>
+<h3 id="what-is-batik">1.1. What is Batik?</h3>
+<p>Batik is a Java-based toolkit for applications or applets that want to use images in the <a href="http://www.w3.org/TR/SVG11/">Scalable Vector Graphics (SVG)</a> format for various purposes, such as display, generation or manipulation.</p>
+<h3 id="what-is-svg">1.2. What is SVG?</h3>
+<p><a href="http://www.w3.org/TR/SVG11/">SVG</a> (Scalable Vector Graphics) is an open-standard language for describing two-dimensional (2D) graphics in XML. It is a Recommendation from the <a href="http://www.w3.org/">W3C</a> . SVG lets you describe rich images with features such as gradients, transparency, filter effects and animation.</p>
+<p>SVG has three types of graphic objects: shapes (e.g., paths consisting of straight lines and curves), images and text. Graphical objects can be grouped, styled, transformed and composited (e.g., drawn with transparency). SVG has a large set of static features which includes nested transformations, clipping paths, masking and filter effects.</p>
+<p>In addition, SVG images can be dynamic and interactive. A rich set of event handlers such as for mouse movement and clicks can be assigned to any SVG graphical object. These handlers can invoke scripts, which, in response to an event, can dynamically modify the SVG graphic through the SVG Document Object Model (DOM) API, allowing, for example scripts to change the color or location of graphical elements.</p>
+<p>SVG graphical elements can be animated through scripting. Alternatively, animation sequences can be expressed directly in XML because SVG leverages the <a href="http://www.w3.org/TR/smil-animation">SMIL Animation</a> specification for multimedia, another <a href="http://www.w3.org/">W3C</a> specification.</p>
+<h3 id="what-can-i-do">1.3. What can I do with Batik?</h3>
+<p>Batik contains several <a href="using/architecture.html">core modules</a> which can be used independently or jointly to <strong>generate SVG content</strong> (see the <a href="using/svg-generator.html">SVG Generator</a> and <a href="using/dom-api.html">SVG DOM</a> implementation documentation) <strong>view SVG content</strong> (see the <a href="using/swing.html">JSVGCanvas</a> ) or <strong>convert to and from the SVG format</strong> (see the <a href="using/transcoder.html">SVG Transcoder</a> page).</p>
+<p>In addition, Batik contains <a href="using/architecture.html#lowLevelComponents">low level modules</a> , such as an object-oriented Graphic Vector Toolkit (GVT), a set of low level parsers specific to the SVG syntax and a set of <a href="using/extending.html">extensions</a> to the Java 2D API (such as sophisticated fill types and filter effects).</p>
+<p>Finally, Batik comes with <a href="tools/">packaged applications</a> to help developers get familiar with the code and be quickly able to use the various modules: Squiggle, an <a href="tools/browser.html">SVG browser</a> (in the <code>org.apache.batik.apps.svgbrowser</code> package) an <a href="tools/rasterizer.html">SVG rasterizer</a> (in the <code>org.apache.batik.apps.rasterizer</code> package), a <a href="tools/font-converter.html">Font converter</a> (in the <code>org.apache.batik.apps.ttf2svg package</code> ) and an <a href="tools/pretty-printer.html">SVG pretty printer</a> (in the <code>org.apache.batik.apps.svgpp package</code> ).</p>
+<p>Squiggle, the <a href="tools/browser.html">SVG browser</a> can display SVG documents and lets the user zoom, pan and rotate any SVG document, view the SVG source, link between SVG documents, view a tree representation of the SVG DOM and more. One important component of the SVG viewer is the <code>org.apache.batik.swing.JSVGCanvas</code> component, which can be plugged in to any Java application or applet to provide SVG viewing capability.</p>
+<p>The <a href="tools/rasterizer.html">SVG rasterizer</a> lets the user convert SVG files to raster formats such as JPEG, PNG or TIFF . It contains an extensible mechanism so that arbitrary raster formats can be added. For example, the rasterizer lets you create one SVG file with a special effect (e.g., shadows, gradients, etc.), turn it into a PNG image, then modify the SVG source (e.g., modify a piece of text or a color), and generate another PNG image from it. This way, you can easily generate a series of images sharing a common theme or look and feel to post on a web site. (Note that the rasterizer can also be used on a web server to do this conversion automatically).</p>
+<p>The <a href="tools/font-converter.html">SVG Font Converter</a> lets the user easily create an <a href="http://www.w3.org/TR/SVG11/fonts.html">SVG Font</a> for a set of characters from a TrueType Font file. That SVG Font definition can be embedded in a document using the characters. This allows users to create SVG documents that are self contained and do not rely on system fonts, and guarantees that the SVG file will be displayed exactly as it was authored on all platforms.</p>
+<p>The <a href="tools/pretty-printer.html">SVG Pretty Printer</a> is a convenience tool to pretty print an SVG document, which means that you can reformat any existing SVG document to produce a nicely formatted and highly legible version.</p>
+<p>These applications show that Batik can be used client side (the browser can be used on any client machine) and server side (the rasterizer can be used to serve SVG images to client machines that do not have SVG support).</p>
+<h3 id="why-at-apache">1.4. Why do we have such a project at Apache?</h3>
+<p>The <a href="http://xmlgraphics.apache.org/charter.html">mission of the Apache XML Graphics Project</a> is to promote the use of XML-based graphics by “providing robust, full-featured, commercial-quality, and freely available software packages for the conversion of XML to graphical output and for related components”. Batik as an open source implementation of a key format for today’s and tomorrow’s web fits well in this mission.</p>
+<h3 id="how-does-batik-relate">1.5. How does Batik relate to other Apache projects?</h3>
+<p>Batik is used in <a href="http://cocoon.apache.org/">Cocoon</a> for server side rasterization of SVG images. In addition, the Batik is used in the <a href="http://xmlgraphics.apache.org/fop/">FOP</a> project to convert SVG images to PDF format.</p>
+<h3 id="how-did-it-start">1.6. How did it start?</h3>
+<p>Batik started out because several teams doing SVG related projects decided to join efforts with the idea that the whole will be greater than the sum of the parts. The following companies or institutions are part of the team that contributed and/or created the initial Batik project, during the fall of 2000:</p>
+<ul>
+<li>
+<p><a href="http://www.csiro.au/">CSIRO</a> </p>
+</li>
+<li>
+<p><a href="http://www.ilog.com/">ILOG</a> </p>
+</li>
+<li>
+<p><a href="http://koala.ilog.fr/">Koala Team</a> </p>
+</li>
+<li>
+<p><a href="http://www.kodak.com/">Eastman Kodak Company</a> </p>
+</li>
+<li>
+<p><a href="http://www.sun.com/">Sun Microsystems, Inc.</a> </p>
+</li>
+</ul>
+<p>In addition, the Batik project is supported by <a href="http://www.ibm.com/">IBM</a> .</p>
+<p>We encourage anyone to participate. As with all ASF projects, all efforts are volunteer-based. We are looking for individuals to work with us on fulfilling our goals for Batik in the spirit of collaborative open-source software development.</p>
+<h3 id="what-is-next">1.7. Where is Batik going? What is next?</h3>
+<p>The SVG implementation is not complete (see the current <a href="status.html">status</a> ), and there is more work to do to achieve a fully functional viewer.</p>
+<p>Batik 1.1 supports all static SVG features, linking and a limited support for scripting, and the 1.5 release completed support for scripting and dynamic documents. With Batik 1.6 came many improvements to the implementation of SVG DOM functions, bug fixes, performance improvements, and the beginning of some SVG 1.2 support. Declarative animation and some SVG 1.2 features were introduced in Batik 1.7beta1. The 1.7 release brought mostly bug fixes. Completion of remaining SVG 1.1 functionality and the addition of Further SVG 1.2 functionality should be supported in the 2.0 release.</p>
+<p>The type of applications (e.g., transcoding applications) that can or will be added to Batik depends on contributions and feedback.</p>
+<h3 id="how-can-i-create-svg">1.8. How can I create and author SVG content?</h3>
+<p>Well, you can always use a plain text editor such as vi or xemacs, but there are many graphic authoring packages that can export SVG documents and that will let you author SVG content visually.</p>
+<p>You can get a list of tools exporting SVG from the <a href="http://www.w3.org/Graphics/SVG/SVG-Implementations#edit">SVG implementation</a> section of the SVG Home page on the W3C web site. You can also imagine building a tool on top of Batik: feel free to contribute!</p>
+<p>Authoring is one way of creating SVG content, and graphic authoring packages are useful for that purpose. However, there are many types of graphics which can be generated, such as stock quotes, statistical data, etc. For these types of graphics, there are many ways to generate SVG content. For example, if your data (say stock information) is contained in an XML document, you could use XSLT to transform your XML data into SVG. If your data comes from a database and you retrieve that data in a servlet on a Web server (e.g., using JDBC), you could use the Java binding for the DOM API to generate an SVG document from the database data. You could also use Batik’s SVG generator and use the Java 2D API to generate that graphic.</p>
+<p>The following URLs will be useful to learn more about each of these solutions:</p>
+<ul>
+<li>
+<p><a href="http://xml.apache.org/xalan-j/index.html">Xalan for XSLT</a> </p>
+</li>
+<li>
+<p><a href="http://xml.apache.org/xerces-j/index.html">Xerces</a> and <a href="http://java.sun.com/xml/download.html">Crimson</a> for the DOM API</p>
+</li>
+<li>
+<p><a href="using/svg-generator.html">SVG Generator</a> </p>
+</li>
+</ul>
+<h3 id="what-other-svg-products-exist">1.9. What other SVG products are out there?</h3>
+<p>There are many companies supporting SVG and you will find a list of available implementations on the <a href="http://www.w3.org/Graphics/SVG/SVG-Implementations">W3C’s SVG implementation page</a> .</p>
+<h3 id="svg-spec">1.10. Where can I find the SVG specification?</h3>
+<p>The <a href="http://www.w3.org/TR/SVG11/">SVG specification</a> is available from the <a href="http://www.w3.org/">W3C web site</a> .</p>
+<h3 id="how-much-does-batik-implement">1.11. How much of SVG does Batik implement?</h3>
+<p>The <a href="status.html">status page</a> shows how much of the SVG specification Batik implements by showing which of the tests in the <a href="status.html#beSuiteStatus">SVG Basic Effectivity test suite</a> Batik successfully passes.</p>
+<h3 id="benefits-of-svg-being-xml">1.12. What are the benefits of SVG being an XML grammar?</h3>
+<p>Being an XML grammar means SVG can leverage work done around XML, and SVG actually leverages other grammars such as <a href="http://www.w3.org/TR/2001/REC-xlink-20010627/">XLink</a> , for linking and <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#AnimationFramework">SMIL</a> for the animation.</p>
+<p>Beyond the use and mix with other XML syntaxes, being an XML grammar lets SVG benefit from the plethora of XML tools that make it so easy to manipulate, generate, search and edit XML files.</p>
+<h3 id="what-is-in-a-name">1.13. Where does the name come from?</h3>
+<p>Batik is a highly evolved art tradition that developed in Java (one of the islands comprising what is now called Indonesia). Batik is generally thought of as the quintessentially Indonesian textile. Motifs of flowers, twining plants, leaves, buds, birds, butterflies, fish, insects and geometric forms are rich in symbolic association and variety; there are about three thousand recorded batik patterns.</p>
+<p>We think that Batik gracefully evokes Java, graphics and high-quality, terms that constitute the core of the toolkit.</p>
+<p><a href="http://www.expat.or.id/info/batik.html">This page</a> shows examples of what Batik textures look like.</p>
+<h2 id="batik-help">2. Getting started with Apache Batik/SVG</h2>
+<h3 id="system-requirements">2.1. What are the system requirements to run Batik?</h3>
+<p>Batik is written in the Java language and requires a version 1.4 implementation at this time.</p>
+<h3 id="how-to-install">2.2. How do I install Batik?</h3>
+<p>You will need a <a href="http://java.sun.com/">JRE/JDK</a> version 1.4 or above to run Batik.</p>
+<p>To install Batik you need to <a href="download.cgi">download</a> the binary or source distribution and unzip it on your computer.</p>
+<p>You can have a look at the <a href="install.html">installation instructions</a> for more information.</p>
+<h3 id="how-can-i-see-demo">2.3. How can I see a demo?</h3>
+<p>You can see an online demonstration of Squiggle the SVG browser on the <a href="demo.html">demo page</a> . Alternatively, you can <a href="download.cgi">download</a> Batik or see <a href="tools/browser.html">screenshots</a> of the Batik SVG viewer, images created from the <a href="tools/rasterizer.html">rasterizer</a> and an <a href="using/svg-generator.html">example</a> of how to use the <code>SVGGraphics2D</code> generator.</p>
+<h3 id="what-scripting-languages-batik-supports">2.4. What scripting languages can I use in my SVG files?</h3>
+<p>A limited support of scripting in SVG files is provided with the current version of Batik (script are executed but dynamic update is not supported).</p>
+<p>Batik can recognize the following scripting languages:</p>
+<ul>
+<li>
+<p>ECMAScript thanks to the <a href="http://www.mozilla.org/rhino/">Mozilla Rhino</a> JavaScript engine included in the distribution,</p>
+</li>
+<li>
+<p>Python for which you need to download the <a href="http://www.jython.org">Jython</a> engine, and</p>
+</li>
+<li>
+<p>Tcl for which you need to download the <a href="http://dev.scriptics.com/software/java/">Jacl</a> engine.</p>
+</li>
+</ul>
+<p>To get more information on how to install optional scripting languages you can have a look at the <a href="install.html">installation instructions</a> .</p>
+<h2 id="batik-error">3. Troubleshooting Apache Batik</h2>
+<h3 id="NoSuchMethodException">3.1. When I try to run Batik it results in a NoSuchMethodException. What is the problem?</h3>
+<p>There is certainly something wrong with your classpath. Clear your <code>CLASSPATH</code> environment variable and be sure to remove all the libraries which use the W3C’s DOM bindings from <code>jre/lib/ext</code> before running any of the Batik’s applications.</p>
+<h3 id="display-does-not-update">3.2. When I change the document in Java it doesn’t update the display, even if I call repaint?</h3>
+<p>There are two common causes for this. The first is that the <a href="javadoc/org/apache/batik/swing/JSVGCanvas.html">JSVGCanvas</a> doesn’t know it’s a dynamic document. Normally Batik detects this by looking for script elements but when you modify the document from Java it can’t tell. So call
+myJSVGCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
+before loading the document (with <code>setURI</code> , <code>setDocument</code> , <code>setSVGDocument</code> , etc.).</p>
+<p>The second common reason is that the changes aren’t made in the <a href="javadoc/org/apache/batik/bridge/UpdateManager.html">UpdateManager</a> ’s thread. You can run code in the <code>UpdateManager</code> ’s thread with the following:
+UpdateManager um = JSVGCanvas.getUpdateManager();
+um.getUpdateRunnableQueue().invokeLater(Runnable);
+ <strong>NOTE:</strong> The update manager only becomes available after the first rendering completes. You can be notified when this happens by registering a <code>GVTTreeRendererListener</code> .</p>
+<h3 id="must-mouseover-to-change">3.3. When I change the document in Java it only updates if I move the mouse over the canvas?</h3>
+<p>The most common causes for this, is that the changes are not made in the <code>UpdateManager</code> ’s thread. See previous FAQ for example code to run code in the Update Manager’s thread. Moving the mouse works because it delivers the mouse move events in the update thread, and after a runnable completes in the <code>UpdateManager</code> ’s thread it checks if the canvas needs repainting.</p>
+<h3 id="changes-are-not-rendered">3.4. When I create new SVG elements or modify some SVG attributes through the DOM API, from ECMAScript, nothing happens, the changes are not rendered. Why not?</h3>
+<p>A common problem is that script contain the wrong DOM calls to create elements or modify attributes.</p>
+<p>SVG elements need to be created in the SVG namespace. For example, to create a <code>rect</code> element, you should use
+document.createElementNS(svgNS, "rect");
+(where <code>svgNS</code> is equal to <code>"http://www.w3.org/2000/svg"</code> ), which appropriately creates the <code>rect</code> element in the SVG namespace. A call to
+document.createElement("rect")
+creates an element with the name <code>rect</code> but which does not belong to the SVG namespace. As such, it is ignored by Batik.</p>
+<p>Most SVG attributes belong to what is called the “per element type partition namespace” (see the <a href="http://www.w3.org/TR/REC-xml-names">Namespaces in XML</a> specification). The appropriate way to set attributes on an SVG element is a call to <code>setAttributeNS</code> with a namespace value of <code>null</code> , for example:
+elt.setAttributeNS(null, "width", "40");
+In the Batik SVG DOM implementation, you can also use a call to <code>setAttribute</code> and you can write
+elt.setAttribute("width", "40")
+However, it is important to know that some implementations make a difference between <code>setAttribute(x, y)</code> and <code>setAttributeNS(null, x, y)</code> , so it is goo practice to use <code>setAttributeNS</code> which is the only guaranteed interoperable way of setting attributes in a namespace aware DOM implementation.</p>
+<p>Finally, for attributes which belong to a specific namespace, like the the <code>href</code> attribute on the <code>image</code> element, you have to use the <code>setAttributeNS</code> method with the XLink namespace. For example, assuming <code>img</code> references an <code>image</code> DOM <code>Element</code> , you can modify the href as follows:
+img.setAttributeNS(xlinkNS, "xlink:href", "myImage.jpg");
+where <code>xlinkNS</code> is equal to <code>"http://www.w3.org/1999/xlink"</code> .</p>
+<p>For more information on common authoring pitfalls, see Jonathan Watt’s <a href="http://jwatt.org/svg/authoring/">SVG Authoring Guidelines</a> .</p>
+<h3 id="null-updatemanager">3.5. When I get the UpdateManager from the canvas sometimes it is null, why?</h3>
+<p>The <code>JSVGCanvas</code> is highly asynchronous so when you call <code>setURI</code> , <code>setDocument</code> or <code>setSVGDocument</code> they return essentially immediately. Behind the scenes, the canvas creates the rendering tree and does a first rendering after dispatching the document <code>SVGLoad</code> event. Only after this first rendering does the <code>UpdateManger</code> become available.</p>
+<h3 id="why-updatemanager">3.6. Why do I have to go through the UpdateManager to run my code? Can’t you just synchronize the DOM?</h3>
+<p>It would be possible to synchronize individual calls to the DOM, however in general this is almost useless for the way DOM works. For example creating a single rectangle element takes approximately 6 individual DOM calls. So higher level synchronization is needed.</p>
+<p>The use of a <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runnable.html">Runnable</a> is a common way of accomplishing synchronization for a block of code. This is essentially the approach that Swing takes (all Swing modification should take place in the Swing thread). It was considered to use the Swing event thread, but this would lock the user interface while scripts were working.</p>
+<h3 id="extension-tags-work-with-source-not-binary">3.7. I can use the Batik extension tags with the source distribution but not with the binary distribution. What am I missing?</h3>
+<p>When running from the source distribution you automatically get the service provider entries for the Batik extension elements (such as <code>regularPolygon</code> and <code>star</code> ). We chose not to include these by default in the binary distribution for the Batik applications.</p>
+<p>There is a subdirectory called <code>extensions</code> that has jar files that enable the extended elements from Batik.</p>
+<h3 id="red-circles">3.8. Why do I get red circles when I view the samples/extensions files?</h3>
+<p>You are using the binary distribution. This distribution does not include support for our example extensions (they are just examples and other people can do more sophisticated things).</p>
+<p>If you want to view these examples you need to use the extension enabled versions of the applications in the <code>extensions</code> subdirectory.</p>
+<h3 id="dom-modifications-do-not-display">3.9. I am modifying the DOM after displaying it in the JSVGCanvas, but my changes aren’t shown (even if I call repaint).</h3>
+<p>For efficiency, if Batik loads a static document it doesn’t set up any dynamic support. Batik normally decides whether a document is dynamic by checking if it contains any <code>script</code> elements or event handler attributes. However, if your Java application is modifying the DOM directly there may be no script elements. In this case you need to tell Batik to set up dynamic support regardless.</p>
+<p>You can inform the <code>JSVGCanvas</code> that a document should be handled dynamically by calling the <code>setDocumentState</code> method, just before loading the document:
+JSVGCanvas myCanvas = ...;
+myCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
+myCanvas.setURI("myFile.svg");</p>
+<h3 id="batik-fails-with-fop-on-org.w3c.xxx">3.10. I am trying to use Batik and FOP together but Batik does not work and fails on the org.w3c.* packages. What is happening?</h3>
+<p>Both FOP and Batik use the <code>org.w3c.</code> * packages. Depending on the version of FOP and Batik, Batik has been using a version of these packages which is more recent than the one in the <code>xml-apis.jar</code> file FOP uses. However, if the <code>xml-apis.jar</code> file that comes with the FOP distribution is loaded before the Batik jar files, then the version coming with FOP takes precedence (i.e., that is the version the Java Virtual Machine loads). Because that version is incompatible with Batik, you encounter this problem.</p>
+<p>The solution is to either repackage the <code>xml-apis.jar</code> file with the classes in the Batik distribution (you will need the Batik source distribution to do that), or you will need to make sure the Batik jars are loaded before FOP’s <code>xml-apis.jar</code> , for example by putting Batik’s jar file before FOP’s in your classpath. If you are copying your jar files to <code>.../jre/lib/ext</code> , you can simply remove the FOP <code>xml-apis.jar</code> file from that directory.</p>
+<h3 id="how-to-checkout-latest-batik-via-svn">3.11. How do I checkout the latest SVN version of Batik?</h3>
+<p>You just have to follow the instructions on the <a href="download.cgi">download page</a> .</p>
+<h3 id="mac-os-x-messed-up-svg-files">3.12. I’m using Mac OS X, and some of the SVG files I view are messed up (things appear clipped or out of place). What do I need to do to fix this?</h3>
+<p>As of Mac OS X release 10.1.1 there still appears to be problems in the Apple implementation of the Java 2D APIs. The true source of these problems and/or workarounds have yet to be identified (although the problems appear to be closely tied to a “gstack underflow” error message from the Apple JVM). We are interested in finding the source of these problems and reasonable workarounds, so if you know what causes these errors the Batik team would be very interested in hearing from you (either directly or through the user/developer mailing lists).</p>
+<p>Other things to be aware of on Mac OS X, due to fixes for other problems with Java 2D under Mac OS X, you may find that some filtering operations take significantly more memory than on other platforms. This will be especially true for deeply nested filter trees (where the result of one filtering operation is filtered by another filtering operation).</p>
+<p>Finally a few hints on avoiding problems under Mac OS X. The bugs seems to be triggered by filters, and pure raster SVG documents have not been found to cause problems. The use of the <code>filterRes</code> attribute on the <code>filter</code> element seems especially problematic. The bug isn’t 100% reproducible, so while some content exhibits the problem, if you play with the document enough it will often “fix” itself for a while, then later it will go back to being broken (which indicates that the problem may be some sort of race condition in the JVM).</p>
+<h3 id="mac-os-x-batik-demo-crash">3.13. I cannot run the Batik demo on Mac OS X (10.1.1). The Batik splash screen hangs. What is happening?</h3>
+<p>The Batik <a href="demo.html">demo</a> uses Java Web Start. Java Web Start (under the <code>Applications/Utilities</code> folder), lets you start a Java application from a web browser. You can see the debug traces by enabling the Java console for Java Web Start. If you do, you will see that there is a <code>java.lang.NoSuchMethodError</code> exception thrown.</p>
+<p>This is happening because the Java Web Start jar file ( <code>javaws.jar</code> in <code>/Applications/Utilities/Java Web
+            Start/Content/MacOS</code> ) contains an older version of the DOM bindings.</p>
+<p>One work around is to manually patch the <code>javaws.jar</code> file to remove the DOM bindings so that they do not take precedence over the Batik ones.</p>
+<h2 id="batik-dev">4. How do I contribute to Batik Development?</h2>
+<h3 id="how-can-i-contribute">4.1. How can I contribute to Apache Batik development?</h3>
+<p>The Batik Project is an open volunteer project in the spirit of the <a href="http://www.apache.org">Apache Software Foundation</a> (ASF). This means that there are many ways to contribute to the project, either with direct participation (coding, documenting, answering questions, proposing ideas, reporting bugs, suggesting bug-fixes, etc.) or by resource donation (publicity, hardware, software, conference presentations, speeches, etc.). Applications that use the Batik modules, such as tools or extensions, are of special interest to the project.</p>
+<p>The process for contributing to Batik is the same as for other Java projects at Apache. A formal description of that process can be found on the <a href="http://jakarta.apache.org/guidelines/index.html">Jakarta</a> web site. You can also view a list of <a href="contributors.html">who has contributed to Batik</a> .</p>
+<p>For direct participation, we suggest that you subscribe to the <a href="mailing-lists.html">Batik mailing lists</a> and to checkout the <a href="http://svn.apache.org/viewcvs.cgi/xmlgraphics/batik/">latest code</a> .</p>
+<h3 id="submit-patches">4.2. How do I submit patches or bug fixes?</h3>
+<p>You can submit bug fixes and patches to the <a href="mailto:batik-dev@xmlgraphics.apache.org">Batik developers</a> mailing list and you can enter bugs in <a href="http://issues.apache.org/bugzilla/buglist.cgi?query_format=specific&amp;bug_status=__open__&amp;product=Batik">Bugzilla</a> .</p></div></div>
+      <div class="clear"></div>
+
+	  <div id="footer">
+		<a alt="Apache Software Foundation" href="http://www.apache.org">
+		  <img id="asf-logo" alt="Apache Software Foundation" src="/images/feather-small.gif"/ width="100">
+		</a>
+		<div class="copyright">
+		  <p>
+			Copyright &copy; 2011 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, 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>

Added: websites/staging/xmlgraphics/trunk/content/batik/index.html
==============================================================================
--- websites/staging/xmlgraphics/trunk/content/batik/index.html (added)
+++ websites/staging/xmlgraphics/trunk/content/batik/index.html Sun Apr 15 05:46:22 2012
@@ -0,0 +1,133 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <title>Batik SVG Toolkit</title>
+
+    <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="http://www.apache.org/css/code.css">
+-->
+    <link href="/css/xmlgraphics.css" rel="stylesheet" type="text/css">
+
+    </style>
+
+    
+
+    
+    
+  </head>
+
+  <body>
+	  <div id="banner">&nbsp;
+	  </div>
+
+	  <div id="navigation">
+	  <h1 id="xml-graphics">XML Graphics</h1>
+<ul>
+<li><a href="/">Overview</a></li>
+<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="http://www.apache.org/foundation/sponsorship.html">ASF Sponsorship Program</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">ASF Thanks</a></li>
+</ul>
+<h1 id="subprojects">Subprojects</h1>
+<ul>
+<li><a href="/batik/">Batik</a></li>
+<li><a href="/fop/">FOP</a></li>
+<li><a href="/commons/">Commons</a></li>
+</ul>
+<form name="search" id="search" action="http://www.google.com/search" method="get">
+  <input value="xmlgraphics.apache.org" name="sitesearch" type="hidden"/>
+  <input type="text" name="q" id="query" /><br />
+  <input type="submit" id="submit" value="Search" />
+</form>
+	  </div>
+	
+	  <div id="bannertext">
+        <a href="/"><img src="/images/apache-xml-graphics.gif" alt="The Apache XML Graphics Project" width="220" heigh="51" /></a>
+        <h1>Batik SVG Toolkit</h1>
+      </div>
+        <p><a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/batik/">Batik</a></p>
+      </div>
+      <div id="content" class="grid_16"><div class="section-content"><h1 id="overview">Overview</h1>
+<p>Batik is a Java-based toolkit for applications or applets that want to use images in the <a href="http://www.w3.org/TR/SVG11/">Scalable Vector Graphics (SVG)</a> format for various purposes, such as display, generation or manipulation.</p>
+<p>The project’s ambition is to give developers a set of <a href="using/architecture.html#coreComponents">core modules</a> that can be used together or individually to support specific SVG solutions. Examples of <a href="using/index.html">modules</a> are the <a href="using/parsers.html">SVG Parser</a> , the <a href="using/svg-generator.html">SVG Generator</a> and the <a href="using/dom-api.html">SVG DOM</a> . Another ambition for the Batik project is to make it highly <a href="using/extending.html">extensible</a> —for example, Batik allows the developer to handle custom SVG elements. Even though the goal of the project is to provide a set of core modules, one of the deliverables is a full fledged <a href="tools/browser.html">SVG browser</a> implementation which validates the various modules and their inter-operability.</p>
+<h1 id="uses">What Batik can be used for</h1>
+<p><img alt="Batik use cases" src="images/batikUses.jpg" title="" /> With Batik, you can manipulate SVG documents anywhere Java is available. You can also use the various <a href="using/index.html">Batik modules</a> to <a href="using/svg-generator.html">generate</a> , <a href="using/dom-api.html">manipulate</a> and <a href="using/transcoder.html">transcode</a> SVG images in your applications or applets.</p>
+<p>Batik makes it easy for Java based applications or applets to deal with SVG content. For example, using Batik’s <a href="using/svg-generator.html">SVG generator module</a> , a Java application or applet can very easily export its graphics into the SVG format. Using Batik’s <a href="using/swing.html">SVG viewing component</a> , an application or applet can very easily integrate SVG viewing and interaction capabilities. Another possibility is to use Batik’s modules to convert SVG to various formats, such as raster images (<abbr title="Joint Photographic Expert Group">JPEG</abbr>,<abbr title="Portable Network Graphics">PNG</abbr>or<abbr title="Tagged Image File Format">TIFF</abbr>) or other vector formats (<abbr title="Encapsulated PostScript">EPS</abbr>or<abbr title="Portable Document Format">PDF</abbr>, the latter two due to the transcoders provided by <a href="http://xmlgraphics.apache.org/fop/">Apache FOP</a> ).</p>
+<p>The Batik toolkit includes the following:</p>
+<p><strong>Modules</strong> </p>
+<ul>
+<li>
+<p>An <a href="using/dom-api.html">SVG DOM implementation</a> </p>
+</li>
+<li>
+<p>A set of <a href="using/parsers.html">SVG microsyntax parsers</a> </p>
+</li>
+<li>
+<p>A <a href="using/scripting/ecmascript.html">scripting module</a> </p>
+</li>
+<li>
+<p>A <a href="using/svg-generator.html">generator</a> that creates an SVG document from Java2D calls</p>
+</li>
+<li>
+<p>A <a href="using/swing.html">Swing SVG component</a> </p>
+</li>
+<li>
+<p>A <a href="using/transcoder.html">transcoder module</a> </p>
+</li>
+</ul>
+<p><strong>Tools and applications</strong> </p>
+<ul>
+<li>
+<p>Squiggle, an <a href="tools/browser.html">SVG browser</a> </p>
+</li>
+<li>
+<p>An <a href="tools/rasterizer.html">SVG rasterizer</a> </p>
+</li>
+<li>
+<p>A <a href="tools/font-converter.html">to SVG converter</a> </p>
+</li>
+<li>
+<p>A <a href="tools/pretty-printer.html">pretty printer</a> for SVG source files</p>
+</li>
+</ul>
+<p>See <a href="uses.html">examples of projects and products using Batik</a> for real-life example of how Batik is already integrated in projects and products.</p>
+<h1 id="spec">The SVG specification</h1>
+<p>Scalable Vector Graphics, SVG, is a <a href="http://www.w3.org/">W3C</a> Recommendation. It defines an XML grammar for rich 2D graphics which includes features such as transparency, arbitrary geometry, filter effects (shadows, lighting effects, etc.), scripting and animation.</p>
+<p>The SVG specification states:</p>
+<p>This specification defines the features and syntax for Scalable Vector Graphics (SVG). SVG is a language for describing two-dimensional graphics in XML [ <a href="http://www.w3.org/TR/REC-xml">XML10</a> ]. SVG allows for three types of graphic objects: vector graphic shapes (e.g., paths consisting of straight lines and curves), images and text. Graphical objects can be grouped, styled, transformed and composited into previously rendered objects. The feature set includes nested transformations, clipping paths, alpha masks, filter effects and template objects.</p>
+<p>SVG documents can be interactive and dynamic. Animations can be defined and triggered either declaratively (i.e., by embedding SVG animation elements in SVG content) or via scripting.</p>
+<h1 id="status">Implementation status</h1>
+<p>The latest revision of Batik, release 1.7, is a conformant <a href="http://www.w3.org/TR/SVG11/conform.html#ConformingSVGViewers">static SVG implementation</a> and supports <a href="http://www.w3.org/TR/SVG11/interact.html">interactivity</a> , <a href="http://www.w3.org/TR/SVG11/linking.html">linking</a> and <a href="http://www.w3.org/TR/SVG11/script.html">scripting</a> features of the SVG specification. This release supports a nearly complete implementation of declarative <a href="http://www.w3.org/TR/SVG11/animate.html">animation</a> , too.</p>
+<p>See the <a href="status.html">status</a> page for a detailed description of the set of SVG features Batik supports.</p>
+<h1 id="download">Download Batik</h1>
+<p>You can get the Batik distribution, source and binary, from the <a href="download.cgi">download page</a> .
+All other libraries needed by Batik are included in the distribution. As a consequence the Batik archive is quite big, but after you have downloaded it, you will not need anything else.<warning id="SecurityWarning" label="Security warning">
+This is a warning that a script security issue was reported in the Batik Squiggle browser. Squiggle uses the Rhino scripting engine and some features of that engine can be leveraged by malicious scripts to gain access to otherwise protected resources (like the file system). This issue was fixed in the 1.5.1 release of Batik. If you are using a version of Batik older than 1.5.1, you should upgrade.
+</warning></p></div></div>
+      <div class="clear"></div>
+
+	  <div id="footer">
+		<a alt="Apache Software Foundation" href="http://www.apache.org">
+		  <img id="asf-logo" alt="Apache Software Foundation" src="/images/feather-small.gif"/ width="100">
+		</a>
+		<div class="copyright">
+		  <p>
+			Copyright &copy; 2011 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, 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>

Added: websites/staging/xmlgraphics/trunk/content/batik/install.html
==============================================================================
--- websites/staging/xmlgraphics/trunk/content/batik/install.html (added)
+++ websites/staging/xmlgraphics/trunk/content/batik/install.html Sun Apr 15 05:46:22 2012
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <title>Installing Batik</title>
+
+    <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="http://www.apache.org/css/code.css">
+-->
+    <link href="/css/xmlgraphics.css" rel="stylesheet" type="text/css">
+
+    </style>
+
+    
+
+    
+    
+  </head>
+
+  <body>
+	  <div id="banner">&nbsp;
+	  </div>
+
+	  <div id="navigation">
+	  <h1 id="xml-graphics">XML Graphics</h1>
+<ul>
+<li><a href="/">Overview</a></li>
+<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="http://www.apache.org/foundation/sponsorship.html">ASF Sponsorship Program</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">ASF Thanks</a></li>
+</ul>
+<h1 id="subprojects">Subprojects</h1>
+<ul>
+<li><a href="/batik/">Batik</a></li>
+<li><a href="/fop/">FOP</a></li>
+<li><a href="/commons/">Commons</a></li>
+</ul>
+<form name="search" id="search" action="http://www.google.com/search" method="get">
+  <input value="xmlgraphics.apache.org" name="sitesearch" type="hidden"/>
+  <input type="text" name="q" id="query" /><br />
+  <input type="submit" id="submit" value="Search" />
+</form>
+	  </div>
+	
+	  <div id="bannertext">
+        <a href="/"><img src="/images/apache-xml-graphics.gif" alt="The Apache XML Graphics Project" width="220" heigh="51" /></a>
+        <h1>Installing Batik</h1>
+      </div>
+        <p><a href="/">Home</a>&nbsp;&raquo&nbsp;<a href="/batik/">Batik</a></p>
+      </div>
+      <div id="content" class="grid_16"><div class="section-content"><h1 id="systemRequirements">System requirements</h1>
+<p>Batik requires the following to be already installed in your system:</p>
+<dl>
+<dt>Java Runtime Environment</dt>
+<dd>A Java 1.4 or above compatible runtime environment must be present.</dd>
+</dl>
+<h1 id="distributions">Choosing a distribution to download</h1>
+<p>To install Batik, you will need to go to the <a href="download.cgi">download page</a> and download one or more ZIP file containing the distribution of your choice. It is good practice to <a href="#verify">verify the integrity</a> of the distribution files, especially if you are using one of our mirror sites. Here are the various components you will find in the download area and their intended use:</p>
+<ul>
+<li><strong>batik-</strong>  <em>version</em>  <strong>.zip</strong> (e.g., <code>batik-1.6.zip</code> )</li>
+</ul>
+<p>The <em>binary distribution</em> contains compiled executable JAR files that let you get started with Batik easily. This is the recommended distribution if you want to look at Batik’s features, or you want to experiment with SVG and see the fun things you can do with Batik. The binary distribution comes with a set of sample SVG files.</p>
+<ul>
+<li><strong>batik-src-</strong>  <em>version</em>  <strong>.zip</strong> (e.g., <code>batik-src-1.6.zip</code> )</li>
+</ul>
+<p>The <em>source distribution</em> contains a complete snapshot of the Batik source code, documentation, regression tools and utilities as well as the script for building Batik. That distribution is a snapshot of the SVN repository. This is the recommended distribution for developers who want to dive into the code and understand how Batik can be integrated in their applications or how Batik can be extended.</p>
+<ul>
+<li><strong>batik-docs-</strong>  <em>version</em>  <strong>.zip</strong> (e.g., <code>batik-docs-1.6.zip</code> )</li>
+</ul>
+<p>The <em>documentation bundle</em> contains a copy of the Javadoc for the Batik source code.</p>
+<p>We make nightly copies of the source tree available from the <a href="http://svn.apache.org/builds/xml-batik">Apache build</a> server. These builds represent the current state of development and may or may not be as stable as releases. There are two types of distributions provided:</p>
+<ul>
+<li><strong>batik-svn-</strong>  <em>date</em>  <strong>.zip</strong> (e.g., <code>batik-svn-06-03-29.zip</code> )</li>
+</ul>
+<p>This contains a complete copy of the Subversion repository trunk, including support for running <a href="dev/test.html">regard</a> , Batik’s regression testing utility. In particular this includes all the reference images for testing. Developers are encouraged to get these or better use <a href="download.html#svn">Subversion</a> directly.</p>
+<ul>
+<li><strong>batik-src-</strong>  <em>date</em>  <strong>.zip</strong> (e.g., <code>batik-src-06-03-29.zip</code> )</li>
+</ul>
+<p>This contains all the source code and libraries needed to build and run Batik from source, but does not include the testing facilities.</p>
+<p>Older releases are available from the <a href="http://archive.apache.org/dist/xmlgraphics/batik">Apache archives</a> . However, we strongly recommend using the current release of Batik.</p>
+<p>In all cases, the user should:</p>
+<ul>
+<li>
+<p>Make sure a Java Development Kit (JDK) is installed on the computer where Batik will be installed. See the <a href="#systemRequirements">system requirements</a> . Make sure that the <code>java</code> runtime is in the <code>PATH</code> environment variable.</p>
+</li>
+<li>
+<p>Select the directory where he/she wants to download the distribution.</p>
+</li>
+<li>
+<p>Download the desired distribution from the <a href="download.cgi">download page</a> .</p>
+</li>
+<li>
+<p>Download the associated PGP signature (.asc) and KEYS file (preferable) or MD5 hash (.md5). This must be done directly from the <a href="http://www.apache.org/dist/xmlgraphics/batik">Apache download</a> area to mean anything.</p>
+</li>
+<li>
+<p>Open a console and go to the directory where the distribution was downloaded.</p>
+</li>
+<li>
+<p><a href="#verify">Verify the integrity</a> of the distribution.</p>
+</li>
+<li>
+<p>Unpack the distribution with Java’s JAR utility:
+jar xvf <distribution>
+For example, if you have downloaded batik-1.6.zip into /home/IamHere, type the following at the command prompt:
+cd /home/IamHere
+jar xvf batik-1.6.zip
+ <strong>IMPORTANT:</strong> UNIX users, do not use the <code>unzip</code> utility to unpack the various Batik zip files, as this would not set the directories access rights properly.</p>
+</li>
+<li>
+<p>If you are using Mac OS X, you can now generate an application bundle for Squiggle, Batik's SVG browser:
+sh lib/make-squiggle-app.sh
+After running this script, a Finder window will be opened where you can find the generated Squiggle application bundle. Drag this to your Applications folder to install it.</p>
+</li>
+<li>
+<p>Now you can follow the instructions specific to the application you want to use. For example, see the <a href="tools/browser.html">SVG Browser</a> page or the <a href="tools/rasterizer.html">SVG Rasterizer</a> page for an explanation on how to use these tools.</p>
+</li>
+</ul>
+<h1 id="optionalComponents">Optional components</h1>
+<p>By default, the Batik source distribution comes with the <a href="http://www.mozilla.org/rhino/">Mozilla Rhino</a> JavaScript Engine ( <code>js.jar</code> ).</p>
+<p>To enable other scripting languages support, you will only need to install the correct jar files in <code>lib</code> directory of Batik and recompile your distribution.</p>
+<ul>
+<li>
+<p>For Python, you need to download Jython distribution at <a href="http://www.jython.org/">http://www.jython.org/</a> . Then you put the <code>jython.jar</code> file in the Batik <code>lib</code> directory.</p>
+</li>
+<li>
+<p>For Tcl, you need to download Jacl &amp; TclBlend distribution at <a href="http://dev.scriptics.com/software/java/">http://dev.scriptics.com/software/java/</a> . Then you put the <code>jacl.jar</code> and <code>tcljava.jar</code> files in the Batik <code>lib</code> directory.</p>
+</li>
+</ul>
+<p>Conversely, you can remove the <code>js.jar</code> of the Batik <code>lib</code> directory to remove JavaScript support and have a smaller distribution.</p>
+<h1 id="dependencyGraph">Jar file dependency graph</h1>
+<p><warning label="Out of date">
+Note that the dependency graph in this section is out of date, and needs to be updated.
+</warning>
+The Batik distribution comes with many jar files. Not all of them are needed in every case (although the provided applications tend to use most of them). The following is a diagram showing the dependencies between the various jar files in the Batik binary distribution (it also shows the major package interdependencies for source developers).</p>
+<p>Jar files in white boxes are library jar files that Batik includes from external sources. The light blue boxes correspond to library jar files (those found in the <code>lib</code> directory of a binary distribution) built from Batik source code. The dark blue boxes represent the application jar files.</p>
+<p>When boxes touch, the box on top depends on the box below it (there is no horizontal touching). Arrows also indicate dependencies (the source of the arrow depends on the destination). In some cases a thick underline with an arrow is used to indicate that a large number of jar files share a common dependency, this however does not indicate any dependency between the jar files underlined.
+<div class="figure"> <img alt="Batik jar file dependency graph" src="jarDependImg.png" title="" /> </div>Some jar file names are shortened for clarity. All <code>batik</code> package references are short for <code>org.apache.batik</code> .
+It is worth pointing out that a determined/clever programmer may be able to pare down some of these dependencies. For example the <code>batik-dom.jar</code> depends on <code>xerces.jar</code> because of the <code>SAXDocumentFactory</code> class in <code>org.apache.batik.dom.util</code> . If you didn’t need to parse XML it would be possible to ignore or break this dependency and still use the <code>batik-dom.jar</code> file for its DOM implementation.</p>
+<h1 id="verify">Verify releases</h1>
+<p>It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures.</p>
+<p>The PGP signatures can be verified using PGP or GPG. First download the <a href="http://www.apache.org/dist/xmlgraphics/batik/KEYS">KEYS</a> as well as the <code>asc</code> signature file for the particular distribution you choose. Make sure you get these files from the <a href="http://www.apache.org/dist/xmlgraphics/batik/">main distribution directory</a> , rather than from a mirror. Then verify the signatures using:
+pgpk -a KEYS
+pgpv batik-1.6.zip.asc
+ <em>or</em> 
+pgp -ka KEYS
+pgp batik-1.6.zip.asc <em>or</em> <br></br>gpg --import KEYS
+pgp batik-1.6.zip.asc
+ <em>or</em> 
+gpg --import KEYS
+gpg --verify batik-1.6.zip.asc
+Alternatively, you can verify the MD5 signature on the files. A UNIX program called <code>md5</code> or <code>md5sum</code> is included in many UNIX distributions. It is also available as part of <a href="http://www.gnu.org/software/textutils/textutils.html">GNU Textutils</a> . Windows users can get binary md5 programs from <a href="http://www.fourmilab.ch/md5/">here</a> , <a href="http://www.pc-tools.net/win32/freeware/console/">here</a> , or <a href="http://www.slavasoft.com/fsum/">here</a> .</p>
+<p>We recommend using PGP signatures as they can provide a much higher level of assurance compared with MD5.</p></div></div>
+      <div class="clear"></div>
+
+	  <div id="footer">
+		<a alt="Apache Software Foundation" href="http://www.apache.org">
+		  <img id="asf-logo" alt="Apache Software Foundation" src="/images/feather-small.gif"/ width="100">
+		</a>
+		<div class="copyright">
+		  <p>
+			Copyright &copy; 2011 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, 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>



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: commits-help@xmlgraphics.apache.org