Oracle XML Developers Kit
Release Notes for Version 10.1.0.2.0 Production
Dec 31, 2003
Contents
1 Overview
2 XDK Java Components
3 XDK C/C++ Components
4 Compatibility
5 Known Bugs
1 Overview
Oracle XML Developer's Kit (Oracle XDK) is a set of components, tools
and utilities that eases the task of building and deploying XML-enabled
applications. To provide a broad variety of deployment options, the Oracle
XDK components are available for Java, C, and C++. Unlike many shareware
and trial XML components, the production Oracle XDK are fully supported
and come with a commercial redistribution license. Oracle XDK consists
of the following components:
-
XML Parsers: supporting Java, C, and C++, the components create and parse
XML using industry standard DOM and SAX interfaces.
-
XSLT Processor: transforms or renders XML into other text-based formats
such as HTML.
-
XSLT VM: high performance XSLT transformation engine in C.
-
XML Schema Processor: schema validation in Java, C, and C++, allows use
of XML simple and complex datatypes.
-
XML Class Generator: automatically generates C++ classes from DTDs and
XML Schemas to send XML data from Web forms or applications.
-
XML JAXB Class Generator: automatically generates Java classes from XML
Schemas to send XML data from Web forms or applications.
-
XML Java Beans: visually transform, diff and compress XML documents via
Java components.
-
XML SQL Utility: generates XML documents, DTDs and Schemas from SQL queries
in Java.
-
XSQL Servlet: combines XML, SQL, and XSLT in the server to deliver dynamic
web content.
-
XML Pipeline processor: specifies Java processes to be executed in a declarative
manner.
-
TransX Utility: makes it easier to load translated seed data and messages
into the database.
Please post any questions, comments, or bug reports to the XML Forum on
the Oracle Technology Network at http://otn.oracle.com/tech/xml/xdkhome.html.
2 XDK Java Components
Oracle XDK Java components are built on W3C Recommendations and Java
JSR standards. The list of currently supported standards are:
2.1 DOM Specifications
The DOM APIs include support for Candidate Recommendations of DOM Level
3 Validation and DOM Level 3 Load and Save.
Load and Save
The following configuration parameters are not supported by LSParser:
-
"charset-overrides-xml-encoding"
Optional settings of the following configuration parameters are not supported
by LSParser:
-
"disallow-doctype (true)"
-
"ignore-unknown-character-denormalizations (false)"
-
"namespaces (false)"
-
"supported-media-types-only (true)"
The following configuration parameters are not supported by LSSerializer:
-
"discard-default-content"
Optional settings of the following configuration parameters are not supported
by LSSerializer:
-
"canonical-form (true)"
-
"format-pretty-print (true)"
-
"ignore-unknown-character-denormalizations (false)"
-
"normalize-characters (true)"
Validation
Some DOM 3 Core functions referred by Validation are implemented, but
Core itself is not supported.
-
NameList and DOMStringList in DOM core are supported
for validation purpose
-
Validation is based on XMLSchema, DTD needs to
be converted to Schema first (use DTDToSchema utility)
2.2 XSL Transformation
The XSLT processor adds support for the current working drafts of XSLT
2.0, XPath 2.0 and the shared XPath/XQuery data model.
Some features of these specifications are not supported in the current
release:
-
The functions in the Functions and Operators specification are not support,
only the function from XSLT 1.0 specification are supported.
-
The validate and complex types in SequenceType expressions
are not supported.
-
The new datatypes fn:yearMonthduration, fn:dayTimeDuration
are not supported.
-
The Schema Import and Static Typing features are not supported.
-
The XSLT instructions xsl:result-document and xsl:namespace
are not supported.
-
The XSLT instructions xsl:text and xsl:number use XSLT 1.0
semantics and syntax.
-
The standard attributes are allowed only on xsl:stylesheet and literal
result elements.
-
The processor does not honor the following attribute:
-
[copy-namespace] on xsl:copy and xsl:copy-of
-
[required] on xsl:param
-
[default-xpath-namespace] on any instruction
-
[unicode-normalization] and [escape-uri-attributes] on xsl:output
-
regular expression functions are not supported.
-
parameters are not passed through built-in templates.
2.3 JAXB Class Generator
The XML Data Binding is built upon JSR-31 "The Java Architecture for
XML Binding (JAXB) Final, V1.0 January 8th, 2003". This component allows
creations of Java classes based on the XML Schema. The XDK 9i Class Generator
has been deprecated; however, the XDK 9i Class Generator runtime is included
and will be supported for the duration of XDK v10 release.
The JAXB 1.0 specification does not require full W3C XML Schema support.
Please refer to Appendix E.2 for full details. The current release doesn't
support the following:
-
The Customization features are not supported.
-
The Javadoc generation is not supported.
-
The "List" and "Union" features of XML Schema are not supported.
-
Generation of TypeSafe Enum class to map the simpleType mapping
with enumeration.
2.4 XML Java Beans
The following new beans are added in the release:
-
XSDValidator - encapsulates oracle.xml.parser.schema.XSDValidator
class and adds capabilities for validating a DOM tree.
-
XMLCompress - encapsulates XML compression functionality.
-
XMLDBAccess - extension of DBAccess bean to support
the XMLType column (in which XML documents are stored in an Oracle database
-
table).
The following beans have been deprecated in this release.
These beans are no longer part of xmlcomp.jar. They are archived
in xmldemo.jar.
-
XMLSourceView
-
XMLTreeView
-
XMLTransViewer
-
DBViewer
The oracle.xml.transviewer.DBAccess bean has been deprecated, please use
oracle.xml.dbaccess.DBAccess instead.
2.5 XML Pipeline Processor
Oracle XML Pipeline Processor is built upon the XML Pipeline Definition
Language Version 1.0, W3C Note 28 February 2002. The processor can
take an input xml pipeline document and executes the pipeline processes
according to the derived dependencies. The pipeline document is an xml
document, and specifies the processes to be executed in a declarative manner.
In addition to the Pipeline Processor, we have defined several Pipeline
Processes which can be piped together in a pipeline document.
There are some differences between the W3C Note and this implementation.
They are:
-
The parser processes (DOMParserProcess and SAXParserProcess) are included
in the xml pipeline (Section 1).
-
Currently XML Base is not supported (Section 2.1)
-
Only the final target output is checked to see if it is up-to-date with
respect to the available pipeline inputs. We do not determine whether
the intermediate outputs of every process are up-to-date. (Section
2.2).
-
For the select attribute, anything in between double-quotes "" is considered
to be a string literal.
-
The processor will throw an error if more that one process produces the
same infoset (Section 2.4.2.3)
-
The 'document' element is not supported as it is deemed to be redundant
functionality (Section 2.4.2.8)
2.6 XSQL Servlet
Oracle XSQL servlet combines the power of SQL, XML, and XSLT in the
server to deliver dynamic web content. With XSQL servlet you can:
-
Receive web-based information requests from any client device on the Web,
-
Query an appropriate logical "view" of business data needed by the request,
-
Return the "datagram" in XML over the web to the requester, or optionally
-
Transform the information flexibly into any XML, HTML, or text format they
require
The XSQL servlet processor has the following new features:
-
Support for Multi-Valued Parameters: This allows users to
work with parameters whose values are arrays of strings. The most
common scenario where multi-valued parameters occur is when a user submits
an HTML form containing multiple occurrences of input controls that share
the same name.
-
Conditionally Execute Actions or Include Content with xsql:if-param:
The new <xsql:if-param> action
allows you to conditionally include the elements and/or actions that are
nested inside it if some condition is true.
-
New Commit="No" Flag on Actions That Performed an Implicit Commit:
The <xsql:delete-request, xsql:insert-request>,
xsql:insert-request, and <xsql:insert-parameter>
action elements each takes a new optional commit attribute to control whether
the action does an implicit commit or not.
-
Optionally Set an Error Param on Any Built-in Action: It
is often convenient to know whether an action encountered a non-fatal error
during its execution.
-
Use Your Servlet Container's DataSource Implementation: As
an alternative to defining your named connections in the XSQLConfig.xml
file, you may now alternatively use the datasources available through your
servlet container's implementation of JDBC datasources.
-
Provide Custom XSQLErrorHandler Implementation: A new interface
is introduced in this release oracle.xml.xsql.XSQLErrorHandler
that allows developers to achieve a programmatic way to control how errors
are reported to be able to customize the treatment of the errors.
The error code returned by XSQLError.getErrorCode() has changed to
25NNN instead of NNN. The error code format also has changed to XML-25NNN.
-
Provide Custom XSQLLogger Implementation: Two new interfaces
are introduced in this release oracle.xml.xsql.XSQLLoggerFactory
and oracle.xml.xsql.XSQLLogger that allow developers to achieve
to log XSQL page requests.
-
Override the Default Name of of the XSQLConfig.xml file:
Customers have requested a way to override the default XSQLConfig.xml
file name so that they can easily provide different configuration files
for test and production environments, for example. This releases introduces
two ways to override the name.
-
By setting the Java System property xsql.config
-
By defining a servlet initialization parameter xsql.config
-
Support for Apache FOP 0.20.3: If you need to render PDF
output from XSQL pages, this release supports working with the 0.20.3 release
candidate of Apache FOP.
-
Set Preserve Whitespace Config Option: It is now possible
to control whether or not the XSQL Page Processor uses the Oracle XML Parser
to parse XSQL page templates and XSLT stylesheets with whitespace preserving
mode.
2.7 Oracle TransX Utility
TransX is a data transfer utility that allows you to populate your database
with multilingual data. It uses XML to specify the data so you can take
advantage of easy data transfer from XML to the database, a simple data
format that is intuitive for both developers and translators, and validation
capability that makes it less error prone.
2.8 Oracle XML SQL Utility
XML-SQL Utility (XSU) is utility can transform data retrieved from object-relational
database tables or views into XML and insert the data in XML into the appropriate
columns/attributes of a table or a view based on a canonical mapping.
3 XDK C/C++ Components
Oracle XDK C/C++ components are built on W3C Recommendations. The list
of currently supported standards are:
3.1 XSLT Virtual Machine
The XSLTVM Package implements the XSL Transformation (XSLT) language
as specified in W3C Recommendation 16 November 1999. XSLT Virtual Machine
is the software implementation of a "CPU" designed to run compiled XSLT
code. A concept of virtual machine assumes a compiler compiling XSLT stylesheets
to a sequence of byte codes or machine instructions for the "XSLT CPU".
The byte-code program is a platform independent sequence of 2-byte units.
It can be stored, cashed and run on different XSLTVM. The XSLTVM uses the
bytecode programs to transform instance XML documents. This approach clearly
separates compile(design)-time from run-time computations and specifies
a uniform way of exchanging data between instructions. The package includes
two interfaces:
-
XSLTVM Compiler Interface
-
XSLTVM Interface
A typical scenario of using the package APIs has the following steps:
-
Create/Use an XML meta context object.
-
Create/Use an XSLT Compiler object.
-
Compile an XSLT stylesheet and store/cash the result bytecode.
-
Optional. Repeat steps 1 - 2 for all stylesheets.
-
Delete (or preserve for later usage) the Compiler object.
-
Create/Use an XSLTVM object.
-
Set a stylesheet bytecode to the XSLTVM object.
-
Transform an instance XML document.
-
Optional. Repeat step 6 or 5 - 6 as many times as needed.
-
Delete (or preserve for later usage) the XSLTVM object.
3.2 XML Schema Validator
The processor fully supports the functionality stated in the specification
plus "XML Schema 1.0 Specification Errata" as published on:
http://www.w3.org/2001/05/xmlschema-errata.
4 Compatibility
This section contains recommendations on upgrading to this release.
4.1 XDK Java components upgrade
-
The XDK Java components in this release have several fixes for J2EE conformance
and XML 1.0 Conformance Test Suite. Some of the changes resulted in change
in behavior w.r.t to previous release. A few of them are listed below:
-
The default value of preserve whitespace [XMLParser.setPreserveWhitespace()]
is now dependent on the presence of DTD. If DTD is present, the default
is 'false', else it is 'true'. Earlier the default was always false.
-
getPrefix, getNamespaceURI, and getLocalName return
'null' instead of '""' (empty string), when not present in the element
or attribute, or if the node was created using DOM 1.0 methods.
-
The Java Class Generator is deprecated and replace by the JSR-31 implementation
of XML Data Binding. The runtime will be supported, the Java classes generated
in older releases will continue to work.
-
Custom XSQLErrorHandler: The error code returned by XSQLError.getErrorCode()
has changed to 25NNN instead of NNN. The error code format also has changed
to XML-25NNN.
-
The PL/SQL wrapper for parsing and transformation are deprecated.
4.2 XDK C/C++ components upgrade
-
Previously, the NLS data environment variable setting was ORA_NLS33; it
has now been changed to ORA_NLS10.
-
There is now only one library and DLL for the C/C++ XDK. This is libxml10.a
for Unix platforms and oraxml10.lib and oraxml10.dll for Windows platforms.
-
A new C API is provided in xml.h and a new C++ API is provided in xml.hpp.
This replaces the old C API in oraxml.h and the old C++ API in oraxml.hpp;
note that those interfaces are deprecated.
4.3 New C++ API and Old C++ API
This release
includes new C++ API (see xml.hpp and xmlctx.hpp). The primary difference
of new API is an introduction of interfaces to various XDK tools. These
interfaces will replace old C++ API in future releases. The mapping of
old C++ classes into new C++ interfaces is as follows:
Class
XMLParser->DOMParser
and SAXParser interfaces (abstract classes)
DOM classes
(Node, etc.)->References
to DOM nodes (NodeRef, AttrRef, etc.)
Class
XSLProcessor->Interfaces
(abstract classes)Xsl::Transformer,
Xsl::CompTransformer, Xsl::Compiler
Class
XPath->Interfaces
(abstract classes) XPath::Processor, XPath::CompProcessor, XPath::Compiler
Class
XMLSchema->Interface
(abstract class) SchemaValidator
5. Known Bugs
-
Bug #3346571: The function org.xml.sax.EntityResolver.resolveEntity()
is called with wrong arguments during XML Schema validation using JAXP.
The function is used for resolving schema imports/includes during schema
compilation and for resolving schema location attribute in the instance
XML document.
-
Class oracle.xml.parser.v2.XSLNode and oracle.xml.parser.v2.XPathException
are incorrectly documented as public. The use of these classes is
not supported.
-
Interface oracle.xml.parser.v2.XSLConstants is incorrectly documented
as public. The use of constants defined in this interface is not
supported.
-
Constants TREE_POSITION_* defined in oracle.xml.parser.v2.XMLNode
are incorrect and will be removed in the next version.
-
Links to DOM Level 3.0 Validation specification in all classes of org.w3c.dom.validation
package are incorrect. The correct link should be to the candidate recommendation
at http://www.w3.org/TR/2003/CR-DOM-Level-3-Val-20030730
-
The following APIs in org.w3c.dom.validation package are incorrectly documented:
-
DocumentEditVal.getContinuousValidityChecking() returns boolean instead
of short.
-
DocumentEditVal.setContinuousValidityChecking() accepts boolean instead
of short.
-
ElementEditVal.getAllowedFirstChildElements() is renamed to getAllowedFirstChildren().
Please see specific sections for additional known issues.