[ http://issues.apache.org/jira/browse/DERBY-688?page=all ]
A B updated DERBY-688:
----------------------
Derby Info: [Release Note Needed]
Adding a release note to call out Derby's dependency on a JAXP parser and
Apache Xalan when executing XML operators. First attempt at the release note
is as follows:
DERBY-688: XML datatype and corresponding SQL/XML operators.
As of the 10.2 release, Derby supports a new XML data type and a set of
operators that work with the XML data type. The XML data type and operators are
based on a small subset of the SQL/XML specification.
PROBLEM
For the XML operators to work properly, Derby requires that a JAXP parser, such
as Apache Xerces, and Apache Xalan are included in the Java classpath. If
either the parser or Xalan are missing from the classpath, Derby disallows any
XML-related operations.
SYMPTOM
If a user attempts to use any of the of XML operators but does not have a JAXP
parser AND Apache Xalan in his/her classpath, the result will be an error
similar to the following:
Failed to locate '<JAXP/Xalan>' API or implementation classes. XML
operations are not permitted unless these classes are in your classpath.
CAUSE
Derby does all XML parsing by making calls to JAXP methods as defined in the
JDK 1.4 API. Similarly, Derby does all evaluation of XPath queries,
manipulation of XPath results, and serialization of XML values by making calls
to Xalan-specific methods defined in Xalan classes. Thus if either JAXP or
Xalan is missing from the classpath, the Derby XML operators would not function
correctly, leading to ClassNotFound and similar exceptions at various points
during code execution. In order to avoid this, Derby checks to see if JAXP and
Xalan are in the classpath, and if either is missing, Derby will not even
attempt to perform XML operations. Instead, it will just issue the error
mentioned above.
SOLUTION
If you intend to use any of the Derby XML operators, make sure that you have 1)
a JAXP parser and 2) Apache Xalan in your classpath. If you are running in
client/server mode, the JAXP and Xalan classes must be in the classpath for the
Derby server, since that is where XML-related processing actually occurs.
Apache Derby version 10.2 has been tested with Xalan 2.7.0. If you have a
version of Xalan that is earlier than 2.7, the Derby XML operators may still
work. However, it is possible that you will experience unexpected errors when
using the Derby XML operators. For example, there is a bug in Xalan versions
earlier than 2.5 that can lead to failures with Derby XML operators when Derby
is running with a security manager. The exact error can vary depending on the
situation, but generally includes a line similar to the following:
org.apache.xml.utils.WrappedRuntimeException: The resource [
file:////org/apache/xalan/serialize/XMLEntities.res ] could not load:
java.security.AccessControlException: access denied
This problem has been fixed as of Xalan 2.5, so you can avoid the problem by
using a more recent version of Xalan.
Note: Most Java virtual machines (JVMs) that are version 1.4 or later have a
JAXP parser embedded in the JVM. If you are using one of these JVMs, you do not
need to add any other JAXP classes to your classpath. Additionally, if the JVM
that you are using includes an embedded version of Xalan, you should confirm
that the version of Xalan satisfies the minimum requirements for Derby. For
example, if your JVM is Sun JDK 1.4.2, you must override the version of Xalan
in the JVM with a newer version. Use Java's Endorsed Standards Override
Mechanisms described at http://java.sun.com/j2se/1.4.2/docs/guide/standards/ to
override the version of Xalan.
If the JVM that you are using does not have a JAXP parser or a version of
Xalan, you can add external versions of those classes in your classpath and
Derby will pick up those classes.
WORKAROUND
There is no way to use the Derby XML operators without first including a JAXP
parser and Apache Xalan in your classpath. Attempts to do so will result in an
error.
> Enhancements to XML functionality to move toward XPath/XQuery support...
> ------------------------------------------------------------------------
>
> Key: DERBY-688
> URL: http://issues.apache.org/jira/browse/DERBY-688
> Project: Derby
> Issue Type: Improvement
> Components: SQL, JDBC
> Reporter: A B
> Assigned To: A B
> Priority: Minor
> Fix For: 10.2.2.0, 10.3.0.0
>
> Attachments: d688_phase1_v1.patch, d688_phase1_v1.stat,
> d688_phase1_v2.patch, d688_phase1_v3.patch, d688_phase2_v1_code.patch,
> d688_phase2_v1_tests.patch, d688_phase2_v2_tests.patch,
> d688_phase2_v3_tests.patch, d688_phase3_v1_code.patch,
> d688_phase3_v1_tests.patch, d688_phase4_v1.patch, d688_phase4_v2.patch,
> d688_phase5_v1.patch, d688_phase6_v1.patch, d688_phase7_v1.patch,
> derbyXMLSpec.html
>
>
> As of DERBY-334, Derby has some very basic support for XML that consists of
> an XML datatype and three operators (XMLPARSE, XMLSERIALIZE, and XMLEXISTS).
> I would like to enhance this existing functionality and, by doing so, help to
> move Derby incrementally toward a more usable and more complete XPath/XQuery
> solution (with emphasis on "incrementally").
> I have attached to this issue a document describing the particular changes
> that I am looking to make. At a high level, they consist of:
> 1) Making it easier to use the XML operators and datatype from within JDBC
> (ex. by implicit parsing/serialization of XML values).
> 2) Adding a new operator, XMLQUERY, to allow a user to retrieve the results
> of an XPath expression (instead of just determining whether or not the
> expression evaluates to an empty sequence, which is what XMLEXISTS does).
> 3) Making changes to the existing operators to line them up with the SQL/XML
> 2005 specification, and also to take steps toward my eventual hope of having
> support for XQuery (as opposed to just XPath) in Derby.
> If anyone has time and interest enough to look at the document and provide
> feedback, that'd be great...
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira