Xslt by asfak mahamud

64
Jun 7, 2022 Jun 7, 2022 1 XSLT XSLT Md. Asfak Mahamud Md. Asfak Mahamud Associate Software Engineer Associate Software Engineer KAZ Software Ltd. KAZ Software Ltd. Dhaka, Bangladesh Dhaka, Bangladesh February 19, 2008 February 19, 2008

description

Seminar Slide.

Transcript of Xslt by asfak mahamud

Page 1: Xslt by asfak mahamud

Apr 10, 2023Apr 10, 2023 11

XSLTXSLT

Md. Asfak MahamudMd. Asfak Mahamud

Associate Software EngineerAssociate Software EngineerKAZ Software Ltd.KAZ Software Ltd.

Dhaka, BangladeshDhaka, Bangladesh

February 19, 2008February 19, 2008

Page 2: Xslt by asfak mahamud

Apr 10, 2023 2

AgendaAgenda

► TrailerTrailer

► CastCast XMLXML XPathXPath XSL/XSLTXSL/XSLT

► DirectorDirector XSLT ProcessorsXSLT Processors Java APIJava API

► ProducerProducer TransformationTransformation

► ProductionProduction Html/XHtmlHtml/XHtml XMLXML TextText

► DiscussionDiscussion

James Stewart Donna Reed Lionel Barrymore

Frank Capra

It’s Wonderful Life

Liberty Film Inc.

Page 3: Xslt by asfak mahamud

Apr 10, 2023 3

AgendaAgenda

► TrailerTrailer

► CastCast XMLXML XPathXPath XSL/XSLTXSL/XSLT

► DirectorDirector XSLT ProcessorsXSLT Processors Java APIJava API

► ProducerProducer TransformationTransformation

► ProductionProduction Html/XHtmlHtml/XHtml XMLXML TextText

► DiscussionDiscussion

James Stewart Donna Reed Lionel Barrymore

Frank Capra

It’s Wonderful Life

Liberty Film Inc.

Page 4: Xslt by asfak mahamud

Apr 10, 2023 4

XSLTprocessor

Trailer (continued)Trailer (continued)

hello.xml

hello.xsl

hello.html

Page 5: Xslt by asfak mahamud

Apr 10, 2023 5

XSLTprocessor

Trailer (continued)Trailer (continued)

Page 6: Xslt by asfak mahamud

Apr 10, 2023 6

Transform.java

Trailer (continued)Trailer (continued)

Page 7: Xslt by asfak mahamud

Apr 10, 2023 7

Trailer (continued)Trailer (continued)

Streamsource of XSL File

XSL File

StreamSource of XML File

XML File

transformer

StreamResultof Html File

Page 8: Xslt by asfak mahamud

Apr 10, 2023 8

Trailer (continued)Trailer (continued)

Streamsource of XSL File

XSL File

StreamSource of XML File

XML File

StreamResultof Html File

Html FileStreamSource

of XML File

StreamResultof Html File

Page 9: Xslt by asfak mahamud

Apr 10, 2023 9

Trailer (continued)Trailer (continued)

TransformerFactory tFactory = TransformerFactory.newInstance();

StreamSource xslStreamSource = new StreamSource(xslDoc);

Transformer transformer = tFactory.newTransformer(stylesource);

StreamSource xmlStreamSource = new StreamSource(new File(xmlDoc));

StreamResult htmlStreamResult = new StreamResult(new FileOutputStream(htmlDoc));

transformer.transform(xmlStreamSource, htmlStreamResult);

Page 10: Xslt by asfak mahamud

Apr 10, 2023 10

AgendaAgenda

► TrailerTrailer

► CastCast XMLXML XPathXPath XSL/XSLTXSL/XSLT

► DirectorDirector XSLT ProcessorsXSLT Processors Java APIJava API

► ProducerProducer TransformationTransformation

► ProductionProduction Html/XHtmlHtml/XHtml XMLXML TextText

► DiscussionDiscussion

James Stewart Donna Reed Lionel Barrymore

Frank Capra

It’s Wonderful Life

