XSLT is a powerful, higher-level, declarative and extraordinary member in the family of modern programming languages, due to its pattern-matching philosophy. This is the language for processing XML documents and hierarchical data in general, that opens to us a whole new world of knowledge, understanding and problem-solving strategies.
XSLT is the language, especially designed by the W3C Consortium for processing XML documents and hierarchical data in general. This course covers the fundamentals of the language both version 1.0 and 2.0. Learn in depth the features of XSLT, and be part of the demos of their real-world practical applications. Not only is XSLT a powerful, higher-level, declarative and extraordinary with its pattern-matching philosophy modern programming language, but it opens to us a whole new world of knowledge, understanding and problem-solving strategies.
Dimitre Novatchev developed FXSL – the functional programming library for XSLT (1.0 and 2.0). He thrives at discovering and employing unexpected capabilities of XSLT and XPath that even their W3C creators hadn’t imagined.
Introduction Hi, my name is Dimitre Novatchev. I am excited to share with you the Pluralsight course on XSLT 2 and 1 Foundations. Why am I so excited? Because watching this course you will get essential new knowledge and practical skills in an area which is becoming increasingly important. At the end of this course, you will have a deep insight and solid understanding of the foundations of XSLT. Based on this deep understanding, you will be confident in your acquired solid transformation writing skills. You will acquire new essential XSLT problem solving skills, both in everyday XML processing tasks and in even more advanced nontraditional problem areas.
XML Basics Hello, I'm Dimitre Novatchev, and this is the XML Basics module of the Pluralsight course on XSLT 2. 0 and 1. 0 Foundations. The extensible stylesheet language for transformations, XSLT, is primarily designed to express transformations of one XML document into another. After watching this module, you will learn the concept of XML document, the basic node types in an XML document, the lexical rules for name syntax, what a well-formed XML document means, what are namespaces and their purpose, what is XML schema and schema languages. Intentionally not covered is the subject of DTDs and the XML declaration as these are rarely involved in XSLT processing. For the purpose of learning XML in greater detail, I recommend that excellent Pluralsight course on XML Fundamentals by Dan Sullivan.
Crash Course in XPath Hello. I am Dimitre Novatchev, and this is the Crash Course in XPath module of the Pluralsight course on XSLT 2 and 1 Foundations. The XPath language is typically embedded in a variety of host languages. Its primary purposes is to select a sequence of nodes in one or more trees that satisfies specific criteria. After watching this module, we will learn about what are the basic XPath data types, what are the node types in the XPath data model and what are their properties, what is the XPath evaluation context, what are the lexical rules in XPath, what are the operators on items in the XPath data model, what are path expressions, and finally, what are sequence expressions. Intentionally not covered is the complete set of XPath grammar rules and some complicated XML schema related issues in XPath as these are rarely needed in XSLT processing. For complete treatment of these topics, you can use Michael Kay's books on XSLT and XPath 2. 0.
XSLT Processing Model Hello, I'm Dimitre Novatchev, and this is the XSLT Processing Model module of the Pluralsight course on XSLT 2. 0 and 1. 0 Foundations. After watching this module, you'll learn about the most important concepts and components involved in XSLT processing that represent the XSLT Processing module. Trees play a crucial role in the XSLT processing model. An XSLT processor typically operates on one or more input trees and produces one or more output trees as its result. Often intermediate results are also maintained as trees, temporary because they don't exist outside of the XSLT processing. The program that tells the XSLT processor how to process its input trees consists of one or more stylesheet modules. What is the external context in which an XSLT processor is executed? What is the function of the XSLT processor? What kind of language is XSLT, the language in which the programs that the XSLT processor understands are written? We will learn such basic XSLT concepts as what are sequence constructors, what are template rules, the most important parts of a stylesheet, what are the built-in or the full templates that the XSLT processor uses in cases when there are not template rules in the stylesheet modules to match a particular node, how to evaluate expressions and store their results in variables, what are XSLT parameters and their role in the XSLT processing. Finally, the execution context for evaluating XPath expressions as necessary for executing XSLT instructions.
Stylesheet Structure and Modularization Hello, I'm Dimitre Novatchev, and this is the Stylesheet Structure and Modularization module of the Pluralsight course on XSLT 2 and 1 Foundations. After watching this module, you will learn about what the general structure of an XSLT stylesheet is, what are the global level elements in XSLT known as XSLT declarations, what are some of the most important non- global level XSLT elements known as XSLT instructions. You will learn about the way to specify conditional compilation in XSLT 2 by means of the use-when attribute and how this can be used in a number of huge scenarios such as writing a transformation that can be performed both by an XSLT 1 and XSLT 2 processor. You will learn about ways to split your processing logic into modules such as inclusion of stylesheet modules and importing of stylesheet modules. You will also learn how the import precedence of a stylesheet is determined and how this is used in conflict resolution between templates and between other kinds of XSLT declarations from different stylesheets.
Creating Nodes & Sequences. Repetition, Applying Templates, Modes Hello, I'm Dimitre Novatchev, and this is the module on Creating Nodes and Sequences, Repetition, Applying Templates, and Modes in the Pluralsight course on XSLT 2 and 1 Foundations. After watching this module, you will learn about what are the XSLT instructions for copying and creating items and for referencing nodes, and more precisely, how to copy nodes and sequences, how to create nodes and sequences, how to use attribute-value templates when creating attributes of literal result elements, and how to create sequences of atomic values and references to nodes. Another important topic is how to organize repetitive processing on every item in a sequence and how this is done using the xsl:for-each instruction. We will discuss in detail what is probably the most important concept in XSLT, applying templates on every node of a sequence and how to do this using the xsl:apply-templates instruction. Finally, we will describe the ways to apply additional templates on a node from the current template that is processing that node. There are two ways of doing this, with the xsl:apply-imports instruction and with the new in XSLT 2 xsl:next-match instruction.
Callable Units in XSLT Hello, I'm Dimitre Novatchev, and this is the Callable Units module of the Pluralsight course on XSLT 2 and 1 Foundations. After watching this module, you will learn about what are the callable units in XSLT, and more precisely how to write and use named templates, how to write and use functions written completely in XSLT 2, what are template and function parameters and how to define these parameters, how to specify the type of a parameter or of the result value in XSLT 2, how to pass actual argument values on a specific call to a named template or a function, how to specify what default value to use for a parameter, or in XSLT how to make passing a parameter value mandatory. You will also learn a new XSLT 2 feature called tunneling that allows the smooth and invisible passing of a parameter through a code chain of templates where only some of these templates actually declare and need this parameter. You will learn how to invoke a named template or a function. You will get to know what function overloading is in XSLT 2 and the different ways to use the result of a call to a named template or a call to a function.
String Processing with XSLT Hello, I'm Dimitre Novatchev, and this is the String Processing module of the Pluralsight course on XSLT 2 and 1 Foundations. You have probably heard someone saying that XSLT isn't good at text processing. Is this really true? After watching this module, you'll have your answer to this question. You will also learn about the common string processing capabilities of XSLT 1 and XSLT 2, and the set of XPath 1 string processing functions commonly used to do this, what are the new XPath 2 string processing functions, you will know how strings relate to sequences and what XPath 2 sequence processing functions can be used for string processing, what are the XPath 2 functions that use pattern matching and regular expressions, what instructions does XSLT have for working with regular expressions, and finally, what is the way in XSLT 2 to read text files.
Keys, Sorting, Grouping, Numbering and Multi-Document Processing Hello, I'm Dimitre Novatchev, and this is the Keys, Sorting, Grouping, Numbering, and Multiple Document Processing module of the Pluralsight course on XSLT 2 and 1 Foundations. After watching this module, you will learn about how to perform multiple document processing, both reading and creating new documents in XSLT, what are the ways to sort a sequence of items, how to specify indexing of nodes and use it to achieve very efficient transformations. You will know what are the techniques for grouping a sequence of items based on a specified criteria. And finally, the ways in XSLT to allocate numbers to a sequence of nodes and to format those numbers.
XSLT Design Patterns Hello, I'm Dimitre Novatchev, and this is the XSLT Design Patterns module of the Pluralsight course on XSLT 2 and 1 Foundations. After watching this module, you will learn about the most fundamental XSLT design pattern using and overriding the identity rule, how recursion in a declarative language is the natural alternative to modifying variables in an imperative programming language, how to solve complex problems by decomposing them into a chain of simple problems processed in a sequence of transformation passes, what are the XSLT conditional instructions and the ways to avoid them, how to separate data into parts accessing important reference data as a lookup table, and finally, a powerful design pattern called fill in the blanks where fields of the layout presentation data are filled with dynamically generated values.
Higher Order Functions and Functional Programming in XSLT Hello, I am Dimitre Novatchev, and this is the Higher Order Functions and Functional Programming in XSLT module of the Pluralsight course on XSLT 2 and 1 Foundations. After watching this module, you will learn about what are some differences between the imperative, declarative, and functional programming, what are higher order functions and how we can simulate them in XSLT, what are lists and how to represent them in XSLT, what are some of the most generic and powerful higher order functions on lists and how we can implement and use them in XSLT, what are some of the most generic higher order functions that produce other functions and how we can implement them in XSLT. And finally, you will learn about the FXSL Library for functional programming in XSLT and its most important groups of functions.
Solving Non-traditional Problems with XSLT Hello, I'm Dimitre Novatchev, and this is the Solving Nontraditional Problems module of the Pluralsight course on XSLT 2 and 1 Foundations. The purpose of this module is to show solutions to problems in several different areas that often refer to as non-appropriate, difficult or even close to impossible for solving with XSLT. These range from up converting, that is creating an XML document from a less structured or flat document, or even directly from plain text. As examples in this problem area, we will see how to create natural language dictionaries and how to use such dictionaries for solving such nontraditional problems as spell checking or finding the anagrams of a given word. We will touch another area and show an example of a graph processing problem. More exactly, the problem of topological sorting. Yet another nontraditional problem area is number theory. We will see a specific example how to solve a problem involving finding prime numbers that have a wanted property.