Chapter 2. Application development with DB2 pureXML 
65
– schemalocation: Namespace of the primary XML schema. This parameter 
is of the type VARCHAR(1000). 
– content: Content of the XML schema document. This parameter is of the 
type BLOB(30M). This is a non-nullable parameter.
– docproperty: Content of the property document associated with the 
schema. This parameter is of the type BLOB(5M).
 SYSPROC.XSR_ADDSCHEMADOC
Use this stored procedure to add the XML Schema documents to the primary 
schema:
XSR_ADDSCHEMADOC (rschema, name, schemalocation, content, 
docproperty)
The explanations for the terms in the command are:
– rschema: Relational schema for XML schema
– name: Relational Schema name for primary XML schema
– schemalocation: Namespace for the XML Document
– content: Content of the XML document as a BLOB variable
– docproperty: Property document associated with the XML schema 
document
 SYSPROC.XSR_COMPLETE
Use this procedure to complete the registration:
XSR_COMPLETE(rschema, name, schemaproperty, isusedforshred)
The terms in the command are explained as follows:
– rschema: Relational schema for the XML schema.
– name: Relational identifier of the primary XML schema.
– schemaproperty: An input argument of type BLOB (5M) that specifies 
properties, if any, associated with the XML schema. The value for this 
argument is either NULL, if there are no associated properties, or an XML 
document representing the properties for the XML schema.
– isusedforshred: The value for this parameter is true if the schema is used 
for decomposition, otherwise, the value is false.
2.2.7  Annotated XML schema decomposition
XML decomposition or 
shredding
is the process of breaking down an XML 
document into columns of relational tables. Consider that your organization can 
have an existing relational database repository and business applications built on 
Create thumbnail jpg from pdf - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
enable thumbnail preview for pdf files; generate thumbnail from pdf
Create thumbnail jpg from pdf - VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
view pdf thumbnails; html display pdf thumbnail
66
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
top of this data, and you want to capture new data coming as XML and use it with 
existing applications. Consider another case of a need to shred XML documents 
conforming to different XML schemas in a single relational table. Using the new 
XML decomposition feature of DB2 Express-C V9 is the right choice for both of 
these situations.
XML decomposition 
XML decomposition can be helpful because:
 It can break one large XML document into fragments that can be stored in 
column types such as XML, CLOB, VARCHAR, BLOB, and so on.
 It can shred multiple items into the same tables-column pair.
 It can automatically detect one-to-many relationships between columns 
mapped to the same table.
 It performs type conversions from an XML schema type to DB2 type.
 It can validate during shredding.
 It can specify custom expression on contents before insertion.
 It can specify path conditions, for example, shred <b> only if the element is in 
path /a/b.
 It can specify conditions on tuples. 
