High Performance XML Data Retrieval

Total Page:16

File Type:pdf, Size:1020Kb

High Performance XML Data Retrieval High Performance XML Data Retrieval Mark V. Scardina Jinyu Wang Group Product Manager & XML Evangelist Senior Product Manager Oracle Corporation Oracle Corporation Agenda y Why XPath for Data Retrieval? y Current XML Data Retrieval Strategies and Issues y High Performance XPath Requirements y Design of Extractor for XPath y Extractor Use Cases Why XPath for Data Retrieval? y W3C Standard for XML Document Navigation since 2001 y Support for XML Schema Data Types in 2.0 y Support for Functions and Operators in 2.0 y Underlies XSLT, XQuery, DOM, XForms, XPointer Current Standards-based Data Retrieval Strategies y Document Object Model (DOM) Parsing y Simple API for XML Parsing (SAX) y Java API for XML Parsing (JAXP) y Streaming API for XML Parsing (StAX) Data Retrieval Using DOM Parsing y Advantages – Dynamic random access to entire document – Supports XPath 1.0 y Disadvantages – DOM In-memory footprint up to 10x doc size – No planned support for XPath 2.0 – Redundant node traversals for multiple XPaths DOM-based XPath Data Retrieval A 1 1 2 2 1 /A/B/C 2 /A/B/C/D B F B 1 2 E C C 2 F D Data Retrieval using SAX/StAX Parsing y Advantages – Stream-based processing for managed memory – Broadcast events for multicasting (SAX) – Pull parsing model for ease of programming and control (StAX) y Disadvantages – No maintenance of hierarchical structure – No XPath Support either 1.0 or 2.0 High Performance Requirements y Retrieve XML data with managed memory resources y Support for documents of all sizes y Handle multiple XPaths with minimum node traversals y Support DTD and Schema-based XML documents Extractor for XPath y Stream-based processing utilizing SAX y Support for DTDs and XML Schemas y Implements Publish/Subscribe model for scalability y Handles multiple XPaths simultaneously y Supports XPath 1.0; extended to 2.0 Extractor’s Publish/Subscribe Processing Model XPath Expressions &Content Handlers SAX Extractor Outputs Extractor’s Function Blocks y Initialization: registration of XPaths/Handlers y XPath Compilation: compiles and builds index graphs y XPath Tracking: maintains XPath state and matches doc XPaths with the indexed XPaths y Output: sends matching XPath start/stop events along with the XML data Extractor’s Function Blocks XPath Initialization Output Expressions & Content Handlers Register XPath expressions and the XML Sequences instances of content handlers XMLSequenceBuilder SAX Files DTD/XSD Compile XPath XMLSAXSerializer expressions and build Index graph Registered...... Handler A XML Track XPath and perform ...... SAX XPath matching when SAX receiving SAX events Registered Handler Z ExtractorRuntime Initialization y Registration of absolute XPaths y Support for XML Namespaces for differentiation y Registration of execution handlers using XContentHandler() y Built-in Handlers for ease of use – XMLSequenceBuilder() – XMLSAXSerializer() XPath Compilation y XPath streamability evaluation y Streamable isAll=true/false option – True: Process only streamable XPaths – False: Buffer data as needed y Build XPath Predicate Table y Build Index Tree – XPath Dependency Tree (w/o DTD/XSD) – Data Model Tree (w/ DTD/XSD) using existing Validation engine Compilation of Each XPath Predicate Predicate XPath Evaluation Attributes Status Related to Predicate XPath -1 Value TRUE Location XPath -1 Predicate XPath -2 Predicate XPath-3 FALSE Predicate XPath-4 Value Pending Predicate Table (not-matched, matched, yet-to-be-matched) ... ... ... ... Predicate XPath Evaluation Attributes Status Related to Predicate XPath -1 Value TRUE Location XPath -n Predicate XPath -2 Predicate XPath-3 FALSE Predicate XPath-4 Value Pending Predicate Table (not-matched, matched, yet-to-be-matched) •Also Used for isAll = True condition Runtime XPath Matching y State Machine tokenizes and tracks – In-scope Namespaces – Current Element Name – Current Element Attributes – Node Position Relative to Siblings – Number of Child Elements y Implemented as a Stack XPath Index Tree (w/o DTD/XSD) / X Fake Node for /* A X X Fake Node for // B 4 1 /A/B/C P 2 /A/B/C/D 1 C X 3 /A/B//P X 4 //P 2 5 //P/*/Q 3 D P 5 Q XPath Expressions XPath Dependency Tree Dependency Tree Traversal 1 /A/B/C X Fake Node for /* 2 /A/B/C/D 3 /A/B//P X Fake Node for // 4 //P 5 //P/*/Q / 3 4 A X'' P P X'' X' D 2 DX''X' B 4 P C 1 C X'' X' 1 C X' B B X'' X''' 2 3 A A X'' D P 5 Q XPath Stack Matched Node XPath Dependency Tree Synchronous Data Model Traversal A A 1 1 B F B B F B 2 2 E E C C /A/B/C C 3 C 3 F D F D /A/B/C/D XML Document Tree XML Data Model Extractor Output y XContentHandler() – Execution of Registered Content Handlers y XMLSequenceBuilder() – Built-in Handler – Presents Result Set as XMLSequence Object – Contains a Linked List of XMLItems y XMLSAXSerializer – Built-in Handler – Serializes output to Printwriter or OutputStream Extractor Use Cases y Content Management y Web-Services y XSLT/XQuery Implementation Extractor Content Management Use Case Retrieve XPath Expressions XML system/public ID or XML Schema Location URL Pre-Process DTD/XML Schema: JDBC XPaths Table XPath Expressions: /a/b /a/b/@c Initialize ... XML Registered Handler A MetaData Tables SAX JDBC Parser ...... Extractor Registered Handler Y Connection Pool Doc Table JDBC Registered Handler Z Oracle Database Process Data using Content Handlers Extractor Web Service Use Case Service Broker Register Data Web Services Subscription using "invoke" WS XPath SOAP Register XPath/ Web Service Web Services Content SOAPClient WS Handlers response SOAP XML Initialize Client 1 ...... SAX Extractor Client 2 Parser Client 3 Clients Subscribing and Receiving the Data Extractor XSLT/XQuery Use Case XSLT Resolving XPath XMLSequnceObject XQuery XPath Bridge Register XPath XML SAX Parser Extractor XMLSequenceBuilder XML Oracle XML Resources •Oracle Technology Network • http://otn.oracle.com • Downloads, Demos, Samples, Papers • XML Support Forum •Oracle Database 10g XML & SQL Design, Build, & Manage XML Applications in Java, C, C++, & PL/SQL • Covers all of Oracle XML technology • BetaBook Forum on OTN • Available in May from Bookstores .
Recommended publications
  • XML Document Parsing: Operational and Performance Characteristics
    COMPUTING PRACTICES XML Document Parsing: Operational and Performance Characteristics Parsing is an expensive operation that can degrade XML processing performance. A survey of four representative XML parsing models—DOM, SAX, StAX, and VTD—reveals their suitability for different types of applications. Tak Cheung Lam roadly used in database and networking applications, the and Jianxun Jason Ding Extensible Markup Language is the de facto standard for the Cisco Systems interoperable document format. As XML becomes widespread, it is critical for application developers to understand the opera- Jyh-Charn Liu tional and performance characteristics of XML processing. Texas A&M University BAs Figure 1 shows, XML processing occurs in four stages: parsing, access, modification, and serialization. Although parsing is the most expensive operation,1 there are no detailed studies that compare • the processing steps and associated overhead costs of different parsing models, • tradeoffs in accessing and modifying parsed data, and • XML-based applications’ access and modification requirements. Figure 1 also illustrates the three-step parsing process. The first two steps, character conversion and lexical analysis, are usually invariant among dif- ferent parsing models, while the third step, syntactic analysis, creates data representations based on the parsing model used. To help developers make sensible choices for their target applications, we compared the data representations of four representative parsing models: document object model (DOM; www.w3.org/DOM), simple API for XML (SAX; www.saxproject.org), streaming API for XML (StAX; http://jcp.org/ en/jsr/detail?id=173), and virtual token descriptor (VTD; http://vtd-xml. sourceforge.net). These data representations result in different operational and performance characteristics.
    [Show full text]
  • V a Lida T in G R D F Da
    Series ISSN: 2160-4711 LABRA GAYO • ET AL GAYO LABRA Series Editors: Ying Ding, Indiana University Paul Groth, Elsevier Labs Validating RDF Data Jose Emilio Labra Gayo, University of Oviedo Eric Prud’hommeaux, W3C/MIT and Micelio Iovka Boneva, University of Lille Dimitris Kontokostas, University of Leipzig VALIDATING RDF DATA This book describes two technologies for RDF validation: Shape Expressions (ShEx) and Shapes Constraint Language (SHACL), the rationales for their designs, a comparison of the two, and some example applications. RDF and Linked Data have broad applicability across many fields, from aircraft manufacturing to zoology. Requirements for detecting bad data differ across communities, fields, and tasks, but nearly all involve some form of data validation. This book introduces data validation and describes its practical use in day-to-day data exchange. The Semantic Web offers a bold, new take on how to organize, distribute, index, and share data. Using Web addresses (URIs) as identifiers for data elements enables the construction of distributed databases on a global scale. Like the Web, the Semantic Web is heralded as an information revolution, and also like the Web, it is encumbered by data quality issues. The quality of Semantic Web data is compromised by the lack of resources for data curation, for maintenance, and for developing globally applicable data models. At the enterprise scale, these problems have conventional solutions. Master data management provides an enterprise-wide vocabulary, while constraint languages capture and enforce data structures. Filling a need long recognized by Semantic Web users, shapes languages provide models and vocabularies for expressing such structural constraints.
    [Show full text]
  • Bibliography of Erik Wilde
    dretbiblio dretbiblio Erik Wilde's Bibliography References [1] AFIPS Fall Joint Computer Conference, San Francisco, California, December 1968. [2] Seventeenth IEEE Conference on Computer Communication Networks, Washington, D.C., 1978. [3] ACM SIGACT-SIGMOD Symposium on Principles of Database Systems, Los Angeles, Cal- ifornia, March 1982. ACM Press. [4] First Conference on Computer-Supported Cooperative Work, 1986. [5] 1987 ACM Conference on Hypertext, Chapel Hill, North Carolina, November 1987. ACM Press. [6] 18th IEEE International Symposium on Fault-Tolerant Computing, Tokyo, Japan, 1988. IEEE Computer Society Press. [7] Conference on Computer-Supported Cooperative Work, Portland, Oregon, 1988. ACM Press. [8] Conference on Office Information Systems, Palo Alto, California, March 1988. [9] 1989 ACM Conference on Hypertext, Pittsburgh, Pennsylvania, November 1989. ACM Press. [10] UNIX | The Legend Evolves. Summer 1990 UKUUG Conference, Buntingford, UK, 1990. UKUUG. [11] Fourth ACM Symposium on User Interface Software and Technology, Hilton Head, South Carolina, November 1991. [12] GLOBECOM'91 Conference, Phoenix, Arizona, 1991. IEEE Computer Society Press. [13] IEEE INFOCOM '91 Conference on Computer Communications, Bal Harbour, Florida, 1991. IEEE Computer Society Press. [14] IEEE International Conference on Communications, Denver, Colorado, June 1991. [15] International Workshop on CSCW, Berlin, Germany, April 1991. [16] Third ACM Conference on Hypertext, San Antonio, Texas, December 1991. ACM Press. [17] 11th Symposium on Reliable Distributed Systems, Houston, Texas, 1992. IEEE Computer Society Press. [18] 3rd Joint European Networking Conference, Innsbruck, Austria, May 1992. [19] Fourth ACM Conference on Hypertext, Milano, Italy, November 1992. ACM Press. [20] GLOBECOM'92 Conference, Orlando, Florida, December 1992. IEEE Computer Society Press. http://github.com/dret/biblio (August 29, 2018) 1 dretbiblio [21] IEEE INFOCOM '92 Conference on Computer Communications, Florence, Italy, 1992.
    [Show full text]
  • XML Parsers - a Comparative Study with Respect to Adaptability
    XML Parsers - A comparative study with respect to adaptability Bachelor Degree Project in Information Technology Basic level 30 ECTS Spring term 2018 Johan Holm Mats Gustavsson Supervisor: Yacine Atif Examinator: Alan Said Abstract Data migration is common as information needs to be moved and transformed between services and applications. Performance in the context of speed is important and may have a crucial impact on the handling of data. Information can be sent in varying formats and XML is one of the more commonly used. The information that is sent can change in structure from time to time and these changes needs to be handled. The parsers’ ability to handle these changes are described as the property “adaptability”. The transformation of XML files is done with the use of parsing techniques. The parsing techniques have different approaches, for example event-based or memory-based. Each approach has its pros and cons. The aim of this study is to research how three different parsers handle parsing XML documents with varying structures in the context of performance. The chosen parsing techniques are SAX, DOM and VTD. SAX uses an event-based approach while DOM and VTD uses a memory-based. Implementation of the parsers have been made with the purpose to extract information from XML documents an adding it to an ArrayList. The results from this study show that the parsers differ in performance, where DOM overall is the slowest and SAX and VTD perform somewhat equal. Although there are differences in the performance between the parsers depending on what changes are made to the XML document.
    [Show full text]
  • XML and Related Technologies Certification Prep, Part 3: XML Processing Explore How to Parse and Validate XML Documents Plus How to Use Xquery
    XML and Related Technologies certification prep, Part 3: XML processing Explore how to parse and validate XML documents plus how to use XQuery Skill Level: Intermediate Mark Lorenz ([email protected]) Senior Application Architect Hatteras Software, Inc. 26 Sep 2006 Parsing and validation represent the core of XML. Knowing how to use these capabilities well is vital to the successful introduction of XML to your project. This tutorial on XML processing teaches you how to parse and validate XML files as well as use XQuery. It is the third tutorial in a series of five tutorials that you can use to help prepare for the IBM certification Test 142, XML and Related Technologies. Section 1. Before you start In this section, you'll find out what to expect from this tutorial and how to get the most out of it. About this series This series of five tutorials helps you prepare to take the IBM certification Test 142, XML and Related Technologies, to attain the IBM Certified Solution Developer - XML and Related Technologies certification. This certification identifies an intermediate-level developer who designs and implements applications that make use of XML and related technologies such as XML Schema, Extensible Stylesheet Language Transformation (XSLT), and XPath. This developer has a strong understanding of XML fundamentals; has knowledge of XML concepts and related technologies; understands how data relates to XML, in particular with issues associated with information modeling, XML processing, XML rendering, and Web XML processing © Copyright IBM Corporation 1994, 2008. All rights reserved. Page 1 of 38 developerWorks® ibm.com/developerWorks services; has a thorough knowledge of core XML-related World Wide Web Consortium (W3C) recommendations; and is familiar with well-known, best practices.
    [Show full text]
  • Licensing Information User Manual Release 21C (21.1) F37966-01 March 2021
    Oracle® Zero Downtime Migration Licensing Information User Manual Release 21c (21.1) F37966-01 March 2021 Introduction This Licensing Information document is a part of the product or program documentation under the terms of your Oracle license agreement and is intended to help you understand the program editions, entitlements, restrictions, prerequisites, special license rights, and/or separately licensed third party technology terms associated with the Oracle software program(s) covered by this document (the "Program(s)"). Entitled or restricted use products or components identified in this document that are not provided with the particular Program may be obtained from the Oracle Software Delivery Cloud website (https://edelivery.oracle.com) or from media Oracle may provide. If you have a question about your license rights and obligations, please contact your Oracle sales representative, review the information provided in Oracle’s Software Investment Guide (http://www.oracle.com/us/ corporate/pricing/software-investment-guide/index.html), and/or contact the applicable Oracle License Management Services representative listed on http:// www.oracle.com/us/corporate/license-management-services/index.html. Licensing Information Third-Party Notices and/or Licenses About the Third-Party Licenses The third party licensing information in Oracle Database Licensing Information User Manual, Third-Party Notices and/or Licenses and Open Source Software License Text, applies to Oracle Zero Downtime Migration. The third party licensing information included in the license notices provided with Oracle Linux applies to Oracle Zero Downtime Migration. Open Source or Other Separately Licensed Software Required notices for open source or other separately licensed software products or components distributed in Oracle Zero Downtime Migration are identified in the following table along with the applicable licensing information.
    [Show full text]
  • XML Prague 2020
    XML Prague 2020 Conference Proceedings University of Economics, Prague Prague, Czech Republic February 13–15, 2020 XML Prague 2020 – Conference Proceedings Copyright © 2020 Jiří Kosek ISBN 978-80-906259-8-3 (pdf) ISBN 978-80-906259-9-0 (ePub) Table of Contents General Information ..................................................................................................... vii Sponsors .......................................................................................................................... ix Preface .............................................................................................................................. xi A note on Editor performance – Stef Busking and Martin Middel .............................. 1 XSLWeb: XSLT- and XQuery-only pipelines for the web – Maarten Kroon and Pieter Masereeuw ............................................................................ 19 Things We Lost in the Fire – Geert Bormans and Ari Nordström .............................. 31 Sequence alignment in XSLT 3.0 – David J. Birnbaum .............................................. 45 Powerful patterns with XSLT 3.0 hidden improvements – Abel Braaksma ............ 67 A Proposal for XSLT 4.0 – Michael Kay ..................................................................... 109 (Re)presentation in XForms – Steven Pemberton and Alain Couthures ................... 139 Greenfox – a schema language for validating file systems – Hans-Juergen Rennau ..................................................................................................
    [Show full text]
  • Web Technologies in Java EE
    Web Technologies in Java EE JAX-RS 2.0, JSON-P, WebSocket, JSF 2.2 $ whoami • Lukáš Fryč – Software Engineer, JBoss, Red Hat • AeroGear, (Arquillian, RichFaces) – Interests • HTML5, Web Components, AngularJS • Living and advocating Java EE (6 yrs) • Running, Hiking • Enjoying time with my family Agenda • Client-Side vs Server-Side Web • JAX-RS 2.0 RESTful Services – Origins + News in 2.0 • JSON-P Java API for JSON Processing • Java API for WebSocket • JSF 2.2 JavaServer Faces – Origins + News in 2.2 Client-Side vs Server-Side Web Architecture Client- vs. Server-Side Web • Server-Side Web (Thin Client) – Well-established approach – 90's, 00's • Client-Side Web (Thick Client) – Moden approach – SPA (Single Page Applications) – Fully leverages enhancements in web standards and protocols – 10's Server-Side Client-Side Client-Side Web Approach • Off-loading server – Stateless, Scalable • Client-Side Frameworks – AngularJS, Ember, Backbone, .......... • Standards improvements – HTML5 + Protocols • REST interfaces – Data-oriented, presentation independent Java API for RESTful Services JAX-RS 2.0 JAX-RS Origins • RESTful Principles – Assign everything an ID – Link things together – Use common methods (GET, POST, ...) – Stateless communication – OData, HATEOAS JAX-RS 1.0 Goals • POJO-Based API • HTTP Centric • Format Independence – plain/text – XML – HTML – JSON JAX-RS API • Resources – @Path • HTTP methods – @GET / @POST / @PUT / @DELETE / ... • Parameters – @PathParam / @QueryParam / ... • Media-Type – @Consumes / @Produces Demo JAX-RS Endpoint http://javaee-samples.github.io/ HTTP Method Purpose Method Meaning @GET Read, possibly cached @POST Modify or create without a known ID (modify/update) @PUT Modify or create with a known ID (create/modify) @DELETE Remove @HEAD GET with no response @OPTIONS Supported methods http://stackoverflow.com/questions/630453/put-vs-post-in-rest Parameter Injection Annotation Example @PathParam(“id”) @Path(“/consumer/{id}”) @QueryParam(“query”) GET /consumer/search? query=??? @CookieParam(“userna Cookie: ..
    [Show full text]
  • JAVA XML Mock Test
    JJAAVVAA XXMMLL MMOOCCKK TTEESSTT http://www.tutorialspoint.com Copyright © tutorialspoint.com This section presents you various set of Mock Tests related to JAVA XML Framework. You can download these sample mock tests at your local machine and solve offline at your convenience. Every mock test is supplied with a mock test key to let you verify the final score and grade yourself. JJAAVVAA XXMMLL MMOOCCKK TTEESSTT IIII Q 1 - Which of the following method is used to read contents in SAX parsing? A - startDocument B - characters C - startElement D - endElement Q 2 - Which of the following is true about JDOM Parser? A - It is java optimized, it uses java collection like List and Arrays. B - It works with DOM and SAX APIs and combines the best of the two. C - Both of the above. D - None of the above. Q 3 - Which of the following is true about JDOM Parser? A - It is of low memory footprint. B - It is nearly as fast as SAX based parser. C - Both of the above. D - None of the above. Q 4 - Which component of JDOM Parser represents DOM tree? A - Document B - Element C - Attribute D - Text Q 5 - Which component of JDOM Parser represents XML Element? A - Document B - Element C - Attribute D - Text Q 6 - Which component of JDOM Parser represents XML attribute? A - Document B - Element C - Attribute D - Text Q 7 - Which component of JDOM Parser represents text of XML tag? A - Document B - Element C - Attribute D - Text Q 8 - Which component of JDOM Parser represents comments in a XML document? A - Comment B - Element C - Attribute D - Text Q 9 - Which
    [Show full text]
  • Metro User Guide Metro User Guide Table of Contents
    Metro User Guide Metro User Guide Table of Contents Preface .............................................................................................................................. x 1. Introduction to Metro ....................................................................................................... 1 1.1. Required Software ................................................................................................ 1 1.2. What is WSIT? .................................................................................................... 1 1.2.1. Bootstrapping and Configuration ................................................................... 2 1.2.2. Message Optimization Technology ................................................................ 3 1.2.3. Reliable Messaging Technology .................................................................... 4 1.2.4. Security Technology ................................................................................... 4 1.3. How Metro Relates to .NET Windows Communication Foundation (WCF) ...................... 5 1.4. Metro Specifications ............................................................................................. 5 1.4.1. Bootstrapping and Configuration Specifications ............................................... 7 1.4.2. Message Optimization Specifications ............................................................. 8 1.4.3. Reliable Messaging Specifications ............................................................... 10 1.4.4. Security Specifications
    [Show full text]
  • An Overview on Xml Parsing
    International Journal of Advanced Computational Engineering and Networking, ISSN: 2320-2106, Volume-1, Issue-9, Nov-2013 AN OVERVIEW ON XML PARSING 1P.V.KALE, 2V.M.DESHMUKH Computer Science & Engineering Department, Prof. Ram Meghe Institute of Technology & Research, Badnera-Amravati. Email:[email protected],[email protected] Abstract: As XML has become a standard for data representation and exchange, XML data processing becomes more and more important for server workloads like web servers and database servers. Every application that processes information from XML documents needs an XML Parser which reads an XML document and provides interface for user to access its content and structure. One of the most time consuming part is data parsing. Parsing is a core operation performed before an XML document can be navigated, queried, or manipulated. Recently, high performance XML parsing has become a topic of considerable interest. In this paper, we are giving an overview on parsing and different available parsers in market today. We focus on a survey of four representative XML parsing models—DOM, SAX, StAX, and VTD—reveals their suitability for different types of applications. Keywords: XML, XML Parser, Parsing. I. INTRODUCTION II. LITERATURE REVIEW Broadly used in database and networking Yusof Mohd Kamir and Mat Amin Mat Atar - applications, the Extensible Markup Language is the explains that nowadays, web is important to users. de facto standard for the interoperable document They can get lot of information from data. The most format. As XML becomes widespread, it is critical popular method for data retrieval is XML. XML is for application developers to understand the new method compared to HTML.
    [Show full text]
  • Pearls of XSLT/Xpath 3.0 Design
    PEARLS OF XSLT AND XPATH 3.0 DESIGN PREFACE XSLT 3.0 and XPath 3.0 contain a lot of powerful and exciting new capabilities. The purpose of this paper is to highlight the new capabilities. Have you got a pearl that you would like to share? Please send me an email and I will add it to this paper (and credit you). I ask three things: 1. The pearl highlights a capability that is new to XSLT 3.0 or XPath 3.0. 2. Provide a short, complete, working stylesheet with a sample input document. 3. Provide a brief description of the code. This is an evolving paper. As new pearls are found, they will be added. TABLE OF CONTENTS 1. XPath 3.0 is a composable language 2. Higher-order functions 3. Partial functions 4. Function composition 5. Recursion with anonymous functions 6. Closures 7. Binary search trees 8. -- next pearl is? -- CHAPTER 1: XPATH 3.0 IS A COMPOSABLE LANGUAGE The XPath 3.0 specification says this: XPath 3.0 is a composable language What does that mean? It means that every operator and language construct allows any XPath expression to appear as its operand (subject only to operator precedence and data typing constraints). For example, take this expression: 3 + ____ The plus (+) operator has a left-operand, 3. What can the right-operand be? Answer: any XPath expression! Let's use the max() function as the right-operand: 3 + max(___) Now, what can the argument to the max() function be? Answer: any XPath expression! Let's use a for- loop as its argument: 3 + max(for $i in 1 to 10 return ___) Now, what can the return value of the for-loop be? Answer: any XPath expression! Let's use an if- statement: 3 + max(for $i in 1 to 10 return (if ($i gt 5) then ___ else ___))) And so forth.
    [Show full text]