95-733 Internet Technologies
Lecture 2: XML/XSLT
95-733 Internet Technologies
1
XML/XSLT
• What is XML?
• What is XSLT?
• From XML to HTML using XSLT
• The XSLT processing model
• An Example from FpML
• Homework
95-733 Internet Technologies
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. It’s a meta-language.
XHTML, for example, is one XML markup language with a 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 and it allows you to define how
the tag set is organized.
95-733 Internet Technologies
3
What is XML’s primary
purpose?
• Separating data from presentation:
The range of internet capable devices is growingmobile phones, pagers, TV sets, web browsers, in car
computers, may have different presentation requirements.
Examples include HTML 5 for browsers, Android’s
UI Layout language, and MXML for Flash Players.
• Transmitting data between applications:
The amount of data exchanged between organizations is
increasing. SOAP is an XML language. Rest style web
services often return XML. Ajax responses are often in
XML.
95-733 Internet Technologies
4
Some XML Languages
EBXML
RSS
RDFa
Atom
Some for display. Some for data. WSDL
SOAP
BPEL
Some for programming.
XHTML
WML
Chemical Markup Language
OWL
VoiceXML
RDF
XBRL
SVG
Darwin Information Typing Architecture(DITA) RIF
XSLT
WS-CDL
MXML
MathML
FpML
Be sure to read about each of these.CDA
KML (Keyhole Markup
Google Map/Earth)
SAML
95-733 Internet Technologies
GML
5
What is XSLT?
XSLT stands for eXtensible Style Sheet Language : Transformations
XSLT is an XML language for transforming the structure of an XML
Document.
Plays well with CSS.
95-733 Internet Technologies
6
What is XSLT’s primary
purpose?
• With the widespread adoption of XML languages there is a
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 XSLT to convert XML documents
to HTML.
• Other XML languages are just as easily processed – An Enterprise Service Bus,
for example, makes use of XSLT for message transformation.
95-733 Internet Technologies
7
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.
Xalan may be used for (2) or (3). All major browsers for (1).
Internet Technologies
XSLT processors are95-733
callable
from JavaScript or Java or … 8
XML to HTML using XSLT
•A bibliography expressed in xml is
converted to a bibliography in html
95-733 Internet Technologies
9
bib.xml
<?xml version="1.0" ?>
<bib>
<book isbn = "1-861003-12-9">
<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 = "0-201485-43-5">
<title> XML and Java Developing Web Application</title>
<author> Maruyama </author>
<author> Tamura</author>
<author> Uramoto </author>
95-733 Internet Technologies
10
</book>
</bib>
bib.xsl
<?xml version="1.0"?>
<!-- XSL to produce a list of ISBN numbers in HTML -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match = "/">
<html>
<title>ISBN Numbers</title>
<body>
<h1>ISBN Numbers</h1>
<ul><xsl:apply-templates/></ul>
</body>
</html>
</xsl:template>
95-733 Internet Technologies
11
bib.xsl (continued)
<xsl:template match = "book">
<li>
<xsl:value-of select = "@isbn" />
</li>
</xsl:template>
<xsl:template match = "paper">
</xsl:template>
</xsl:stylesheet>
95-733 Internet Technologies
12
bib.html
<html>
<title>ISBN Numbers</title>
<body>
<h1>ISBN Numbers</h1>
<ul>
<li>1-861003-12-9</li>
<li>0-201485-43-5</li>
</ul>
</body>
</html>
95-733 Internet Technologies
13
Bib.html
95-733 Internet Technologies
14
/
bib.xml
<?xml version="1.0" ?>
bib
<bib>
<book isbn = "1-861003-12-9">
<title> XSLT Programmer's Reference </title>
paper
<author> Michael Kay </author> book
book
</book>
<paper>
<title> GoTo Statement Considered Harmful </title>
<author> Edsger
titleDijkstra</author>
author
</paper>
:
:
<book isbn = "0-201485-43-5">
<title> XML and Java Developing Web Application</title>
<author> Maruyama </author>
<author>
Tamura</author>Michael Kay
XSLT
Prog…
<author> Uramoto </author>
95-733 Internet Technologies
15
</book>
</bib>
:
:
/
bib.html
<html>
<title>ISBN Numbers</title>
<body>
<h1>ISBN Numbers</h1>
<ul>
<li>1-861003-12-9</li>
<li>0-201485-43-5</li>
</ul>
</body>
</html>
html
title
ISBN..
li
95-733 Internet Technologies
1-86…
body
ul
h1
li
0-201..
16
bib2.xsl
<?xml version="1.0"?>
<!-- XSL to produce a list of titles and authors in HTML -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform
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>
95-733 Internet Technologies
</xsl:template>
17
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>
95-733 Internet Technologies
18
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>
<li> Maruyama Tamura Uramoto <i> XML and Java Developing Web
Application</i>
</li>
</ul>
</body>
</html>
95-733 Internet Technologies
19
bib2.html
95-733 Internet Technologies
20
Bib3.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<!-- Printing the last three authors in reverse order -->
<xsl:template match = "/">
<html>
<title>Author(s)</title>
<body>
<h1>Author(s)</h1>
<ul>
<xsl:apply-templates select = "/bib/book[2]/author[3]"/>
<xsl:apply-templates select = "/bib/book[2]/author[2]"/>
<xsl:apply-templates select = "/bib/book[2]/author[1]"/>
</ul>
</body>
</html>
95-733 Internet Technologies
</xsl:template>
21
Bib3.xsl (Continued)
<xsl:template match = "author">
<li>
<xsl:value-of select = "."/>
</li>
</xsl:template>
</xsl:stylesheet>
95-733 Internet Technologies
22
Bib3.html
<html>
<title>Author(s)</title>
<body>
<h1>Author(s)</h1>
<ul>
<li> Uramoto </li>
<li> Tamura</li>
<li> Maruyama </li>
</ul>
</body>
</html>
95-733 Internet Technologies
23
95-733 Internet Technologies
24
XML to HTML using XSLT
•A poem expressed in xml is converted
to a poem expressed in html
95-733 Internet Technologies
25
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>
95-733 Internet Technologies
26
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>
<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>
95-733 Internet Technologies
27
</stanza>
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>
95-733 Internet Technologies
28
Poem.html
95-733 Internet Technologies
29
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="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match = "poem">
<html>
<head>
<title>
<xsl:value-of select="title"/>
</title>
</head>
95-733 Internet Technologies
30
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>
95-733 Internet Technologies
31
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>
<xsl:template match = "date">
<p><i><xsl:value-of select="."/></i></p>
</xsl:template>
95-733 Internet Technologies
32
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:template>
</xsl:stylesheet>
95-733 Internet Technologies
Nonbreaking space
  not included