Performing decomposition 
To decompose an XML data, follow these steps:
1. Create the tables (relational schema) into which you decompose the XML 
data.
2. Annotate your XML Schema with mapping information:
– Annotate manually.
– Use DB2 Developer Workbench.
– Migrate existing DADs to Annotated XML Schema using tool.
3. Register it in the XML Schema Repository via a CLP command.
REGISTER XMLSCHEMA ’http://myOrderSchema/order.xsd’ FROM 
’file://c:/temp/order.xsd’ AS user1.myOrderSchema COMPLETE ENABLE 
DECOMPOSITION
4. Register via the stored procedure.
a. Set the value of the “isusedforshred” to true.
5. Register via the JDBC function.
6. Decompose XML documents via the CLP command.
VB.NET Image: How to Draw .NET Graphics Using RasterEdge .NET
If True Then Dim LoadImage As New Bitmap("C:\1.jpg") Dim Ellipse We are dedicated to provide powerful & profession imaging controls, PDF document, tiff files
pdf thumbnails in; create thumbnail jpeg from pdf
VB.NET Image: Visual Basic .NET Guide to Draw Text on Image in .
Create a VB.NET imaging application in your Visual Dim LoadImage As New Bitmap("C:\1.jpg") Dim Text powerful & profession imaging controls, PDF document,
pdf file thumbnail preview; how to show pdf thumbnails in
Chapter 2. Application development with DB2 pureXML 
67
DECOMPOSE XML DOCUMENT c:\mydoc.xml XMLSCHEMA john.myschema 
7. Decompose documents by calling the stored procedure.
Choose SP depending on the size of the document to be shredded:
< 1 MB, < 10 MB,  <25 MB, 50 MB, <75 MB, < 100 MB
XDBDECOMPXML
XDBDECOMPXML10MB
XDBDECOMPXML25MB
XDBDECOMPXML50MB
XDBDECOMPXML75MB
XDBDECOMPXML100MB
We recommend the new Annotated schema decomposition feature of DB2 9 
over the old XML Extender shipped with previous releases of DB2 because the 
new technique is much faster if XML schema is used, and it has more mapping 
constructs and other features. However, if you use old XML Extender to map and 
shred documents into DB2, you might be interested in a migration document 
published on the IBM developerWorks® Web site:
http://www.ibm.com/developerworks/db2/library/techarticle/dm-0604pradha
n/
This article also provides DAD mapping techniques and a schema conversion 
utility. The DAD to annotated XML schema converter utility helps users convert 
their XML schemas to annotated XML schemas based on the mapping rules 
described in the DAD. The XML schema and DAD must describe the same set of 
XML documents, although it is possible and acceptable that the XML schema 
can describe a super set of documents described by the DAD. Users who do not 
have an XML schema can easily generate XML schemas from corresponding 
DTDs and even XML documents by using tools available freely on the Internet. 
The DAD to annotated XML schema converter tool can then take the XML 
schema and the DAD as input to produce an annotated XML schema.
The tool supports import, include, and redefine construct of the XML schema. In 
other words, if an XML schema is spread across many XML schema documents 
through import, include, or redefine, only the path for the primary schema 
document, the document through which all XML schema documents can be 
Tip: The tables and columns must preexist before the annotated XML schema 
is enabled for decomposition. All missing objects (tables or columns) to which 
the XML schema refers are reported as errors. Also the CLP command 
automatically calls the correctly sized stored procedure depending on the size 
of the XML document. If a stored procedure with 100 MB is called for 
documents smaller than 1 MB, then the application’s performance might be 
adversely affected due to high memory consumption.
XDoc.HTML5 Viewer for .NET, All Mature Features Introductions
PowerPoint: PPT, PPTX, PPS, PPSX; PDF: Portable Document Raster Image Files: BMP, GIF, JPG, PNG, JBIG2PDF fast speed with the help of thumbnail, page navigate
.pdf printing in thumbnail size; pdf thumbnail fix
C# powerpoint - Convert PowerPoint to JPEG in C#.NET
Pages. Annotate PowerPoint. Text Search. Insert Image. Thumbnail Create. PDF in WPF, C#.NET PDF Create, C#.NET will name the converted JPEG image file Output.jpg.
disable pdf thumbnails; how to make a thumbnail of a pdf
68
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
reached through either import, include, or redefine, is needed. The tool 
annotates element or attribute declarations across schema documents. Note that 
since DADs do not support namespaces, it is impossible to have the use of an 
import construct in this scenario.
For more information about different annotation techniques for the new XML 
decomposition, refer to DB2 XML Guide, SC10-4254. 
2.2.8  XML query support
For querying XML values, DB2 supports XQuery language, which you can use in 
conjunction with SQL to retrieve data from the XML columns. So, along with the 
SQL interface, DB2 provides another interface, XQuery, to query the XML 
values. These interfaces interact with each other using SQL or XML functions. 
Using these functions, XQuery can be embedded into an SQL statement to fetch 
the part of the XML document from each row of the SQL statement result.
To apply the pure XQuery on a sequence of XML documents fetched from the 
database, DB2 provides resource functions to fetch the XML values.
This section discusses the following:
 Functions used to embed SQL statement in an XQuery (XML source 
functions for XQuery)
 Writing XQuery
 Function used to embed XQuery statements in SQL (SQL or XML functions)