Liberty Film Inc.

Page 11: Xslt by asfak mahamud

Apr 10, 2023 11

CastCast XML XML

► stands for Estands for EXXtensible tensible MMarkup arkup LLanguage.anguage.► was designed to was designed to transporttransport and and storestore data. data.

Page 12: Xslt by asfak mahamud

Apr 10, 2023 12

CastCast XML XML

Page 13: Xslt by asfak mahamud

Apr 10, 2023 13

CastCast XML XML

Page 14: Xslt by asfak mahamud

Apr 10, 2023 14

CastCast XML XML with CSSwith CSS

Page 15: Xslt by asfak mahamud

Apr 10, 2023 15

CastCast XML XML with XSLwith XSL

Page 16: Xslt by asfak mahamud

Apr 10, 2023 16

CastCast

XPathXPath

Page 17: Xslt by asfak mahamud

Apr 10, 2023 17

CastCast XPath XPath

Page 18: Xslt by asfak mahamud

Apr 10, 2023 18

CastCast XPath XPath

Page 19: Xslt by asfak mahamud

Apr 10, 2023 19

CastCast XPath XPath

Page 20: Xslt by asfak mahamud

Apr 10, 2023 20

CastCast XPath XPath

Page 21: Xslt by asfak mahamud

Apr 10, 2023 21

CastCast XPath XPath

Page 22: Xslt by asfak mahamud

Apr 10, 2023 22

CastCast XPath XPath

Page 23: Xslt by asfak mahamud

Apr 10, 2023 23

CastCast XPath XPath

Page 24: Xslt by asfak mahamud

Apr 10, 2023 24

CastCast

XSL/XSLTXSL/XSLT

Page 25: Xslt by asfak mahamud

Apr 10, 2023 25

CastCast XSL/XSLT XSL/XSLT

Page 26: Xslt by asfak mahamud

Apr 10, 2023 26

CastCast XSL/XSLT XSL/XSLT

►XSLT elements………………..XSLT elements………………..

Page 27: Xslt by asfak mahamud

Apr 10, 2023 27

CastCast XSL/XSLT XSL/XSLT

Page 28: Xslt by asfak mahamud

Apr 10, 2023 28

CastCast XSL/XSLT XSL/XSLT FunctionsFunctions

• For the functions required for XPath 2.0, XQuery 1.0 and XSLT 2.0.

http://www.w3schools.com/xpath/xpath_functions.asp

Page 29: Xslt by asfak mahamud

Apr 10, 2023 29

CastCast XSL/XSLT XSL/XSLT

• Simplest

Page 30: Xslt by asfak mahamud

Apr 10, 2023 30

CastCast XSL/XSLT XSL/XSLT

• Adding some style

Page 31: Xslt by asfak mahamud

Apr 10, 2023 31

CastCast XSL/XSLT XSL/XSLT

• use of <xsl:apply-templates> element

Page 32: Xslt by asfak mahamud

Apr 10, 2023 32

CastCast XSL/XSLT XSL/XSLT

• Getting location paths……..

Page 33: Xslt by asfak mahamud

Apr 10, 2023 33

► mode in <xsl:apply-templates>mode in <xsl:apply-templates>

CastCast XSL/XSLT XSL/XSLT

Page 34: Xslt by asfak mahamud

Apr 10, 2023 34

► If we need variable and If we need variable and ► for loopfor loop

CastCast XSL/XSLT XSL/XSLT

Page 35: Xslt by asfak mahamud

Apr 10, 2023 35

► If we need conditionsIf we need conditions

CastCast XSL/XSLT XSL/XSLT

Page 36: Xslt by asfak mahamud

Apr 10, 2023 36

CastCast XSL/XSLT XSL/XSLT

Page 37: Xslt by asfak mahamud

Apr 10, 2023 37

► <xsl-apply-imports> works only for templates imported with xsl:import, not <xsl-apply-imports> works only for templates imported with xsl:import, not for templates included with xsl:includefor templates included with xsl:include

CastCast XSL/XSLT XSL/XSLT

