0% found this document useful (0 votes)
16 views34 pages

Fsfs D Asd Asda

dad dassd ad asda asdasd das as das as das dasasasdasda sdasdasd

Uploaded by

Sda Ad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views34 pages

Fsfs D Asd Asda

dad dassd ad asda asdasd das as das as das dasasasdasda sdasdasd

Uploaded by

Sda Ad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

Introduction to XML Database Technologies

Matthew Egbert

Outline of Talk
4XML Databases
Discuss XML in the context of Databases
Relational Databases vs. XML Databases

4XML Database Languages


XPath
XUpdate

Databases
4A database is a collection of data that is
organized so that its contents can easily be
accessed, managed, and updated
4The most prevalent type of database is the
relational database, a tabular database in which
data is defined so that it can be reorganized and
accessed in a number of different ways

Microsoft Access
Oracle
Sybase
IBMs DB2

Relational Databases and


XML
4Relational databases organize data in a tabular,
or grid-like fashion, and use relational linking in
order to expose hierarchical constraints on the
data[8]
4XML documents are organized as hierarchical
tree structures

Using a RDB to store XML


4Unfortunately, while it's generally very easy to
map relational data into XML, trying to map XML,
which can be very complex and freeform, into
relational data can be incredibly difficult and
lossy [8]
4This means ugly routines for mapping XML data
structures into RDB structures
If you must do this, there is documentation available to you at
http://www.xml.com/pub/a/2001/06/20/databases.html
Fortunately, there is a simpler alternative for most of us

Xindice
4Xindice is a native XML-Database
4The benefit of a native solution is that you don't
have to worry about mapping your XML to some
other data structure. You just insert the data as
XML and retrieve it as XML[which is] especially
valuable when you have very complex XML
structures that would be difficult or impossible to
map to a more structured database. [2]

Xindice (cont.)
4Xindice stores and indexes compressed XML
documents
4It was not designed to store and manage single
monster sized documents, where one document
is treated as a set of mini documents. It was
specifically designed for managing many small to
medium sized documents. [8]

Interacting with an
XML Database
4Because native XML databases store data in a
different way from relational databases, there are
different languages used to query and update the
database
4Query
To retrieve a specified portion of a database

4Update
To add or modify a portion of a database

XLanguages
4For relational databases, the Structured Query
Language (SQL) is often used to perform both
queries and updates
4For Xindices (and other XML native databases):
queries are specified using the XPath language
updates are defined using the XUpdate language

4Lets take a look at both XPath and XUpdate in


more detail

XPath

Querying the
Database with XPath
4XPath is a (W3C-standard) language used to
address a section of an XML document
4XPath uses a compact, non-XML syntax to
facilitate use of XPath within URIs[6]
4A single string of XPath can address any section
of an XML document
4The next few slides show the basics of XPath by
giving some basic examples

11

Some example XPath[5]


4 If the XPath string starts
with // then all elements in
the document which fulfill
the criteria which follow
the // are selected.
4 * selects all elements
located by the preceding
path
4 //*
Select all elements

12

<AAA>
<CCC>
<DDD>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB>
</BBB>
</CCC>
</AAA>

Example XPath[5]
4//DDD/BBB
Select all elements BBB
which are direct children of
DDD

4If the XPath was


/DDD/BBB, no nodes
would be selected
because there is no
root DDD element
which contains a BBB
element
13

<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>

Example XPath[5]
4/*/*/*/BBB
Select all elements BBB
which have exactly 3
ancestors

14

<AAA>
<XXX>
<DDD>
<BBB/>
<BBB/>
<EEE/>
</DDD>
</XXX>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>

Some example XPath[5]


4/AAA/BBB[1]
Select the first BBB child of
element AAA

15

<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>

An example XPath
Function[5]
4/AAA/BBB[last()]
Select the last BBB child of
element AAA
This is an example of an
XPath function

16

<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>

An example XPath
Function[5]
4//*[count(BBB)=2]
Select elements which have
two children BBB

17

<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
<EEE>
<DDD/>
</EEE>
</AAA>

Combining XPath[5]
4| is used to combine
XPath queries
4//CCC | //BBB
Select all elements CCC and
all elements BBB

18

<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
<EEE>
<DDD/>
</EEE>
</AAA>

Some example XPath[5]


4/AAA/BBB/descendant::*
Select all descendants of
/AAA/BBB

19

