What's new in 3.0 (XSLT/XPath/XQuery) (plus XML Schema 1.1) Michael Kay Saxonica



Similar documents
An Approach to Translate XSLT into XQuery

Presentation / Interface 1.3

High Performance XML Data Retrieval

Connections to External File Sources

Introduction to Ingeniux Forms Builder. 90 minute Course CMSFB-V6 P

Semistructured data and XML. Institutt for Informatikk INF Ahmet Soylu

Computing Concepts with Java Essentials

Lesson 4 Web Service Interface Definition (Part I)

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Course Title: Software Development

Application Developer s Guide

MD Link Integration MDI Solutions Limited

Microsoft Windows PowerShell v2 For Administrators

The Sun Certified Associate for the Java Platform, Standard Edition, Exam Version 1.0

Visual Basic. murach's TRAINING & REFERENCE

Deferred node-copying scheme for XQuery processors

C#5.0 IN A NUTSHELL. Joseph O'REILLY. Albahari and Ben Albahari. Fifth Edition. Tokyo. Sebastopol. Beijing. Cambridge. Koln.

Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner

WebSphere Business Monitor

Visual C# 2012 Programming

Extending XSLT with Java and C#

Oracle Data Integrator: Administration and Development

ML for the Working Programmer

10CS73:Web Programming

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

Data Validation as a Service

Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the.

Working with YANG Data Models and Instances Using (Mainly) pyang

PROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON

Agents and Web Services

Scalable Data Integration by Mapping Data to Queries

Android Application Development Course Program

Python, C++ and SWIG

Concrete uses of XML in software development and data analysis.

Optimization of Sequences of XML Schema Modifications - The ROfEL Approach

C++ Programming Language

Guile Present. version 0.3.0, updated 21 September Andy Wingo

Course MS10975A Introduction to Programming. Length: 5 Days

AP Computer Science Java Subset

Markup Languages and Semistructured Data - SS 02

Regular Expressions and Automata using Haskell

INSPIRE Dashboard. Technical scenario

INTRO TO XMLSPY (IXS)

CHAPTER 1 INTRODUCTION

Exchanger XML Editor - Introduction to the Professional Edition

MarkLogic Server. Application Developer s Guide. MarkLogic 8 February, Last Revised: 8.0-4, November, 2015

TECHNOLOGY Computer Programming II Grade: 9-12 Standard 2: Technology and Society Interaction

XSLT Mapping in SAP PI 7.1

ABSTRACT 1. INTRODUCTION. Kamil Bajda-Pawlikowski

XML Processing and Web Services. Chapter 17

Encoding Library of Congress Subject Headings in SKOS: Authority Control for the Semantic Web

Glossary of Object Oriented Terms

Experiences with JSON and XML Transformations IBM Submission to W3C Workshop on Data and Services Integration October , Bedford, MA, USA

Compute Cluster Server Lab 3: Debugging the parallel MPI programs in Microsoft Visual Studio 2005

Chapter 1: Introduction

Introducing Formal Methods. Software Engineering and Formal Methods

JSONiq - the SQL of NoSQL 1.0 JSONiq Use Cases

business transaction information management

Exchanger XML Editor - Canonicalization and XML Digital Signatures

Data XML and XQuery A language that can combine and transform data

Business Object Document (BOD) Message Architecture for OAGIS Release 9.+

Habanero Extreme Scale Software Research Project

Open Source Master Data Management The Time is Right. White Paper

Programming and Software Development CTAG Alignments

T Network Application Frameworks and XML Web Services and WSDL Tancred Lindholm

Java EE Web Development Course Program

Chapter 7: Functional Programming Languages

Java SE 8 Programming

BUSINESS VALUE OF SEMANTIC TECHNOLOGY

Configuring Firewalls An XML-based Approach to Modelling and Implementing Firewall Configurations

Schematron Validation and Guidance

Java Application Developer Certificate Program Competencies

Interaction Translation Methods for XML/SNMP Gateway Using XML Technologies

AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities

Students who successfully complete the Health Science Informatics major will be able to:

RARITAN VALLEY COMMUNITY COLLEGE ACADEMIC COURSE OUTLINE. CISY 105 Foundations of Computer Science

Smooks Dev Tools Reference Guide. Version: GA

The C Programming Language course syllabus associate level

An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases

WESTMORELAND COUNTY PUBLIC SCHOOLS Integrated Instructional Pacing Guide and Checklist Computer Math

Building the Tower of Babel: Converting XML Documents to VoiceXML for Accessibility 1

Joomla! Override Plugin

Domains and Competencies

Refactoring Erlang Programs

Managing large sound databases using Mpeg7

Mapping Data to Queries: Semantics of the IS-A Rule

06 XML-based Technologies

Principles and Foundations of Web Services: An Holistic View (Technologies, Business Drivers, Models, Architectures and Standards)

