Download presentation
Published byPeregrine McKenzie Modified over 9 years ago
1
XML/XSLT What is XML? What is XSLT? From XML to HTML using XSLT
The XSLT processing model An Example from FpML Homework
2
What is XML? XML is an acronym that stands for the eXtensible Markup Language. It is a flexible framework which can be used to create new customized markup languages. HTML, for example, is a markup language with a fixed tag set. <P> <H1> …. XML, on the other hand, does not define any particular set of tags. It allows you to create your own tag set.
3
What is XML’s primary purpose?
Separating data from presentation The range of internet capable devices is growing- WAP phones, pagers, TV sets, web browsers, in car computers, have different presentation requirements. Transmitting data between applications As electronic commerce gathers pace, the amount of data exchanged between organizations is increasing. XML will play a significant role.
4
What is XSLT? XSLT stands for eXtensible Style Sheet Language : Transformations XSLT is an XML language for transforming the structure of an XML Document.
5
What is XSLT’s primary purpose?
With the widespread adoption of XML languages there will be a need to extract and combine data from one set of XML documents to generate another set of XML documents. XSLT In this presentation we will use XSL to convert XML documents to HTML
6
XML to HTML using XSLT (1) The XML document and the associated XSL style sheet may both be transferred to the browser. (2) The server may apply the style sheet to an XML document and the result may be sent to the client. (3) The transformation may occur before the data is placed on the server. James Clark’s XT may be used for (2) or (3). IE5 for (1).
7
XML to HTML using XSLT A bibliography expressed in xml is
converted to a bibliography in html
8
bib.xml <?xml version="1.0" ?> <bib>
<book isbn = " "> <title> XSLT Programmer's Reference </title> <author> Michael Kay </author> </book> <paper> <title> GoTo Statement Considered Harmful </title> <author> Edsger Dijkstra</author> </paper> <book isbn = " "> <title> XML and Java Developing Web Application</title> <author> Maruyama </author> <author> Tamura</author> <author> Uramoto </author> </book>
9
bib.xsl <?xml version="1.0"?>
<!-- XSL to produce a list of ISBN numbers in HTML --> <xsl:stylesheet xmlns:xsl=" version="1.0"> <xsl:template match = "/"> </xsl:template> <html> <title>ISBN Numbers</title> <body> <h1>ISBN Numbers</h1> <ul><xsl:apply-templates/></ul> </body> </html>
10
bib.xsl (continued) <xsl:template match = "book"> <li>
<xsl:value-of select = /> </li> </xsl:template> <xsl:template match = "paper"> </xsl:template> </xsl:stylesheet>
11
bib.html <html> <title>ISBN Numbers</title>
<body> <h1>ISBN Numbers</h1> <ul> <li> </li> <li> </li> </ul> </body> </html>
12
Bib.html
13
bib.xml : : / bib book paper book title author XSLT Prog… Michael Kay
<?xml version="1.0" ?> <bib> </bib> <book isbn = " "> <title> XSLT Programmer's Reference </title> <author> Michael Kay </author> </book> book paper book <paper> <title> GoTo Statement Considered Harmful </title> <author> Edsger Dijkstra</author> </paper> title : author : <book isbn = " "> <title> XML and Java Developing Web Application</title> <author> Maruyama </author> <author> Tamura</author> <author> Uramoto </author> </book> XSLT Prog… Michael Kay
14
bib.html / <html> <title>ISBN Numbers</title>
<body> <h1>ISBN Numbers</h1> <ul> <li> </li> <li> </li> </ul> </body> </html> html title body ul ISBN.. h1 li li 1-86…
15
bib2.xsl <?xml version="1.0"?>
<!-- XSL to produce a list of titles and authors in HTML --> <xsl:stylesheet xmlns:xsl=" version="1.0"> <xsl:template match = "/"> <html> <title>Author(s)/Title</title> <body> <h1>Author(s)/Title</h1> <ul><xsl:apply-templates/></ul> </body> </html> </xsl:template>
16
bib2.xsl (continued) <xsl:template match = "book|paper">
<li> <xsl:for-each select = "author"> <xsl:value-of select = "." /> </xsl:for-each> <i> <xsl:value-of select = "title"/> </i> </li> </xsl:template> </xsl:stylesheet>
17
bib2.html <html> <title>Author(s)/Title</title>
<body> <h1>Author(s)/Title</h1> <ul> <li> Michael Kay <i> XSLT Programmer's Reference </i> </li> <li> Edsger Dijkstra<i> GoTo Statement Considered Harmful </i> <li> Maruyama Tamura Uramoto <i> XML and Java Developing Web Application</i> </ul> </body> </html>
18
bib2.html
19
XML to HTML using XSLT A poem expressed in xml is converted
to a poem expressed in html
20
Poem.xml (1 of 3) <?xml version="1.0" ?> <!-- A poem in XML
Example taken from "XSLT Programmer's reference Michael Kay --> <poem> <author> Rupert Brooke </author> <date> 1912 </date> <title>Song</title>
21
Poem.xml (2 of 3) <stanza>
<line>And suddenly the wind comes soft, </line> <line>And Spring is here again;</line> <line>And the hawthorn quickens with buds of green</line> <line>And my heart with buds of pain.</line> </stanza> <line>My heart all Winter lay so numb,</line> <line>The earth so dead and frore,</line> <line>That I never thought the Spring would come again</line> <line>Or my heart wake any more.</line>
22
Poem.xml (3 of 3) <stanza>
<line>But Winter's broken and earth has woken, </line> <line>And the small birds cry again;</line> <line>And the hawthorn hedge puts forth its buds,</line> <line>And my heart puts forth its pain.</line> </stanza> </poem>
23
Poem.html
24
Poem.xsl (1 of 4) <?xml version="1.0"?>
<!-- XSL to produce an HTML encoded poem XSLT Programmer's reference, Michael Kay --> <xsl:stylesheet xmlns:xsl=" version="1.0"> <xsl:template match = "poem"> <html> <head> <title> <xsl:value-of select="title"/> </title> </head>
25
Poem.xsl (2 of 4) <body>
<xsl:apply-templates select = "title"/> <xsl:apply-templates select = "author"/> <xsl:apply-templates select = "stanza"/> <xsl:apply-templates select = "date"/> </body> </html> </xsl:template>
26
Poem.xsl (3 of 4) <xsl:template match = "title">
<div align="center"><h1><xsl:value-of select="."/></h1></div> </xsl:template> <xsl:template match = "author"> <div align="center"><h2>By <xsl:value-of select="."/></h2></div> <xsl:template match = "date"> <p><i><xsl:value-of select="."/></i></p>
27
Poem.xsl (4 of 4) <xsl:template match="stanza">
<p><xsl:apply-templates select="line"/></p> </xsl:template> <xsl:template match = "line"> <xsl:if test="position() mod 2 = 0"> </xsl:if> <xsl:value-of select="."/><br/> </xsl:stylesheet>
28
XSLT’s Processing Model
Consider the following XML file <person> <name>Alan</name> <age>19</age> </person> We’ll look at a way to view this tree as a set.
29
/ person <person> <name>Alan</name> <age>19</age> </ > </person> name age 19 Alan This is the normal way an XSLT programmer views the document.
30
<person> <name>Alan</name> <age>19</age> </person> We can represent this tree as a set. {person : { name : alan, age : 19, } } A tree will be represented as a set of ordered pairs.
31
Another example {biblio:{ book:{author:Smith,author:Jones,date:1976},
<author> Jones </author> <date> 1976 </date> </book> <author> Bell </author> <date> 1999 </date> <paper> <title> Public key encryption</title> <author> Kensworth </author> </paper> </biblio> book:{author:Bell,date:1999}, paper:{title:Public key encryption, author:Kensworth} } }
32
XSLT uses Structural Recursion
An XSLT stylesheet can be viewed as a function that defines a transformation. O = S(I) I is the input document S is the stylesheet O is the output document
33
An example // This program replaces integers with strings.
f(v) = if isInt(v) then intTwoString(v) else v f({}) = {} f({r : t }) = { r : f(t) } f( t1 union t2 ) = f(t1) union f(t2)
34
An example f(v) = if isInt(v) then intTwoString(v) else v f({}) = {}
f({r : t }) = { r : f(t) } f( t1 union t2 ) = f(t1) union f(t2) f({biblio:{ book:{author:Smith, author:Jones, date:1976}, book:{author:Bell,date:1999}, paper:{title:Public key encryption, author:Kensworth} } }) =
35
An example f(v) = if isInt(v) then intTwoString(v) else v f({}) = {}
f({r : t }) = { r : f(t) } f( t1 union t2 ) = f(t1) union f(t2) We have a match = {biblio: f({ book:{author:Smith, author:Jones, date:1976}, book:{author:Bell,date:1999}, paper:{title:Public key encryption, author:Kensworth} } )
36
We have a match f( t1 union t2 ) = f(t1) union f(t2) f({ book:{author:Smith, author:Jones, date:1976}, book:{author:Bell,date:1999}, paper:{title:Public key encryption, author:Kensworth} }) = f({ book:{author:Smith, author:Jones, date:1976}, book:{author:Bell,date:1999} }) union f({ paper:{title:Public key encryption, author:Kensworth} })
37
f(v) = if isInt(v) then intTwoString(v) else v
f({r : t }) = { r : f(t) } f( t1 union t2 ) = f(t1) union f(t2) We have a match f({ book:{author:Smith, author:Jones, date:1976}, book:{author:Bell,date:1999} }) = f( {book :{author:Smith, author:Jones, date:1976}}) union f( {book:{author:Bell,date:1999}}
38
f(v) = if isInt(v) then intTwoString(v) else v
f({r : t }) = { r : f(t) } f( t1 union t2 ) = f(t1) union f(t2) We have a match f( {book :{author:Smith, author:Jones, date:1976}}) = { book : f({author:Smith, author:Jones, date:1976}) }
39
f(v) = if isInt(v) then intTwoString(v) else v
f({r : t }) = { r : f(t) } f( t1 union t2 ) = f(t1) union f(t2) We have a match f({author:Smith, author:Jones, date:1976}) = f({author:Smith}) union f({author : Jones, date:1976})
40
f(v) = if isInt(v) then intTwoString(v) else v
f({r : t }) = { r : f(t) } f( t1 union t2 ) = f(t1) union f(t2) We have a match f({author:Smith}) = { author : f (Smith) }
41
f(v) = if isInt(v) then intTwoString(v) else v
f({r : t }) = { r : f(t) } f( t1 union t2 ) = f(t1) union f(t2) We have a match { author : f (Smith) } = { author : Smith } … and so on …
42
f({biblio:{ book:{author:Smith, author:Jones, date:1976},
book:{author:Bell,date:1999}, paper:{title:Public key encryption, author:Kensworth} } }) = {biblio:{book:{author:Smith, author:Jones, date:”1976”}, book:{author:Bell,date:”1999”},
43
An Example From The Financial World (FpML)
FpML (Financial products Markup Language) is a new protocol to enable e-commerce activities in the field of financial derivatives. It is based on XML (Extensible Markup Language), the standard meta-language for describing data shared between applications. Ultimately, it will allow for the electronic integration of a range of services, from electronic trading and confirmations to portfolio specification for risk analysis. All categories of over-the-counter (OTC) derivatives will eventually be incorporated into the standard; however, the initial release will focus on interest rate swaps and Forward Rate Agreements (FRAs). Taken from web site
44
Who put FpML together? Goldman Sachs Bank of America IBM BNP Paribas
J.P. Morgan Morgan Stanley Dean Witter PricewaterhouseCoopers Reuters SunGard Trading and Risk Systems S.W.I.F.T. Society for Worldwide Interbank Financial Telecommunication UBS Warburg webMethods Bank of America BNP Paribas Chase Manhattan Bank Citigroup Concordia Net Credit Suisse First Boston Deutsche Bank Extensibility FinancialFusion Fuji Capital Markets
45
An FpML Document <?xml version="1.0" standalone="no"?>
<!-- Copyright (c) 1999 by J.P.Morgan and PricewaterhouseCoopers. PricewaterhouseCoopers refers to the individual member firms of the World wide PricewaterhouseCoopers organization. All rights reserved. --> <!-- version 1.0b2 : August 6, >
46
<fpml:FpML xmlns:fpml='urn:fpml-FpML'
xmlns:m='urn:fpml-money' xmlns:r='urn:fpml-rate'> <fpml:Trade> <fpml:tradeIDs> <tid:TradeIDs xmlns:tid="urn:fpml-TradeID"> <tid:TradeID> <tid:partyReference>XYZ Investement Bank</tid:partyReference> <tid:transactionReferenceNumber>237732</tid:transactionReferenceNumber> </tid:TradeID> <tid:partyReference>ABC Investments</tid:partyReference> <tid:transactionReferenceNumber>1230</tid:transactionReferenceNumber> </tid:TradeIDs> </fpml:tradeIDs>
47
<fpml:product>
<fpswp:FXSwap xmlns:fpswp="urn:fpml-FX-Product-SwapType"> <fpswp:productID>P123908</fpswp:productID> <!-- at the moment valid value is FXSwap. it could be expanded later --> <fpswp:productType>FXSwap</fpswp:productType> <fpswp:nearLeg> <ftsl:FXLegTemplate xmlns:ftsl="urn:fpml-FX-Template-Leg" xmlns:fxs="urn:fpml-shared-FX"> <fxs:ccy1>SFC</fxs:ccy1> <fxs:ccy2>GBP</fxs:ccy2> <fxs:ccy1BuyerReference>ABC Investments</fxs:ccy1BuyerReference> <fxs:ccy2BuyerReference>XYZ Investement Bank</fxs:ccy2BuyerReference> <fxs:ccy1Amount> <m:Money> <m:ccy>SFC</m:ccy> <m:amount> </m:amount> </m:Money> </fxs:ccy1Amount>
48
<fxs:ccy2Amount>
<m:Money> <m:ccy>GBP</m:ccy> <m:amount> </m:amount> </m:Money> </fxs:ccy2Amount> <fxs:settlementDate> </fxs:settlementDate> <fxs:exchangeRate> <r:FXRate> <r:ccy1>SFC</r:ccy1> <r:ccy2>GBP</r:ccy2> <r:type>offer</r:type> <r:quoteBasis>CCY1PERCCY2</r:quoteBasis> <r:rate>1.56</r:rate> </r:FXRate> </fxs:exchangeRate> </ftsl:FXLegTemplate> </fpswp:nearLeg>
49
<fpswp:farLeg>
<ftsl:FXLegTemplate xmlns:ftsl="urn:fpml-FX-Template-Leg" xmlns:fxs="urn:fpml-shared-FX"> <fxs:ccy1>SFC</fxs:ccy1> <fxs:ccy2>GBP</fxs:ccy2> <fxs:ccy1BuyerReference>XYZ Investement Bank</fxs:ccy1BuyerReference> <fxs:ccy2BuyerReference>ABC Investments</fxs:ccy2BuyerReference> <fxs:ccy1Amount> <m:Money> <m:ccy>SFC</m:ccy> <m:amount> </m:amount> </m:Money> </fxs:ccy1Amount> <fxs:ccy2Amount> <m:ccy>GBP</m:ccy> <m:amount> </m:amount> </fxs:ccy2Amount>
50
<fxs:settlementDate>1999-09-01</fxs:settlementDate>
<fxs:exchangeRate> <r:FXRate> <r:ccy1>SFC</r:ccy1> <r:ccy2>GBP</r:ccy2> <r:type>offer</r:type> <r:quoteBasis>CCY1PERCCY2</r:quoteBasis> <r:rate>1.66</r:rate> </r:FXRate> </fxs:exchangeRate> </ftsl:FXLegTemplate> </fpswp:farLeg> </fpswp:FXSwap> </fpml:product>
51
<fpml:partyInformation>
<pty:PartyInformation xmlns:pty="urn:fpml-party" xmlns:a="urn:fpml-contact"> <pty:tradeParties> <pty:Party name="ABC_Trust"> <pty:partyType>COUNTERPARTY</pty:partyType> <pty:corporateInformation> <pty:CorporateInformation> <pty:shortName>ABC Investments</pty:shortName> </pty:CorporateInformation> </pty:corporateInformation> <pty:confirmInformation> <pty:ConfirmInformation> <pty:primaryConfirmContact>
52
<a:Contact> <a:contactName>Jacob Smith</a:contactName> <a:contactOrganizationName>ABC Investments</a:contactOrganizationName> <a:phoneNumber> </a:phoneNumber> <a:faxNumber> </a:faxNumber> <a:contactAddress> <a:Address> <a:streetAddress> <a:StreetAddress> <a:streetLine>123, Park Avenue</a:streetLine> </a:StreetAddress> </a:streetAddress> <a:city>New York</a:city> <a:state>NY</a:state> <a:country>US</a:country> <a:postalCode>10387</a:postalCode> </a:Address> </a:contactAddress> </a:Contact>
53
</pty:primaryConfirmContact>
</pty:ConfirmInformation> </pty:confirmInformation> <pty:settlementInformation> <pty:SettlementInstructions> <pty:settlementContact> <a:Contact> <a:contactName>Jacob Smith</a:contactName> <a:contactOrganizationName>Trade Settlements</a:contactOrganizationName> <a:phoneNumber> </a:phoneNumber> <a:faxNumber> </a:faxNumber> </a:Contact> </pty:settlementContact>
54
<pty:paymentInstructions>
<pty:settlementCurrency>GBP</pty:settlementCurrency> <pty:payFromName>ABC Bank PLC</pty:payFromName> <pty:correspondentInformation> <pty:FIRoutingInformation> <pty:fiName>ABC Bank PLC</pty:fiName> <pty:fiAddress> <a:Address> <a:city>London</a:city> <a:country>UK</a:country> </a:Address> </pty:fiAddress> <pty:fiAccountNumber>123456</pty:fiAccountNumber> <pty:fiRoutingID>ABC45678UK33</pty:fiRoutingID> <pty:fiRoutingIDType>SwiftBIC</pty:fiRoutingIDType> </pty:FIRoutingInformation> </pty:correspondentInformation>
55
<pty:intermediaryInformation>
<pty:FIRoutingInformation> <pty:fiName>XYZ Bank PLC</pty:fiName> <pty:fiAccountNumber>293774</pty:fiAccountNumber> </pty:FIRoutingInformation> </pty:intermediaryInformation> <pty:beneficiaryInformation> <pty:fiName>ABC Brokers</pty:fiName> <pty:fiAccountNumber>/ </pty:fiAccountNumber> <pty:fiReferenceText>For the account of Harry Smith-/ </pty:fiReferenceText> </pty:beneficiaryInformation> </pty:PaymentInstructions> </pty:paymentInstructions> </pty:SettlementInstructions> </pty:settlementInformation> </pty:Party>
56
<!-- Also expected is the full settlement instructions for: <pty:partyReferenceName>XYZ Investment bank</pty:partyReferenceName> ... --> </pty:tradeParties> </pty:PartyInformation> </fpml:partyInformation> </fpml:Trade> </fpml:FpML>
57
FpML to HTML using XSLT <?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl=" xmlns:tid="urn:fpml-TradeID" version="1.0"> <!-- Display party reference data -->
58
<xsl:template match = "/" >
<html> <title>Foreign Exchange Swap</title> <body> <xsl:apply-templates/> </body> </html> </xsl:template>
59
<xsl:template match = "* | text()">
<xsl:apply-templates/> </xsl:template> <xsl:template match="tid:partyReference"> <p> <xsl:value-of select="."/> </p> </xsl:stylesheet>
61
Wireless XSL
62
WML <?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN“ " <wml> <template> <do type="back" label="Back"> <prev/> </do> </template> <card id="main" title="Welcome to my WAP"> <p align="center">I can't say much, since this screen is tiny.<br/> Why don't you visit my <a href="#fave">favorite WAP links.</a> </p> </card>
63
<card id="fave" title="Favorite WAP Links">
<p align="center">These are some WAP sites I would love, if they existed.</p> <p align="left"> <a href="wap.cats.com">Tiny cat pictures</a><br/> <a href="wap.weather.com">The weather</a><br/> <a href="wap.jellybeans.org">One click jelly bean ordering</a> </p> </card> </wml>
64
Homework Consider XML document I <a> <e>
<b> <c>1</c> <c>2</c> </b> <c>3</c> </a> </e> (1) Write an XSLT stylesheet that generates the same document but with all element names capitalized. Use XT. (2) Design a function f = O(I) that defines f(v), f({}) , f({r : t }) and f( t1 union t2 ) so that I is transformed as described in (1).
65
Bibliography XSLT Programmer’s Reference, Michael Kay, Wrox
Data on the Web, Abiteboul, Buneman, Suciu, Morgan Kaufmann XML Bible, Elliotte Rusty Harold, IDG Books
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.