| <?xml version='1.0' encoding='UTF-8'?> |
| <!-- |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| --> |
| <!DOCTYPE faqs SYSTEM 'dtd/faqs.dtd'> |
| <faqs title='Building and Running FAQs'> |
| <faq title='Swing version?'> |
| <q>Which version of Swing is required?</q> |
| <a> |
| <p> |
| This release uses Swing 1.1 (JFC 1.1). Swing is only used by |
| the sample programs and is not required by the parser itself. |
| </p> |
| </a> |
| </faq> |
| <faq title='Recompling source files?'> |
| <q>How do I recompile the source files?</q> |
| <a> |
| <p> |
| To build &ParserName; you need the Java Development |
| Kit (JDK) version 1.2 (or higher) installed on your machine. |
| The actual build is performed by the Ant program which is |
| written in Java and is a subproject of the Apache |
| <jump href='http://ant.apache.org/'>Ant</jump> |
| project. The build also requires a few other tools but |
| all of the tools you need (including Ant) are contained |
| in the <ref>&ParserName;-tools.&parserversion;.zip</ref> |
| file, packaged separately. Go to the &ParserName; |
| <jump href='http://xerces.apache.org/xerces2-j/download.cgi'>download</jump> |
| page to download the tools package and then extract it in the |
| same location as the source package. |
| </p> |
| <p> |
| Once you have extracted both the source and tools packages |
| in the same directory, you can invoke a build by either |
| using the "build.bat" file for Windows platforms or the |
| "build.sh" file for UNIX platforms. Before invoking either |
| one of these scripts, though, be sure to set the JAVA_HOME |
| environment variable to the installed location of your JDK. |
| </p> |
| <p> |
| The script will invoke the Ant build program for you which |
| displays the list of allowed build targets. To only compile |
| the source files, type "build compile" (on Windows platforms) |
| at the command line in the directory where you extracted |
| &ParserName;; to build the Jar files, type "build jars"; and |
| to build everything, including documentation, type "build |
| all". |
| </p> |
| </a> |
| </faq> |
| <faq title='Regenerating API documentation?'> |
| <q>How do I regenerate the API documentation?</q> |
| <a> |
| <p> |
| To regenerate the API documentation, you need to set up |
| your environment to build &ParserName;. Instead of typing |
| "build all", you type "build javadocs". |
| </p> |
| </a> |
| </faq> |
| <faq title="How do I use Visual Age?"> |
| <q>How do I import &ParserName; into Visual Age for Java</q> |
| <a> |
| <ul> |
| <li> |
| Why does VisualAge for Java 2.0 report problems when I import |
| the &ParserName; parser? |
| <br/> |
| The current version of the &ParserName; parser uses Swing |
| 1.1, while VisualAge for Java 2.0 comes with Swing 1.0.2. The |
| free update for the Professional version of VisualAge for Java |
| 2.0 installs Swing 1.0.3. The most important difference between |
| Swing 1.0.2 - 1.0.3 and 1.1 is the Java package was changed |
| from com.sun.java.swing.* to javax.swing.*. |
| <br/> |
| To fix the errors, you must download the Java Foundation Classes |
| 1.1 with Swing 1.1 from Sun's Java home page and import the |
| "swingall.jar" file into VisualAge for Java 2.0. The |
| Swing 1.1 package can be found at the following URL: |
| <br/> |
| <jump href="http://java.sun.com/products/jfc/index.html">http://java.sun.com/products/jfc/index.html</jump> |
| <br/> |
| Refer to the VisualAge for Java 2.0 documentation for information |
| about how to import a JAR file into the repository and add that |
| code to your workspace. |
| </li> |
| <li> |
| Are there any other tips for importing the &ParserName; |
| parser into VisualAge for Java 2.0? |
| <br/> |
| The most useful tip applies to <em>any</em> updated code that you |
| import into the VisualAge for Java 2.0 product. Before updating |
| code, do the following: |
| <br/> |
| 1. version the old code |
| <br/> |
| 2. delete it from your workspace |
| <br/> |
| 3. import the new code |
| <br/> |
| Deleting code from your workspace does not actually delete |
| the code permanently - the versioned code is moved to the |
| repository where it can be retrieved later. Be aware, though, |
| that removing code from your workspace will cause problems with |
| all of the other classes that use that code. VisualAge for Java |
| 2.0 will flag them as errors but this situation is temporary. |
| When you import the new code, the errors found when deleting the |
| old code will be fixed. |
| <br/> |
| If you are unsure as to how to perform any of these steps, refer |
| to the VisualAge for Java 2.0 documentation. |
| </li> |
| </ul> |
| </a> |
| </faq> |
| <!-- |
| - REVISIT: This needs to be re-run and re-verified before we |
| - put this FAQ item back in. |
| <faq title='100% Pure Java compliant?'> |
| <q>Is this &ParserName; version 100% pure Java compliant?</q> |
| <a> |
| <p> |
| Running JavaPureCheck on the &ParserName; parser code indicated 339 |
| pure Java classes, 9 warnings, and 0 errors. The nine warnings are |
| enumerated below with explanations. To see the entire report, click |
| <link idref="jpc">here</link>. |
| </p> |
| <p> |
| There are many common cases where JavaPureCheck issues warnings |
| even though the code is pure Java. These are the most common |
| reasons: |
| </p> |
| <ol> |
| <li> |
| Warning: method reference: |
| <code>java.lang.Class.forName(java.lang.String)</code> |
| <br/> |
| This warning is issued in the following two cases: |
| </li> |
| <ol> |
| <li> |
| Program code calls the <code>Class.forName(String)</code> |
| method to dynamically load a class file. In this situation, |
| the specified class may contain impure Java code. In the |
| cases where this method is called directly in the parser |
| code, an explanation is provided detailing why this warning |
| can be ignored. |
| </li> |
| <li> |
| Program code makes direct reference to an object's |
| class. For example: <code>Class stringClass = String.class;</code>. |
| In this situation the Java compiler converts |
| <code>String.class</code> to the method call |
| <code>Class.forName("java.lang.String")</code>. |
| As long as the object whose class is being referenced is |
| pure Java, the code making the reference remains pure. |
| </li> |
| </ol> |
| <li> |
| Warning: possible hard-coded path: ... |
| <br/> |
| When a String literal contains a common path separator character |
| (e.g. '/' or '\'), JavaPureCheck assumes that |
| it is a hard-coded path and that the class may not contain |
| portable code. While a human tester can verify that the string is |
| not a path, JavaPureCheck must be conservative and issue a |
| warning. |
| </li> |
| </ol> |
| <p>Explanations:</p> |
| <ul> |
| <li>Class: org.xml.sax.helpers.ParserFactory</li> |
| <ul> |
| <li> |
| Warning: method reference: |
| java.lang.Class.forName(java.lang.String) |
| </li> |
| </ul> |
| <ul> |
| <li> |
| Explanation: The ParserFactory class is part of the standard |
| SAX 1.0 distribution. The warning given that this class "may |
| load impure class" is correct - the ParserFactory class may |
| load impure Java class files. However, the purpose of this |
| utility class is to load parser classes by name and therefore |
| cannot dynamically check the pureness of parser classes loaded |
| in this fashion. Since the &ParserName; parser does not use this |
| method directly, it is not a problem that concerns the &ParserName; |
| parser. |
| </li> |
| </ul> |
| <li>Class: org.apache.xml.serialize.SerializerFactory</li> |
| <ul> |
| <li> |
| Warning: method reference: |
| java.lang.Class.forName(java.lang.String) |
| </li> |
| </ul> |
| <ul> |
| <li> |
| Explanation: The SerializerFactory supports querying a system |
| property to dynamically instantiate a serializer by class name. |
| However, all of the serializer classes provided in this |
| distribution are pure. The only way to load an impure |
| serializer is if the user provided an impure serializer |
| implementation. |
| </li> |
| </ul> |
| <li>Class: org.apache.xml.serialize.OutputFormat</li> |
| <ul> |
| <li>Warning: possible hard-coded path: text/xml</li> |
| </ul> |
| <ul> |
| <li>Warning: possible hard-coded path: text/plain</li> |
| </ul> |
| <ul> |
| <li>Warning: possible hard-coded path: application/pdf</li> |
| </ul> |
| <ul> |
| <li>Warning: possible hard-coded path: text/html</li> |
| </ul> |
| <ul> |
| <li> |
| Warning: possible hard-coded path: |
| -//W3C//DTD XHTML 1.0 Strict//EN |
| </li> |
| </ul> |
| <ul> |
| <li>Explanation: These strings are not filenames.</li> |
| </ul> |
| <li>Class: org.apache.xml.serialize.HTMLdtd</li> |
| <ul> |
| <li> |
| Warning: method reference: |
| java.lang.Class.forName(java.lang.String) |
| </li> |
| </ul> |
| <ul> |
| <li>Explanation: Referencing class object that is pure Java.</li> |
| </ul> |
| <li>Class: org.apache.html.dom.HTMLDocumentImpl</li> |
| <ul> |
| <li> |
| Warning: method reference: |
| java.lang.Class.forName(java.lang.String) |
| </li> |
| </ul> |
| <ul> |
| <li>Explanation: Referencing class object that is pure Java.</li> |
| </ul> |
| <li>Class: org.apache.xerces.readers.StringReader</li> |
| <ul> |
| <li> |
| Warning: method reference: |
| java.lang.Class.forName(java.lang.String) |
| </li> |
| </ul> |
| <ul> |
| <li>Explanation: Referencing class object that is pure Java.</li> |
| </ul> |
| <li>Class: org.apache.xerces.parsers.DOMParser</li> |
| <ul> |
| <li> |
| Warning: method reference: |
| java.lang.Class.forName(java.lang.String) |
| </li> |
| </ul> |
| <ul> |
| <li> |
| Explanation: The DOMParser class allows the user to set the |
| DOM implementation to use, by name. However, the default DOM |
| implementation is pure Java. |
| </li> |
| </ul> |
| <ul> |
| <li>Explanation: Referencing class object that is pure Java.</li> |
| </ul> |
| <li>Class: org.apache.xerces.utils.CharDataChunk</li> |
| <ul> |
| <li> |
| Warning: method reference: |
| java.lang.Class.forName(java.lang.String) |
| </li> |
| </ul> |
| <ul> |
| <li>Explanation: Referencing class object that is pure Java.</li> |
| </ul> |
| <li>Class: org.apache.xerces.utils.UTF8DataChunk</li> |
| <ul> |
| <li> |
| Warning: method reference: |
| java.lang.Class.forName(java.lang.String) |
| </li> |
| </ul> |
| <ul> |
| <li>Explanation: Referencing class object that is pure Java.</li> |
| </ul> |
| </ul> |
| <p> |
| The results file of the JavaPureCheck can be viewed by clicking |
| <link idref="jpc">here</link>. |
| </p> |
| <note> |
| The samples were not checked with JavaPureCheck and are not |
| guaranteed to be pure Java. We reserve the right to write samples |
| in the future that are platform specific and therefore may not |
| pass as pure Java. The parser, however, will remain pure Java. |
| </note> |
| </a> |
| </faq> |
| --> |
| <faq title='Running on the Mac?'> |
| <q>How do I get &ParserName; to run on the Mac under MRJ?</q> |
| <a> |
| <p> |
| <em>Prerequisites</em> (available from |
| <jump href="http://developer.apple.com/java/">http://developer.apple.com/java/</jump>): |
| </p> |
| <ul> |
| <li>MRJ 2.1 (this is the most recent version of the JVM)</li> |
| <li> |
| MRJ SDK 2.1 (this is the most recent version of the Java |
| developer tools) |
| </li> |
| </ul> |
| <p> |
| <em>Instructions </em>(other variations would work also): |
| </p> |
| <ol> |
| <li>Download the .tar.gz file containing &ParserName;.</li> |
| <li> |
| Use Stuffit Expander(tm), Suntar, or some other Macintosh tool |
| that supports the .tar.gz format to expand the downloaded file. |
| </li> |
| <li> |
| JBindery, part of MRJ SDK 2.1, is used to create a double-clickable |
| Java application with the necessary configuration information built |
| in. It is analogous to writing a .bat or .sh script. |
| </li> |
| <li><em>To run the dom.DOMWriter example:</em></li> |
| <ol> |
| <li>Double click on JBindery to start it up.</li> |
| <li>Click on the Classpath panel.</li> |
| <li> |
| Click on the "Add .zip File" button and add both the |
| "xerces.jar" and "xercesSamples.jar" files. |
| </li> |
| <li>Click on the Command panel.</li> |
| <li> |
| Enter "dom.Writer" as the Class name. Enter |
| "data/personal.xml" in the Optional parameters box. |
| </li> |
| <li> |
| Click on Save Settings button, pick a name such as "Run |
| <code>dom.Writer</code>" for the file, and <em>be |
| sure</em> that "Save as Application" is selected |
| (this is the default) and save the file. |
| </li> |
| <li>Quit JBindery.</li> |
| <li> |
| You can now double click on the file you created in step (f) to |
| run the XJParse example. |
| </li> |
| </ol> |
| </ol> |
| </a> |
| </faq> |
| <faq title='Visual Cafe exception error?'> |
| <q>Why do I get an ArrayIndexOutOfBoundsException in the Symantec Visual Cafe debugger?</q> |
| <a> |
| <p> |
| The Visual Cafe debugger is set to trap |
| <code>ArrayIndexOutOfBoundsException</code> exceptions by |
| default. &ParserName; sometimes uses |
| <code>ArrayIndexOutOfBoundsException</code> internally to |
| signal exceptional, but not erroneous conditions. In order to |
| run &ParserName; inside Visual Cafe's debugger, you need to |
| turn off the trapping of these exceptions. |
| </p> |
| <p><em>To do this:</em></p> |
| <ol> |
| <li>Select the "Options" item in the "Project" menu.</li> |
| <li> |
| Select the "Debugger" tab in the dialog which appears. |
| </li> |
| <li>Select "Exceptions" from the popup menu.</li> |
| <li> |
| Remove the check from the checkbox for |
| <code>java.lang.ArrayIndexOutOfBoundsException</code>. |
| </li> |
| </ol> |
| </a> |
| </faq> |
| </faqs> |