XML source function
DB2 XQuery can be applied either on the data stored in the XML column of the 
tables or an XML-created document using the constructor functions. For applying 
XQuery on XML column data, XML values must be fetched from the column to 
create a sequence of XML values. DB2 provides the following function to create 
a sequence of XML values by fetching the data from XML columns.
xmlcolumn
The
xmlcolumn
function takes the qualified name of the XML column and returns 
the sequence of XML documents stored in the XML column.
The syntax for the xmlcolumn function is: 
db2-fn:xmlcolumn(‘<schema name>.<table name>.<column name>’);
Default value for the schema is the current schema.
C# Word - Convert Word to JPEG in C#.NET
Text Search. Insert Image. Thumbnail Create. Convert Word to JPEG. Annotate PDF in WPF, C#.NET PDF Create, C#.NET name the converted JPEG image file Output.jpg.
thumbnail pdf preview; create thumbnail jpg from pdf
How to C#: Modify Image Bit Depth
Tiff Edit. Image Thumbnail. Image Save. Advanced Save Options. Save Create an image processor with ImageProcess object. the 24 bits per pixel image input.jpg to 8
pdf files thumbnails; show pdf thumbnails
Chapter 2. Application development with DB2 pureXML 
69
Example 2-8 gives the example for an xmlcolumn applied on the info column of 
the movie table.
Example 2-8   xmlcolumn applied on info column of the movie table
xquery db2-fn:xmlcolumn('MOVIES.INFO')
sqlquery
Instead of querying all the XML values in an XML column (as in the case of 
xmlcolumn functions), we can only query a set of XML values based on a 
condition in a SELECT statement using the 
sqlquery
function, for example, 
querying only the information regarding the movie with ID value 123. For this 
purpose, the 
sqlquery
function
provides you with the option to give the SQL full 
select as an input to the function instead of just the column name. If you give the 
full select as an input to this function, you should select XML values only. The 
function returns the concatenation of all the values selected by the full select.
Example 2-9 shows how to use the sqlquery functions to select the XML values.
Example 2-9   sqlquery
xquery db2-fn:sqlquery('select info from movies where id=123')
Writing XQuery
The XQuery language queries the XML data. XQuery works on a sequence of 
XML documents generated by either using the resource functions.constructor 
function or created as an intermediate result of another XQuery. Use XQuery, 
along with SQL/XML functions, to query the XML documents stored in the DB2 9 
database.
Tip: DB2 is case insensitive and treats all the table and column names in 
capital letters while XML and XQuery are case sensitive. The resource 
functions previously discussed are XQuery interface functions so all the table 
names and column names should be passed to these functions using capital 
characters or letters. Passing the object names in lower case letters can result 
in an undefined object name error.
Tip: xmlcolumn and sqlquery are xquery interface functions and are case 
sensitive. Trying to use these functions in upper case letters results in an 
error.
VB.NET Image: PDF to Image Converter, Convert Batch PDF Pages to
and non-professional end users to convert PDF and PDF/A documents to many image formats that are used commonly in daily life (like tiff, jpg, png, bitmap, jpeg
pdf thumbnail creator; view pdf thumbnails in
C# Image: How to Add Customized Web Viewer Command in C#.NET
& file formats (PDF, Word, TIFF, PNG, JPG, GIF, BMP to control the width of the displaying thumbnail of the interested in starting to integrate and create a web
how to view pdf thumbnails in; enable pdf thumbnail preview
70
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
Paths and predicates
XQuery queries the XML data based on the path of the nodes in the XML 
hierarchical structure. The nodes in the XML document relate to each other. The 
relationships that are supported between two nodes are:
 Child
 Attribute 
 Descendant
 Parent
 Self
 Descendant or self
You can query an XML node based on these relationships by providing the path 
of the node in the XML value. 
Example 2-10 shows a small query, which select all movies from the 
MOVIES.INFO table. A path based on the previous relationship is used to reach 
the title node in the XML value.
Example 2-10   Axis and path in XQuery
xquery db2-fn:xmlcolumn('MOVIES.INFO'))/movie/heading/title
The forward slash (/) in the query indicates the next step in the path followed by 
the axis (relationship) to move and the node name.
The query in Example 2-10 uses the relationship name to indicate the next step 
or direction in the path. This format is called the 
abbreviated version
. There is 
also the unabbreviated format, which uses the name of the relationship to 
indicate the next step. Table 2-3 compares the syntax between the unabbreviated 
and abbreviated formats. The abbreviated format that is defined for each 
relationship reduces the size of the query and is the commonly used format. 
Table 2-3   Abbreviated and unabbreviated syntax
Abbreviated syntax
Unabbreviated syntax
dept
/dept/emp
child::dept
/child::dept/child::emp
/@id
/department/emp/@id
/attribute::id
/child::department/child::emp/attribute::id
//name
/child::dept//name
/descendant::name
/child::dept/descendant::name
VB.NET Image: Tutorial for Flipping Image Using Our .NET Image SDK
Image SDK, an image (including BMP, PNG, JPG, etc) can made correctly, users are able to create a VB powerful & profession imaging controls, PDF document, tiff
show pdf thumbnail in; pdf thumbnail preview
C# Image: How to Draw Text on Images within Rasteredge .NET Image
Then, you are supposed to create a project Bitmap LoadImage = new Bitmap("C:\\1.jpg"); Graphic Text powerful & profession imaging controls, PDF document, tiff
generate pdf thumbnails; create pdf thumbnails
Chapter 2. Application development with DB2 pureXML 
71
So the default axis is the child axis. The attribute axis can be represented by the 
at sign (@). Similarly, the descendant axis can be represented by two forward 
slashes (//). 
You can filter the values selected by the path in the Query by a condition in the 
same way we filter the value using the WHERE clause of the SELECT 
statement. You do this by using the predicate in XQuery. Let us select all the 
US-based movies from our movies database. Example 2-11 gives you the query 
to get the required result.
Example 2-11   Predicate in XQuery
xquery 
db2-fn:xmlcolumn('MOVIES.INFO')/movie[movie-details/country='US']/headi
ng/title
The predicate in an XPath starts with a bracket ([) and ends with the closing 
bracket (]). A predicate is evaluated for the given condition and returns true if it 
satisfies the condition. The nodes for which the predicate returns true are 
returned as a result of the current step. The predicate can start from the root 
node or from the relative path with respect to the current node. Putting (/) at the 
start of the predicate makes it start from the root node. A predicate can go up to 
any level in the XML value using the paths and return back to the original node 
after evaluating the condition. The following comparison expressions are 
supported in the predicate:
 Value comparison (ne, eq, gt, ge, lt, le)
These operators are used to compare the values of the same data types. For 
example:
A ne B
A and B should be of the same data type.
 General comparison (!=, =, >, <, <=, >=)
These operators are used to compare the sequence. If any of the sequence 
members satisfy the operator with the corresponding value in the other 
sequence, the operator returns true:
– (1,2)=(2,3) returns true. 
– (1,2)=(3,4) returns false.
Similarly:
– (1,2)!=(2,3) returns true because at least one set is satisfying the 
operator. 
– (1,1)!=(1,1) returns false.
Apart from these, you can use the logical operators AND and OR.
72
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
Constructors and FLWOR expressions
DB2 XQuery allows us to create our own XML structure from the existing XML 
values. To do so, it allows XML style constructors to create the XML document.
Example 2-12 shows a simple query that will get all of the five star movie titles 
(with rating as “*****”) from the table and put into a new tag 
movie-list
.
Example 2-12   Constructors in XQuery
xquery <movie-list rating='*****'> 
{db2-fn:xmlcolumn('MOVIES.INFO')/movie/heading[rating='*****']/ti
tle} </movie-list>
DB2 supports FLWOR expressions to allow you more flexibility to restructure the 
existing XML values. FLWOR means 
for, let, where, order by, 
and
return
.
FLWOR expression syntax is:
FLWORExpr
::=
(ForClause | LetClause)+ WhereClause? OrderByClause? 
"return" ExprSingle 
The
for
and 
let 
clauses in a FLWOR expression generate an ordered sequence 
of tuples of bound variables. While 
for 
iterates over the different values in the 
sequence, the 
let 
clause makes one binding with the value of full sequence
.
The optional 
where
clause serves to filter the tuple stream, retaining some tuples 
and discarding others.
Use the optional 
order by
clause to reorder the tuple stream.
The 
return
clause constructs the result of the FLWOR expression. The return 
clause is evaluated once for every tuple in the tuple stream, after filtering by the 
where
clause and ordered by 
order by
clause, using the variable bindings in the 
respective tuples. 
Tip: When putting an XQuery inside the XML tag, enclose it in braces ({}) to 
indicate that DB2 puts the result of the XQuery in the output; otherwise, DB2 
takes the XQuery as a normal string and we see the normal XQuery text in the 
output.
Chapter 2. Application development with DB2 pureXML 
73
Example 2-13 shows a simple FLWOR expression, which selects the five star 
(rating is “*****”) movie’s name.
Example 2-13   Using FLWOR expression
xquery for $i in db2-fn:xmlcolumn("MOVIES.INFO")/movie/heading where 
$i/rating="*****" return $i/title @
You can nest the for and let clauses of the FLWOR expression to any level. The 
nesting of these clauses lets us combine different parts of the XML value.
Example 2-14 shows the nesting of these clauses in conjunction with the 
constructors. The query selects the movies based on their MPAA rating, 
MPAArating.
Example 2-14   Nesting FLOWOR expression
xquery for $ratings in 
fn:distinct-values(db2-fn:xmlcolumn("MOVIES.INFO")/movie/movie-details/
MPAArating)
let $title:=db2-fn:xmlcolumn("MOVIES.INFO")/movie[movie-details/
MPAArating=$ratings]/heading/title
return <rating type='{$ratings}'>
{$title}
</rating>
Use the order by clause to order the tuples based on the path expression. These 
ordered tuples are then processed by the return clause.
Example 2-15 gives an example of the order by clause. The query selects the 
movie name with the production studio order by the rating and the year of 
production.
Example 2-15   Using order by clause
xquery for $i in db2-fn:xmlcolumn("MOVIES.INFO")/movie order by 
$i/movie-details/year
return 
<movie>
{$i/heading/title}
{$i/movie-details/production/studio}
</movie>; 
Tip: When nesting the for and let clauses, keep in mind that the for clause 
creates one binding for each XML value in the sequence, and the let clause 
creates only one binding for the full sequence. 
74
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
The FLWOR expression can be used to join XML values from different columns, 
too. Example 2-16 gives an example query, which selects the reviews from the 
MOVIEREVIEW table for all the movies from RR Pictures production.
Example 2-16   Joining two XML column values
Xquery for $id in 
db2-fn:xmlcolumn('MOVIES.INFO')/movie[movie-details/production='RR 
Pictures']/@id
let 
$title:=db2-fn:xmlcolumn('MOVIES.INFO')/movie[@id=$id]/heading/title
return
<movie title = '{$title}'>
{
for $review in 
db2-fn:xmlcolumn('MOVIEREVIEW.REVIEW')/movie[@id=$id]/reviews
return $review
</movie>@
SQL/XML functions
The XQuery and SQL interfaces interact with each other using SQL/XML 
functions. Use these functions to embed the XQuery in the SQL/XML statement 
or SQL in the XQuery statement.
xmlquery function
You typically use this function in the column list of the SELECT statement to 
select a part of the document instead of the full value. This function is useful 
when you need to select the part of the XML value based on the condition on a 
rational column. Another significant advantage of this function is that it allows 
passing the relational column to the XQuery via its 
passing by
clause. The table 
name for the column, to which the passing by clause refers, should be present in 
the FROM clause of the SELECT query.
Example 2-17 on page 74 gives an example for xmlquery function. The function 
selects the movie title with id=123.
Example 2-17   Using xmlquery function
select xmlquery('$d/movie/heading/title' passing movies.info as "d") 
from movies where id=123
xmlquery function returns the single XML value for each row selected by the 
SELECT statement. The result of the xmlquery function should be a single XML 
Documents you may be interested
Documents you may be interested