Errata

Building Oracle XML Applications

Errata for Building Oracle XML Applications

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
Printed Page 13
Figure 1-4

The contents of Figure 1-4 are not identical to those in the preceding XML fragment on the prior page. In the Text Document,
<ticker>WEBM</ticker> should read <ticker exch="NASDAQ">WEBB</ticker>,
and <ticker>GE</ticker> should read <ticker exch="NYSE">GE</ticker>. The
exch nodes are also missing from the Information Set in the Figure.
This makes it hard to understand Example 1-2, which uses this fragment
for input, but contains
<xsl:for-each select="/transaction/bug[ticker/@exch='NASDAQ']">.

Anonymous   
Printed Page 31
Item 4

should be "hyphens" instead of "hypens" in line that contains "<!-- Illegal
for comment to contain two hypens -- like this -->"

Anonymous   
Printed Page 75
In the first paragraph, 6th line:

"another XSLT stylesheet to transform the document ..."

should read:

"another XSLT stylesheet SunJavaFAQ-to-FAQTABLE.xsl (in italics)
to transform the document ..."

Anonymous   
Printed Page 75
ROWSET/ROW example xslt in the middle of the page

Add these lines as the first two lines of the example:

<?xml version = 1.0?>
<!-- SunJavaFAQ-to-FAQTABLE.xsl:
Transform XML into ROWSET/ROW format -->

Anonymous   
Printed Page 110
Step 3 From top

For Oracle 9i, OTN now requires you to run "xdkload" from the bin directory
where you uncompress the tar.gz file. I've not been completely successful
in installing this however. Do you have any updates pertaining to this?

Anonymous   
Printed Page 123
Example 5-6

This and several other examples will not work with the most recent version
of the Parser from Oracle. I had installed this new version and I was
getting errors as the API has changed. I dropped all the packages and
followed the instructions on how to install the parser for 8.1.7 and
everything runs great.

In order to use XML Parser for PL/SQL, you need to run

loadjava $ORACLE_HOME/lib/xmlplsql.jar

and run

sqlplus xmlbook/xmlbook $ORACLE_HOME/xdk/plsql/parser/bin/load.sql

Anonymous   
Printed Page 135
between END LOOP; and END; in PROCEDURE store( doc xmldom DOMDocument)

on page 135 Missing COMMIT;
between END LOOP; and END; in PROCEDURE store( doc xmldom DOMDocument)

As a result, if you query from another SQL session 'select * from ins_claim' doesn't return row for second claim 77804.

Yet even without explicite 'COMMIT' anywhere or 'EXIT' the first row 77805 still get commited!?

Anonymous   
Printed Page 158-246

http://ws5.olab.com is no longer valid. Use http://ws5.olab.oracle.com/

Anonymous   
Printed Page 159
In the first line, while calling xml_http.get(....), third argument,

proxyServer, should not be called. If we call proxyServer, the code does
not work. Once I removed proxyServer, the code started working.

Anonymous   
Printed Page 159
line (2)

Comment on the following from another reader:

Anonymous   
Printed Page 160
PL/SQL example starting with DECLARE

It appears that the PL/SQL code is incomplete. IMHO the correct version woulde be:

---
DECLARE
queueTableName VARCHAR2(36) := 'xml_msg_queuetable';
queueName VARCHAR2(36) := 'xml_msg_queue';
BEGIN

BEGIN
dbms_aqadm.stop_queue(queueName);
dbms_aqadm.drop_queue(queueName);
dbms_aqadm.drop_queue_table(queueTableName );
EXCEPTION WHEN OTHERS THEN NULL;
END;

dbms_aqadm.create_queue_table(queue_table => queueTableName,
queue_payload_type => 'RAW',
storage_clause=> 'pctfree 20
tablespace users, pctused 80');
dbms_aqadm.create_queue(queueName,queueTableName);
dbms_aqadm.start_queue(queueName);

END;
/

-----

i.e. I've added the lines
dbms_aqadm.stop_queue(queueName);
dbms_aqadm.drop_queue(queueName);

in order to stop and remove the queue itself when the queue table is to be droppend.

Also, IMO it is better not to create the queue in the system tablespace,, so I' ve added

storage_clause=> 'pctfree 20 tablespace users, pctused 80');
in the call to create_queue.

This is an excellent book. What I would like to see in the next edition is coverage of the Oracle support for the Java Message Service (JMS) and the way in contrast to the native AQ interface.

Anonymous   
Printed Page 208
3rd section of the dbms_java package example

xml.us.oracle.com no longer exists. This makes all the excercises in chapter 6 useless.

Anonymous   
Printed Page 239
Example 6-24 second line

c.getResourceAsStream("Connections.xml")
should read
c.getResourceAsStream("/Connections.xml")
otherwise the code fails because the class can't find the connections.xml file

Anonymous   
Printed Page 563
In the middle of the page, the URL

http://xmlapps/enpdept.ssql?id=7893

should be:

http://xmlapps/empdept.xsql?id=7893

Anonymous   
Printed Page 744

- in funcunction transformToDOM(source xmldom.DOMDocument, ...
....
BEGIN
...
RETURN xmldom.makeDocument(xmldom.appendChild(root, result));
xslprocessor.freeProcessor(engine);
EXCEPTION

call to xslprocessor.freeProcessor(engine) will not be done, just because RETURN
statement is going before procedure's call.

[examples] I've found a couple of bugs in the Chapter 12 setup file,
create_ch12_tables.sql.

It defines a type 'point' with four members which conflicts with a similar
type created in the file create_ch8_tables.sql, which only has two members.

There is also a problem with the sequence for author_table. It's created as
AUTHSEQ at the start of create_ch12_tables.sql , but create-authorseq.sql
uses authorseq, as follows:
drop sequence authorseq;
create sequence authorseq start with 2000;

I fixed the former by defining a new type Point4, and the latter by changing
AUTHSEQ to authorseq and got a clean run. But I don't know if it's going to
stay up. I also added a bunch of DROPs, but don't really know if they
helped as I'm very new to PL-SQL.

Anonymous