XML, XSLT, XPath, XQuery

Document Sample
XML, XSLT, XPath, XQuery Powered By Docstoc
					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