Introduction to MAPFORCE Student Edition

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition

Discovering SQL. Wiley Publishing, Inc. A HANDS-ON GUIDE FOR BEGINNERS. Alex Kriegel WILEY

Managing XML Documents Versions and Upgrades with XSLT

Creating a TEI-Based Website with the exist XML Database

2. Advance Certificate Course in Information Technology

REST vs. SOAP: Making the Right Architectural Decision

Getting off the ground when creating an RVM test-bench

Transcription:

What's new in 3.0 (XSLT/XPath/XQuery) (plus XML Schema 1.1) Michael Kay Saxonica

XSD 1.1 Now a Proposed Recommendation Which means it's waiting for final approval by the W3C Advisory Committee and the Director Should be a clear run to the finish: test suite exists two implementations (Xerces, Saxon) pass all the tests

What's in XSD 1.1? Assertions Conditional Type Assignment Elements in multiple substitution groups Open content models Generalization of xs:all xs:override Various restrictions removed

What's not in XSD 1.1 PrecisionDecimal data type hotly fought issue W3C rule is that changes require consensus, so if there is strong objection then the status quo holds

Most significant feature? In my view, assertions: Change the game Shamelessly borrowed from Schematron Many constraints are better expressed using predicates than using a grammar

Impact? Two existing implementations gives confidence but they don't cover the whole space Another suspected implementation in the wings Take-up depends primarily on the verticals: FpML, XBRL, GIS, etc etc. expect it to be slow

XPath 3.0 Functions and Operators (For both XQuery 3.0 and XSLT 3.0)

Higher-order Functions Functions are now first-class values (a new kind of item) Finally, XSLT and XQuery are fully functional programming languages!

Inline functions let $sq := function($i as xs:integer) as xs:integer { $i * $i } Inline functions are expressions and can appear anywhere an expression is allowed.

Other expressions that return function items Function literals: fn:abs#1, fn:max#2, my:func#3 Partial application (currying): string-join(?, ', ') contains(?,?, 'http://collation/case-blind') Run-time discovery: function-lookup($name, $arity)

Functions that take functions as an argument fn:filter($function, $sequence) fn:map($function, $sequence) fn:map-pairs($function, $seq1, $seq2) fn:fold-left($function, $initial, $sequence) fn:fold-right($function, $initial, $sequence)

Properties of functions function-name($function) function-arity($function)

Use cases for higher-order functions Dynamic despatch mechanism alternative to XSLT template rules substitute for polymorphism Overcome limitations of XDM type system Reusable algorithms such as detection of cycles in a graph Reduce the need to write simple things using recursion

Other new functions trig/math functions: sin(), cos(), sqrt() etc analyze-string() format-date(), format-number(), generateid(), unparsed-text() etc moved from XSLT to common library head(), tail(), path() environment-variable(), uri-collection() parse(), serialize()

XSLT 3.0 Streaming Packaging Other goodies

XSLT 3.0 Goodies xsl:try/catch (dynamic errors) xsl:evaluate (XPath expressions) xsl:iterate (a fold that looks like a for-each) extended pattern syntax apply templates to atomic values xsl:merge (pre-sorted input files) declare type of initial context item

XSLT 3.0 Packaging Intended to allow separate compilation of modules Gives software engineering benefits for developing large stylesheets

Packages Package is a self-contained collection of modules that must declare its dependencies on other modules Controlled visibility of declarations public, private, abstract, final Controlled override rules: an overriding function or template must have a matching signature

Streaming General approach: implementations always allowed to do streaming define a subset of the language that is guaranteed streamable (if the processor supports this option) streamability is a property of a mode (set of template rules); some documents may be processed using a streaming mode, others in a non-streaming mode

Current streamable subset Every template rule is allowed one downward selection Path analysis (data flow analysis) ensures that this takes into account variables and function calls Processor is required to compute all navigation paths in the streamed document and test this against a set of rules

Re-examining Streaming Current rules suffer from too little implementation experience or feedback Current rules assume too much about implementation strategy Current rules make it hard for users to understand why their code is (not) streamable Rules are very detailed and hard to debug Reviewing the strategy this coming week

The XSLT Maps proposal Motivations: when streaming, you need more complex data structures to remember what you've seen in the document extensibility of functions such as parse() and serialize() support for JSON

XSLT Maps proposal A map is a new type of item Maps are immutable and have no identity operations such as put() create a new map New syntax constructor: map { a := b } item type: map(keytype, valuetype) New functions: get(), put(), contains(), keys(), size()

A map is a function Why? allows $map( key ) to get an entry allows maps to be used wherever functions can be used, e.g. filter() and map() functions economy of concepts

XSLT proposal for JSON Two new functions, parse-json() and serialize-json() Convert JSON to maps, not to XML Recognize JSON only at the boundaries (these two functions) Weak support for arrays (represented as maps from integers to values)