<AAA>
<BBB>
<DDD>
<CCC>
<DDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
<CCC>
<DDD>
<EEE>
<DDD>
<FFF/>

Some example XPath[5]


4//DDD/parent::*
Select all parents of DDD
element

20

<AAA>
<BBB>
<DDD>
<CCC>
<DDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
<CCC>
<DDD>
<EEE>
<DDD>
<FFF/>

Some example XPath[5]


4/AAA/BBB/DDD/CCC
/EEE/ancestor::*
Select all elements given
in this absolute path

21

<AAA>
<BBB>
<DDD>
<CCC>
<DDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
<CCC>
<DDD>
</DDD>
</CCC>
</AAA>

XPath Operators and


Functions [5]
4The div operator performs floating-point division
4The mod operator returns the remainder from a
truncating division
4The floor function returns the largest integer that
is not greater than the argument
4The ceiling function returns the smallest integer
that is not less than the argument

22

Using XPath Functions and


Operators [5]
4//BBB[position() mod 2 = 0 ]
Selects every second BBB node

23

<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
<CCC/>
<CCC/>
<CCC/>
</AAA>

Java XPath Query


4Xindices API directly supports XPath queries
4Performing such a query involves a few simple
lines of java
String xpath = new String();
xpath = "//person/name/*";

//the XPath string

XPathQueryService xp_service =
col.getService("XPathQueryService", "1.0");
ResourceSet resultSet = xp_service.query(xpath);

24

XUpdate

XUpdate Overview
4XUpdate is an XML-syntax that is used to specify
modifications of XML documents
4It is part of the XML:DB Project
(http://www.xmldb.org/xupdate/)
4XUpdate uses XPath expressions to select nodes
for processing
4Lets look at an example

26

Some example XUpdate[7]


4This example XUpdate adds a middle name
element before the last name element
<xupdate:modifications version="1.0"
xmlns:xupdate="http://www.xmldb.org/xupdate">
<xupdate:insert-before
select="/addresses/address[@id = 1]/name/last" >
<xupdate:element
name="middle">Lennox</xupdate:element>
</xupdate:insert-before>
</xupdate:modifications>
27

Some example XUpdate[7]


4All XUpdate commands have a select attribute
which uses XPath to specify an XML node to act
upon
<xupdate:modifications version="1.0"
xmlns:xupdate="http://www.xmldb.org/xupdate">
<xupdate:insert-before
select="/addresses/address[@id = 1]/name/last" >
<xupdate:element
name="middle">Lennox</xupdate:element>
</xupdate:insert-before>
</xupdate:modifications>

28

XML Block Append


<xupdate:modifications version="1.0"
xmlns:xupdate="http://www.xmldb.org/xupdate">
<xupdate:append select="/addresses" >
<xupdate:element name="address">
<new_xml_block>
<valid_new_xml_goes_here/>
</new_xml_block>
</xupdate:element>
</xupdate:append>
</xupdate:modifications>

29

A few things you can do


with XUpdate
4Insert Element/Attribute/Comment
4Update Element/Attribute/Comment
4Delete Element/Attribute/Comment
4Rename Element/Attribute
4Update/Delete Text Content of an Element
4Insert XML Block
4Append Element
4Copy a Node
4Move a Node
30

Java XUpdate Update


4Xindices API directly supports XUpdate updates
4Performing such an update involves a few simple
lines of java (which are very similar to those for
XPath queries)
String update=new String();
update = XUPDATE STRING;
XUpdateQueryService xupdate_service =
data.getService("XUpdateQueryService","1.0");
xupdate_service.update(update);
31

Conclusion
4XPath and XUpdate are the XML-Database
languages which are supported by Xindice
4Performing XPath queries or XUpdate updates
using the Xindice API is easy
4XQuery is a developing XML alternative to XPath
(which has the non XML, path-like structure)
More SQL like database queries
Not yet supported by Xindice

32

References
4[2] Xindice homepage
http://xml.apache.org/xindice/
4[5] XPath Tutorial by Miloslav Nic and Jiri Jirat
http://www.zvon.org/xxl/XPathTutorial/General/ex
amples.html
4[6] XML Path Language (XPath) Version 1.0 W3C
Recommendation - 16 November 1999
http://www.w3.org/TR/xpath

33

References (cont.)
4[7] XUpdate Example Use Cases Page
http://www.xmldatabases.org/projects/XUpdateUseCases/
4[8] Xindice FAQ
http://xml.apache.org/xindice/FAQ

34

You might also like