XML, XSLT, XPath, XQuery

XML, XSLT, XPath, XQuery
5 Aug 2002
Introduction

XML (eXtensible Markup Language)
– Holding data

XSLT (eXtensible Style Language Transform)
– Transform one XML to another XML or other text
such as HTML

XPath (XML Path)
– A way to locate items in a XML file

XQuery (XML Query)
– Query on one or more XML file to produce another
XML file
Analogy
XML view
Database view
XML
Data
XSLT
HTML with ASP,JSP
XPath
Referring to a field, such as
Student.id
XQuery
SQL
Semi-structured
structured
Exchange and sharing
storage
Self-describing
RDMS enforced constraint
Properties
Sample XML (link)
<?xml:stylesheet type="text/xsl" href="classical.xsl"?>
<authors>
<author period="Classical">
Specify
<name>Mozart</name>
<nationality>Austrian</nationality>
XSL for display
</author>
<author period="Classical">
<name>Beethoven</name>
<nationality>German</nationality>
</author>
<author period="Baroque">
<name>Bach</name>
<nationality>German</nationality>
</author>
<author period="Romance">
<name>Mahler</name>
<nationality>Austrian</nationality>
</author>
</authors>
DOM Tree
Root Node
Element Node
Text Node
authors
author
period
name
Attribute Node
author
nationality
Classical
name
period
author
nationality
Classical
Mozart
Austrian
Beethoven
period
name
nationality
Bach
German
Baroque
German
Sample XSL (link)
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
XSL version
<HEAD><TITLE>Authors</TITLE></HEAD>
<BODY>
<H1>Composers from Austria</H1>
<TABLE BORDER="1"><TR><TH>Name</TH></TR>
XPath
<xsl:for-each
select="/authors/author[nationality='Austrian']">
<TR><TD><xsl:value-of select="name" /></TD></TR>
</xsl:for-each>
</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
Output (link)
Original XML
Transformed XML
Sample XSL
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<HEAD><TITLE>Authors</TITLE></HEAD>
<BODY>
<H1>Composers from classical period</H1>
<TABLE BORDER="1">
<TR><TH>Name</TH></TR>
<xsl:for-each
select="/authors/author[@period='Classical']">
<TR><TD><xsl:value-of select="name" /> </TD></TR>
</xsl:for-each>
</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
Output
Original XML
Transformed XML
P2P Example (link)
<peer ip=“137.189.89.7”>
<image name=“a.jpg”>
<signature>15</signature>
</image>
<image name=“b.jpg”>
<signature>20</signature>
</image>
<image name=“c.jpg”>
<signature>13</signature>
</image>
<image name=“d.jpg”>
<signature>5</signature>
</image>
</node>
XQuery (link) (xquery)
<result>
{
FOR $i IN document(“index.xml")/peer/image
WHERE $i/signature > “10” AND $i/signature < “16”
RETURN $i
}
</result>
> sample –f index.xml –a index.xml –q query.xqu
<result>
<image filename="a.jpg">
<signature>15</signature>
</image>
<image filename="c.jpg">
<signature>13</signature>
</image>
</result>
Illustration
XQuery
Validating
parser
DTD/
schema
XML
XQuery engine
XML
Browser
XSL
Assist
XPath
XML/
text/
HTML
Possible Application
XML
index file
XML
index file
XQuery
Web/
Gnutella
gateway
XML
Web
XML
index file
XML
index file
XQuery
XML
index file
P2P
Other P2P
client
Other
presentation
method