Page 38: Xslt by asfak mahamud

Apr 10, 2023 38

1.1. Extension ElementsExtension Elements

2.2. Extension FunctionExtension Function

3.3. Fallback ProcessingFallback Processing

CastCast XSL/XSLT XSL/XSLT

Page 39: Xslt by asfak mahamud

Apr 10, 2023 39

Two Important Functions:

Boolean element-available(string)

Boolean function-available(string)

CastCast XSL/XSLT XSL/XSLT

Page 40: Xslt by asfak mahamud

Apr 10, 2023 40

CastCast XSL/XSLT XSL/XSLT Extention-Elements Extention-Elements

Page 41: Xslt by asfak mahamud

Apr 10, 2023 41

Example: Generating multiple output file

Page 42: Xslt by asfak mahamud

Apr 10, 2023 42

CastCast XSL/XSLT XSL/XSLT Extention FunctionExtention Function

► If we want to compute a path expression on the flyIf we want to compute a path expression on the fly

<xsl:variable name="element">foo/bar</xsl:variable><xsl:variable name="element">foo/bar</xsl:variable>

wrong: wrong: <xsl:apply-templates select="$element"/> <xsl:apply-templates select="$element"/>

► saxon:evaluate() extension function:saxon:evaluate() extension function:

<xsl:apply-templates select="<xsl:apply-templates select="saxon:evaluatesaxon:evaluate($element)"/>($element)"/>

Page 43: Xslt by asfak mahamud

Apr 10, 2023 43

To write a stylesheet that will work with multiple XSLT processors?

<xsl:stylesheet version="1.0" xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”

xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"

xmlns:saxon="http://icl.com/saxon"

xmlns:xt="http://www.jclark.com/xt"

extension-element-prefixes="redirect saxon xt">

CastCast XSL/XSLT XSL/XSLT

Page 44: Xslt by asfak mahamud

Apr 10, 2023 44

Writing extensions in other languages

CastCast XSL/XSLT XSL/XSLT

<lxslt:component prefix="javascript-extension“ functions="cos sin toRadians"> <lxslt:script lang="javascript"> function cos(d) { return Math.cos(d); } function sin(d) { return Math.sin(d); } function toRadians(d) { return d * Math.PI / 180; } </lxslt:script>

</lxslt:component>

Page 45: Xslt by asfak mahamud

Apr 10, 2023 45

Fallback Processing

CastCast XSL/XSLT XSL/XSLT

Page 46: Xslt by asfak mahamud

Apr 10, 2023 46

AgendaAgenda

► TrailerTrailer

► CastCast XMLXML XPathXPath XSL/XSLTXSL/XSLT

► DirectorDirector XSLT ProcessorsXSLT Processors Java APIJava API

► ProducerProducer TransformationTransformation

► ProductionProduction Html/XHtmlHtml/XHtml XMLXML TextText

► DiscussionDiscussion

James Stewart Donna Reed Lionel Barrymore

Frank Capra

It’s Wonderful Life

Liberty Film Inc.

Page 47: Xslt by asfak mahamud

Apr 10, 2023 47

DirectorDirector XSLT Processors XSLT Processors

► Apache XalanApache Xalanhttp://xml.apache.org/xalanhttp://xml.apache.org/xalan

► SAXONSAXONhttp://saxon.sourceforge.nethttp://saxon.sourceforge.net

► Microsoft’s XML Parser 4.0 (MSXML)Microsoft’s XML Parser 4.0 (MSXML)http://www.microsoft.com/xmlhttp://www.microsoft.com/xml

Page 48: Xslt by asfak mahamud

Apr 10, 2023 48

DirectorDirector Java API Java API

► JDK 1.4 contains all necessary classesJDK 1.4 contains all necessary classes javax.xml.transform package.javax.xml.transform package.

► Lower versions require downloading XSLT processor and SAX Lower versions require downloading XSLT processor and SAX parser. parser.

Page 49: Xslt by asfak mahamud

Apr 10, 2023 49

ProducerProducer Transformation Transformation

Page 50: Xslt by asfak mahamud

