XML, XSLT, XPath, XQuery
Document Sample


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
Properties
Semi-structured structured
Exchange and sharing storage
Self-describing RDMS enforced constraint
Sample XML (link)
<?xml:stylesheet type="text/xsl" href="classical.xsl"?>
<authors>
<author period="Classical">
<name>Mozart</name> Specify
<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
Attribute Node
author author author
period name nationality period name nationality period name nationality
Classical Classical Baroque
Mozart Austrian Beethoven German Bach 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 XML
Validating
parser
XQuery engine
DTD/
XML
schema
Browser
XML/
XSL text/
HTML
Assist
XPath
Possible Application
XML Web/
index file Gnutella
gateway XML
XML
index file
Web
XQuery
XML
index file
XML
index file Other
XQuery Other P2P
presentation
XML client
method
index file
P2P
Get documents about "