automatically in xml
as in html
33
XSLT’s Processing Model
Consider the following XML file
<person>
<name>Alan</name>
<age>19</age>
<email>alan@his.org</email>
</person>
We’ll look at a way to view this tree as a set.
95-733 Internet Technologies
34
/
person
<person>
<name>Alan</name>
<age>19</age>
<email>alan@his.org </email>
name
</person>
Alan
age
email
19
alan@
This is the normal way an XSLT programmer views the document.
95-733 Internet Technologies
35
<person>
<name>Alan</name>
<age>19</age>
<email>alan@his.org</email>
</person>
We can represent this tree as a set.
{person : { name : alan, age : 19, email : alan@his.org} }
A tree will be represented as a set of ordered pairs.
95-733 Internet Technologies
36
Another example
{biblio:{
book:{author:Smith,author:Jones,date:1976},
<biblio>
book:{author:Bell,date:1999},
<book>
<author> Smith </author>
paper:{title:Public
key encryption, author:Kensworth}
<author> Jones
</author>
<date>
1976 </date>
}
</book>
<book>
}
<author> Bell </author>
<date> 1999 </date>
</book>
<paper>
<title> Public key encryption</title>
<author> Kensworth </author>
</paper>
95-733 Internet Technologies
37
</biblio>
XSLT uses Structural Recursion
We apply transformation rules in a top-down manner.
Non-leafs normally generate recursive calls.
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
95-733 Internet Technologies
38
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)
95-733 Internet Technologies
39
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}
}
}) =
95-733 Internet Technologies
40
An example
f(v)
= if isInt(v) then intTwoString(v) else v
f({})
= {}
We have a match
f({r : t }) = { r : f(t) }
f( t1 union t2 ) = f(t1) union f(t2)
= {biblio: f({
book:{author:Smith, author:Jones, date:1976},
book:{author:Bell,date:1999},
paper:{title:Public key encryption, author:Kenswor
}
)
}
95-733 Internet Technologies
41
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},
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} })
95-733 Internet Technologies
42
f(v)
= if isInt(v) then intTwoString(v) else v
f({})
= {}
f({r : t })
= { r : f(t) }
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}
}) =
f( {book :{author:Smith, author:Jones, date:1976}}) union
f( {book:{author:Bell,date:1999}}
95-733 Internet Technologies
43
f(v)
= if isInt(v) then intTwoString(v) else v
f({})
= {}
f({r : t })
= { r : f(t) }
We have a match
f( t1 union t2 ) = f(t1) union f(t2)
f( {book :{author:Smith, author:Jones, date:1976}}) =
{ book : f({author:Smith, author:Jones, date:1976}) }
95-733 Internet Technologies
44
f(v)
= if isInt(v) then intTwoString(v) else v
f({})
= {}
f({r : t })
= { r : f(t) }
We have a match
f( t1 union t2 ) = f(t1) union f(t2)
f({author:Smith, author:Jones, date:1976}) =
f({author:Smith}) union f({author : Jones, date:1976})
95-733 Internet Technologies
45
f(v)
= if isInt(v) then intTwoString(v) else v
f({})
= {}
f({r : t })
= { r : f(t) }
We have a match
f( t1 union t2 ) = f(t1) union f(t2)
f({author:Smith}) = { author : f (Smith) }
95-733 Internet Technologies
46
f(v)
= if isInt(v) then intTwoString(v) else v
f({})
= {}
f({r : t })
= { r : f(t) }
We have a match
f( t1 union t2 ) = f(t1) union f(t2)
{ author : f (Smith) } = { author : Smith }
… and so on …
95-733 Internet Technologies
47
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”},
paper:{title:Public key encryption,
author:Kensworth}
}
}
95-733 Internet Technologies
48
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 www.fpml.org.
95-733 Internet Technologies
49
Who put FpML together?
Bank of America
BNP Paribas
Chase Manhattan Bank
Citigroup
Concordia Net
Credit Suisse First Boston
Deutsche Bank
Extensibility
FinancialFusion
Fuji Capital Markets
Goldman Sachs
IBM
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
95-733 Internet Technologies
50
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, 1999 -->
95-733 Internet Technologies
51
<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:TradeID>
<tid:partyReference>ABC Investments</tid:partyReference>
<tid:transactionReferenceNumber>1230</tid:transactionReferenceNumber>
</tid:TradeID>
</tid:TradeIDs>
</fpml:tradeIDs>
95-733 Internet Technologies
52
<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>15600000</m:amount>
</m:Money>
</fxs:ccy1Amount>
95-733 Internet Technologies
53
<fxs:ccy2Amount>
<m:Money>
<m:ccy>GBP</m:ccy>
<m:amount>10000000</m:amount>
</m:Money>
</fxs:ccy2Amount>
<fxs:settlementDate>1999-08-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.56</r:rate>
</r:FXRate>
</fxs:exchangeRate>
</ftsl:FXLegTemplate>
</fpswp:nearLeg>
95-733 Internet Technologies
54
<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>16600000</m:amount>
</m:Money>
</fxs:ccy1Amount>
<fxs:ccy2Amount>
<m:Money>
<m:ccy>GBP</m:ccy>
<m:amount>10000000</m:amount>
</m:Money>
</fxs:ccy2Amount>
95-733 Internet Technologies
55
<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>
95-733 Internet Technologies
56
<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>
95-733 Internet Technologies
57
<a:Contact>
<a:contactName>Jacob Smith</a:contactName>
<a:contactOrganizationName>ABC Investments</a:contactOrganizationN
<a:emailAddress>jsmith@abc.com</a:emailAddress>
<a:phoneNumber>212-888-1234</a:phoneNumber>
<a:faxNumber>212-888-8888</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>
95-733 Internet Technologies
58
</a:Contact>
</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:contactOrganizationN
<a:phoneNumber>212-888-1434</a:phoneNumber>
<a:faxNumber>212-888-6668</a:faxNumber>
</a:Contact>
</pty:settlementContact>
95-733 Internet Technologies
59
<pty:paymentInstructions>
<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>
95-733 Internet Technologies
60
<pty:intermediaryInformation>
<pty:FIRoutingInformation>
<pty:fiName>XYZ Bank PLC</pty:fiName>
<pty:fiAccountNumber>293774</pty:fiAccountNumber>
</pty:FIRoutingInformation>
</pty:intermediaryInformation>
<pty:beneficiaryInformation>
<pty:FIRoutingInformation>
<pty:fiName>ABC Brokers</pty:fiName>
<pty:fiAccountNumber>/883733333</pty:fiAccountNumber>
<pty:fiReferenceText>For the account of Harry Smith-/883733333
</pty:fiReferenceText>
</pty:FIRoutingInformation>
</pty:beneficiaryInformation>
</pty:PaymentInstructions>
</pty:paymentInstructions>
</pty:SettlementInstructions>
</pty:settlementInformation>
</pty:Party>
95-733 Internet Technologies
61
<!-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>
95-733 Internet Technologies
62
FpML to HTML using XSLT
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tid="urn:fpml-TradeID"
version="1.0">
<!-- Display party reference data -->
95-733 Internet Technologies
63
<xsl:template match = "/" >
<html>
<title>Foreign Exchange Swap</title>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
95-733 Internet Technologies
64
<xsl:template match = "* | text()">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="tid:partyReference">
<p>
<xsl:value-of select="."/>
</p>
</xsl:template>
</xsl:stylesheet>
95-733 Internet Technologies
65
95-733 Internet Technologies
66
XSLT Transforms Data for different devices.
95-733 Internet Technologies
67
WML
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN“
"http://www.wapforum.org/DTD/wml_1.1.xml">
<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>
95-733 Internet Technologies
68
</card>
<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”>Dog 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>
95-733 Internet Technologies
69
Homework
Consider XML document I
<a>
<e>
<b>
<c>1</c>
<c>2</c>
</b>
<a>
<c>3</c>
</a>
</e>
</a>
(1) Write an XSLT stylesheet that
generates the same document
but with all element names
capitalized. Use Xalan.
(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).
95-733 Internet Technologies
70
Bibliography
XSLT Programmer’s Reference, Michael Kay, Wrox
Data on the Web, Abiteboul, Buneman, Suciu, Morgan Kaufmann
XML Bible, Elliotte Rusty Harold, IDG Books
95-733 Internet Technologies
71