Apr 10, 2023 50

AgendaAgenda

► TrailerTrailer

► CastCast XMLXML XPathXPath XSL/XSLTXSL/XSLT

► DirectorDirector XSLT ProcessorsXSLT Processors Java APIJava API

► ProducerProducer TransformationTransformation

► ProductionProduction Html/XHtmlHtml/XHtml XMLXML TextText

► DiscussionDiscussion

James Stewart Donna Reed Lionel Barrymore

Frank Capra

It’s Wonderful Life

Liberty Film Inc.

Page 51: Xslt by asfak mahamud

Apr 10, 2023 51

ProductionProduction

► Stage setup and action !!Stage setup and action !!

Let’s see some demos…………Let’s see some demos…………

Page 52: Xslt by asfak mahamud

Apr 10, 2023 52

AgendaAgenda

► TrailerTrailer

► CastCast XMLXML XPathXPath XSL/XSLTXSL/XSLT

► DirectorDirector XSLT ProcessorsXSLT Processors Java APIJava API

► ProducerProducer TransformationTransformation

► ProductionProduction Html/XHtmlHtml/XHtml XMLXML TextText

► DiscussionDiscussion

James Stewart Donna Reed Lionel Barrymore

Frank Capra

It’s Wonderful Life

Liberty Film Inc.

Page 53: Xslt by asfak mahamud

Apr 10, 2023 53

DiscussionDiscussion

► Something from XSLT 2.0 Something from XSLT 2.0 GroupingGrouping Function DefinitionsFunction Definitions Result DocumentsResult Documents TypingTyping

Page 54: Xslt by asfak mahamud

Apr 10, 2023 54

Discussion Discussion XSLT 2.0 - GroupingXSLT 2.0 - Grouping

<paper> <title>XML and PDF in Publishing Workflows</title> <author>Myers, Charles</author></paper><paper> <title>On the Way to XML</title> <author>Parsons, Jonathan</author> <author>Caisley, Phil</author></paper>

<author> <name>Caisley, Phil</name> <paper>On the Way to XML</paper></author><author> <name>Myers, Charles</name> <paper>XML and PDF in Publishing Workflows</paper></author><author> <name>Parsons, Jonathan</name> <paper>On the Way to XML</paper></author>

Page 55: Xslt by asfak mahamud

Apr 10, 2023 55

Discussion Discussion XSLT 2.0 - GroupingXSLT 2.0 - Grouping

► Usually Muenchian Method (keys) in XSLT 1.0 is used.Usually Muenchian Method (keys) in XSLT 1.0 is used.

► XSLT 2.0 has XSLT 2.0 has <xsl:for-each-group><xsl:for-each-group> select select attribute identifies items to groupattribute identifies items to group grouping by value calculates grouping keygrouping by value calculates grouping key

►group-by group-by groups all itemsgroups all items►group-adjacent group-adjacent groups adjacent itemsgroups adjacent items

grouping in sequence identifies start/end of groupgrouping in sequence identifies start/end of group►group-starting-with group-starting-with identifies start of groupidentifies start of group►group-ending-with group-ending-with identifies end of group identifies end of group

Use Use current-group()current-group() to get members of current group, to get members of current group, current-current-grouping-key()grouping-key() to get value for current group to get value for current group

Page 56: Xslt by asfak mahamud

Apr 10, 2023 56

<paper> <title>XML and PDF in Publishing Workflows</title> <author>Myers, Charles</author></paper><paper> <title>On the Way to XML</title> <author>Parsons, Jonathan</author> <author>Caisley, Phil</author></paper>

<author> <name>Caisley, Phil</name> <paper>On the Way to XML</paper></author><author> <name>Myers, Charles</name> <paper>XML and PDF in Publishing Workflows</paper></author><author> <name>Parsons, Jonathan</name> <paper>On the Way to XML</paper></author>

<xsl:for-each-group select="paper" group-by="author"> <xsl:sort select="current-grouping-key()" /> <author> <name> <xsl:value-of select="current-grouping-key()" /> </name> <xsl:for-each select="current-group()"> <paper> <xsl:value-of select="title" /> </paper> </xsl:for-each> </author>

