Introduction to XQuery and eXist Week 17 DSA. DSA - XQuery2 XPath. Hierarchical file systems have been navigable with path expression since Unix –/abc/cde/../../efg.

Slides:



Advertisements
Similar presentations
PHP I.
Advertisements

Java Script Session1 INTRODUCTION.
WeB application development
1 XQuery Web and Database Management System. 2 XQuery XQuery is to XML what SQL is to database tables XQuery is designed to query XML data What is XQuery?
1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects.
Introduction to XQuery and eXist Week 21 DSA. DSA - XQuery2 Refresher on XPath XML databases XQuery Applications –Whiskies (again) –A simple blog The.
XSLT XML DBs, and Schemas Week 18 DSA. The Whisky Case study XSLT can be applied in the client. –Add a xml processing instruction to the xml to bind to.
Native XML Database for Information Systems Chris Wallace ISD3 March 2006.
DSA Semester 2. XML Tagged data Hello A really interesting course, well taught Interchange of data RSS, BPEL4WS, RossettaNet … Structure document representation.
Native XML Database for Information Systems Chris Wallace IS School Research Seminar Feb 2006.
Week 23 - Revision1 Week 23 Revision DSA. Week 23 - Revision2 Agenda Section A: Multiple choice Section B: Problem-oriented questions Topics for revision.
Introduction to XQuery and eXist XQuery workshop April 2006.
Introduction to XQuery and eXist DSA. XSLT Tutorial Problems Bad language : – No ! – for XML schema –Some XSLT engines tolerant of extra tags (permissive),
XML Workshop XSLT. XML Tagged data Hello A really interesting course, well taught Interchange of data RSS, BPEL4WS, RossettaNet … Structure document representation.
1 COS 425: Database and Information Management Systems XML and information exchange.
Multiple Tiers in Action
Dynamic Web Pages Bert Wachsmuth. Review  Internet, IP addresses, ports, client-server, http, smtp  HTML, XHTML, XML  Style Sheets, external, internal,
Mannheim Web 2.0 Systems Development. Plan Being an early-adopter Web 2.0 technologies Mashups Google Earth and kml XQuery and eXist.
UFIEKG-20-2 / 06 / Week 131 Data, Schemas and Applications Term 2 Week 13.
Website Development with PHP and MySQL Introduction.
XML –Query Languages, Extracting from Relational Databases ADVANCED DATABASES Khawaja Mohiuddin Assistant Professor Department of Computer Sciences Bahria.
Introduction to XPath Bun Yue Professor, CS/CIS UHCL.
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide
DAT602 Database Application Development Lecture 15 Java Server Pages Part 1.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
WaveMaker Visual AJAX Studio 4.0 Training Studio Overview.
CSC 405: Web Application And Engineering II 2.1 Web Programming with PHP Introduction to Web programming Introduction to Web programming The programming.
ITD 3194 Web Application Development Chapter 4: Web Programming Language.
Web Application Architecture and Communication. Displaying a Web page in a Browser
Server-side Scripting Powering the webs favourite services.
Web Application Development. Tools to create a simple web- editable database QSEE MySQL (or PHPMyAdmin) PHP TableEditor.
DATABASE and XML Moussa Mané. Learning Objectives ● Learn about Native XML Databases ● Learn about the conversion technology available ● Understand New.
XP New Perspectives on XML, 2 nd Edition Tutorial 10 1 WORKING WITH THE DOCUMENT OBJECT MODEL TUTORIAL 10.
1 PHP and MySQL. 2 Topics  Querying Data with PHP  User-Driven Querying  Writing Data with PHP and MySQL PHP and MySQL.
JQuery Adding behaviour…. Lecture Plan Review of last lesson Adding behaviour –click, mouseover Animation –fade, slideDown Navigation –parent, find, next.
1 CIS336 Website design, implementation and management (also Semester 2 of CIS219, CIS221 and IT226) Lecture 6 XSLT (Based on Møller and Schwartzbach,
OXygen XML Editor Support for eXist DB XQuery debugging. Stefan Vasile
06/10/2015AJAX 1. 2 Introduction All material from AJAX – what is it? Traditional web pages and operation Examples of AJAX use Creating.
Client side web programming Introduction Jaana Holvikivi, DSc. School of ICT.
HTML Hyper Text Markup Language A simple introduction.
HTML. Principle of Programming  Interface with PC 2 English Japanese Chinese Machine Code Compiler / Interpreter C++ Perl Assembler Machine Code.
Java CGI Lecture notes by Theodoros Anagnostopoulos.
Website Design Lecture 1. Outline Introduction to the module Outline of the Assessment Schedule Lecture Static XHTML, client side and server side Why.
Tutorial 10 Programming with JavaScript
JSTL, XML and XSLT An introduction to JSP Standard Tag Library and XML/XSLT transformation for Web layout.
Transforming Documents „a how-to of transforming xml documents“ Lecture on Walter Kriha.
Date : 3/3/2010 Web Technology Solutions Class: Application Syndication: Parse and Publish RSS & XML Data.
Recursive Functions Creating Hierarchical Reports Date: 9/30/2008 Dan McCreary President Dan McCreary & Associates (952) M.
CERN - IT Department CH-1211 Genève 23 Switzerland t DB Development Tools Benthic SQL Developer Application Express WLCG Service Reliability.
Keyword Searching Weighted Federated Search with Key Word in Context Date: 10/2/2008 Dan McCreary President Dan McCreary & Associates
1 Overview of XSL. 2 Outline We will use Roger Costello’s tutorial The purpose of this presentation is  To give a quick overview of XSL  To describe.
Using oXygen 12 with XQuery Using oXygen to build and execute XQuery XQuery applications on eXist Date: April 2011 Dan McCreary President Dan McCreary.
XP New Perspectives on XML, 2 nd Edition Tutorial 8 1 TUTORIAL 8 CREATING ELEMENT GROUPS.
Module: Software Engineering of Web Applications Chapter 2: Technologies 1.
CSC 405: Web Application Engineering II 2.1 Web Programming with PHP Introduction to Web programming Introduction to Web programming The programming language.
IS2803 Developing Multimedia Applications for Business (Part 2) Lecture 2: Introduction to IS2803 Rob Gleasure
HTML Hyper Text Markup Language. The Basics u HTML documents contain “tags” which instruct the Browser software on how to present the information within.
Dr. Abdullah Almutairi Spring PHP is a server scripting language, and a powerful tool for making dynamic and interactive Web pages. PHP is a widely-used,
HTML Hyper Text Markup Language. Agenda Basics Tools Important tags Tables & databases Forms Publishing at Stern.
HTML III (Forms) Robin Burke ECT 270. Outline Where we are in this class Web applications HTML Forms Break Forms lab.
Apache Cocoon – XML Publishing Framework 데이터베이스 연구실 박사 1 학기 이 세영.
Business rules.
XML: Extensible Markup Language
Tutorial 10 Programming with JavaScript
Introduction and Principles
PHP.
Web DB Programming: PHP
Tutorial 6 PHP & MySQL Li Xu
EXTENDING COMPONENTS AND TABLE TRANSFORMATIONS WITH XSL
Presentation transcript:

Introduction to XQuery and eXist Week 17 DSA

DSA - XQuery2 XPath. Hierarchical file systems have been navigable with path expression since Unix –/abc/cde/../../efg i.e. ? Problem –Only child, parent and root can be accessed in one step –Only one node addressable

DSA - XQuery3 XPath.. Solution – extend the path language –select multiple items /abc/cde/../../efg/* //x - all x nodes anywhere in the tree –select a subset of items by appending predicate (filter) –functions in predicate –multiple filters –select items by position /abc[2] short for /abc[position() = 2]

DSA - XQuery4 XPath … Core data type in XPath 2.0 is a sequence of items –Items are atomic values or XML elements –Sequence is flat deep-equal('fred',('fred')) is true deep-equal((‘fred’, ‘fred’), (‘fred’)) is false deep-equal(('fred', ('bill','joe')),('fred', 'bill','joe')) is true –() is the empty sequence count((‘fred’,() )) is 1 Equality between sequences defined as non-empty intersection (‘fred’,’joe’) = ‘joe’ is true (‘fred’,’joe’) = (‘joe’,’bill’) is true (‘fred’,’joe’) eq ‘joe’ is false

DSA - XQuery5 XQuery. Problem –Need to be able to construct a tree as well as select nodes in an existing tree –Need for more complex searches a la SQL Solution 1 – XML addition to existing languages –PHP + Simple XML –XML structures not compatible with language Solution 2 – XSLT –Push (declarative, pattern-matching) or pull processing –XML- based –Two versions 1.0 most common, in Browsers, Xalan 2.0 e.g. Saxon Solution 2 – XQuery –Functional –Pull only –Non XML XQuery 1.0 and XSLT 2.0 share the same XPath 2.0 data model and function library

DSA - XQuery6 eXist Native XML Database Open source Wolfgang Meier is the chief architect Written in Java Deployable in different ways –Embedded in a Java application –Part of a Cocoon pipeline –As web application in Apache/Tomcat –With embedded Jetty HTTPserver (as on stocks) Multiple Interfaces –REST – to Java servlet –SOAP –XML:RPC

DSA - XQuery7 Native XML database Well-formed XML documents can be added to the database They are stored in an efficient, searchable B+ tree structure Documents (files) are organised into collections in a filestore Non-XML resources (XQuery, CSS, JPEG..), etc can be stored as binary

DSA - XQuery8 Distillery Example My Sample Distillery dataSample Distillery Use the eXist demo servereXist demo server Login as guest/guest Create a folder Upload XML files Test queries in the Sandbox Create XQuery scripts in a text editor Upload XQuery script Execute

DSA - XQuery9 Simple Xquery – list1.xql for $d in //Distillery return {$d/Name} {$d/WhiskyDescription}

DSA - XQuery10 Executing an XQuery eXist DB a.xql XQuery Engine parameters html Client Browser eXist: Server Get a.xql parameters servlet fetch a.xql render User clicks link

DSA - XQuery11 Simple XQuery – list2.xql xquery version "1.0"; Name Address {for $w in //Distillery return {data($w/Name)} {data($w/Address)} }

DSA - XQuery12 xquery version "1.0"; Name Address { for $w in //Distillery return {data($w/Name)} {data($w/Address)} } XQuery explained

DSA - XQuery13 XQuery.. Nesting XML and XQuery –XML to XQuery { … } –XQuery to XML … Must be well-formed XML – single root - and handy Constructed structures – XML element or element Position { attribute latitude ’51’, attribute longitude ‘2.5’ } –Sequence ('fred',, 5)

DSA - XQuery14 XQuery.. control constructs are expressions and hence composable –if (cond) then exp else exp –for..let.. where.. order by.. return – FLWOR –function call –variable value ($d) ‘Atomisation’ sometimes needed in output –Element to characters –$d/Name Glenfiddich –data($d/Name) Glenfiddich

DSA - XQuery15 XQuery … Functions and Modules –Typed arguments and return –Recursion –XPath functions –eXist functions Database management HTTP interface.. Functional language –let $x := 5 binds the value 5 to the variable $x –Can’t write iterative code – what’s the output? let $y := 1 return for $x in (1 to 5) let $y := $y * 2 return $y

DSA - XQuery16 XQuery FLWOR expression FLWOR for $x in sequence let $a := expression, $b := expression where condition order by $var return expression –Returns a Sequence of nodes Compare with SQL select columns from tables where condition order by –Returns a Relation (table)

DSA - XQuery17 Search Query Enter a name or part name Match against the Distillery name List the matches

DSA - XQuery18 List 3 let $name := request:request-parameter("name","") return Name Address {for $d in //Distillery[contains(Name,$name)] return {data($d/Name)} {data($d/Address)} }

DSA - XQuery19 An XQuery sticky form The script here has several shifts between XML to XQuery Whole interface in one script –Equivalent to PHP + MySQL.

DSA - XQuery20 let $name := request:request-parameter("name","") return Enter Name or part of Name Name Address { for $d in //Distillery[contains(Name,$name)] return {data($d/Name)} {data($d/Address)} } list4.xql

DSA - XQuery21 Generate a kml overlay Output is kml Need to specify the mime type so that the browser will link to Google Earth (if set up correctly) Or create a Google Map link: db.org/rest//db/chriswallace/whisky/distkml.xqlhttp://maps.google.com/maps?q= db.org/rest//db/chriswallace/whisky/distkml.xql

DSA - XQuery22 Kml declare option exist:serialize "method=xhtml indent=yes media-type=application/vnd.google-earth.kml+xml"; Distilleries of Scotland 2 {for $d in //Distillery return {data($d/Name)} {data($d/WhiskyDescription)} } distkml.xql

DSA - XQuery23 Tools for XQuery on eXist Use a text editor (Notepad, PFE32 or Dreamweaver) Use the admin interface with guest/guest login to create a directory and load all the files – including the XQuery files To run a script, just click on the script in the directory listing – this will run the script (but with no parameters – you can add these in the Browser This will show you the URL to execute it – you can then use this to link from any HTML outside the eXist database. Use the sandbox to test small bits of XQuery and XPath

DSA - XQuery24 eXist on your own machine Simple install from the exist-db site Use the Java client to –load files –move, copy, rename files –edit files in situ (but no Save-as) –execute queries –backup

DSA - XQuery25 Example 2 – see blogblog Periodic Table of Visualizations This collection of diagram types is presented very cleverly but its not very accessible. I copied the XHTML for the page and then loaded it into an eXist database – it is not well- formed XML but its good enough to upload. The links from name to example diagram are embedded in Javascript. Here is the resultresult

DSA - XQuery26 Exercise Some XPath examples to do in the tutorial Then continue with last week’s workshop, developing your own XML model for your chosen subject area. Next week we look at XSLT

DSA - XQuery27 Exercise Some XPath examples to do in the tutorial Then continue with last week’s workshop, developing your own XML model for your chosen subject area. I will talk to each of you to see what subjet you have chosen. Next week we look at XSLT