</xsl:for-each-group>

Page 57: Xslt by asfak mahamud

Apr 10, 2023 57

Discussion Discussion XSLT 2.0 - Function DefinitionsXSLT 2.0 - Function Definitions

Page 58: Xslt by asfak mahamud

Apr 10, 2023 58

Discussion Discussion XSLT 2.0 - XSLT 2.0 - Multiple Result DocumentsMultiple Result Documents

► Many XSLT 1.0 processors have extension elements to create Many XSLT 1.0 processors have extension elements to create multiple output documentsmultiple output documents

► XSLT 2.0 has XSLT 2.0 has <xsl:result-document><xsl:result-document>::

<xsl:for-each select="section"> <xsl:result-document href="{@id}.html"> <xsl:apply-templates select="." mode="html" /> </xsl:result-document></xsl:for-each>

Page 59: Xslt by asfak mahamud

Apr 10, 2023 59

Discussion Discussion XSLT 2.0 - XSLT 2.0 - TypingTyping

► XPath 2.0 is strongly typedXPath 2.0 is strongly typed

the type of a value determines how it is treated by some the type of a value determines how it is treated by some operators (e.g. +, =)operators (e.g. +, =)

if the wrong type of value is passed to a function, you will if the wrong type of value is passed to a function, you will get an errorget an error

► Similarly, in XSLT 2.0:Similarly, in XSLT 2.0: the type of a sort key determines how values are sortedthe type of a sort key determines how values are sorted if the wrong type of value is passed as a parameter to a if the wrong type of value is passed as a parameter to a

template, you will get an errortemplate, you will get an error

Page 60: Xslt by asfak mahamud

Apr 10, 2023 60

Discussion Discussion XSLT 2.0 - XSLT 2.0 - TypingTyping

► Declare the type of variables and parameters with Declare the type of variables and parameters with asas attributeattribute holds a SequenceTypeholds a SequenceType

► item test plus occurrence indicatoritem test plus occurrence indicator►xs:integer+xs:integer+ means "one or more integers" means "one or more integers"►element()?element()? means "an optional element" means "an optional element"

► Error if value doesn't comply with typeError if value doesn't comply with type

<xsl:function name="math:power"> <xsl:param name="base" as="xs:decimal" /> <xsl:param name="power" as="xs:integer" /> …</xsl:function>

Page 61: Xslt by asfak mahamud

Apr 10, 2023 61

And at last…………And at last…………

Page 62: Xslt by asfak mahamud

Apr 10, 2023 62

DiscussionDiscussionXSLT Advantages & DisadvantagesXSLT Advantages & Disadvantages

Advantages:Advantages:► Easy display formatted XML Easy display formatted XML

data in browser.data in browser.

► Easier to modify when XML Easier to modify when XML data format changes than to data format changes than to modify DOM and SAX modify DOM and SAX parsing code.parsing code.

► Can be used with database Can be used with database queries that return XML. queries that return XML.

Disadvantages:Disadvantages:► Memory intensive, Memory intensive,

performance hit.performance hit.

► Difficult to implement Difficult to implement complex business rules.complex business rules.

► Have to learn new Have to learn new language.language.

Page 63: Xslt by asfak mahamud

Apr 10, 2023 63

ReferencesReferences

► Features of XSLT 2.0Features of XSLT 2.0 Jeni Tennison Jeni Tennison http://www.jenitennison.comhttp://www.jenitennison.com

► Most of the xslt and xpath examples are fromMost of the xslt and xpath examples are from http://www.zvon.orghttp://www.zvon.org

► Above AllAbove All http://www.w3.org/Style/XSL/http://www.w3.org/Style/XSL/ http://www.w3schools.com/xsl/default.asphttp://www.w3schools.com/xsl/default.asp http://www.w3schools.com/xpath/default.asphttp://www.w3schools.com/xpath/default.asp

Page 64: Xslt by asfak mahamud

Apr 10, 2023 64