Professional Documents
Culture Documents
What is XML?
Extensible Markup Language, or XML for short, is a new technology for web
applications. XML is a World Wide Web Consortium standard that lets you create your
own tags. XML simplifies business-to business transactions on the web.
2
What is XML?
• XML stands for eXtensible Markup Language • XML is a markup language much like
HTML that is used to describe data • XML tags are not predefined - you must define
your own tags • XML uses a Document Type Definition (DTD) or an XML Schema to
describe the data • XML with a DTD or XML Schema is designed to be self-descriptive
• XML uses a CSS (Cascading Style Sheets) to display information
3
“XML is going to be the main language for exchanging financial information
between businesses over the Internet. A lot of interesting B2B applications are
under development .” A Document Type Definition or an XML Schema to specify what
tags are allowed or required A validation service to confirm that a given XML
document is syntactically correct Is independent of any hardware, software,
operating system, programming language…
4
Why Do We Need XML?
Why do we need XML when everyone's browser supports HTML today? To answer this
question, look at the sample HTML Code shown. HTML tags are for browsing; they're
meant for interactions between humans and computers.
5
Rendering HTML When rendered, the HTML in the previous example looks like this. As
you can see, HTML tags describe how something should render. They don't contain any
information about what the data is, they only describe how it should look.
6
Sample XML Code Now let's look at some sample XML Code. With XML, you can
understand the meaning of the tags. More importantly, a computer can understand
them as well. It's easier for a computer to understand that the tag
<zipcode>34829</zipcode> is a zip code.
7
Rendering XML XML from the previous example might be rendered like this. Notice
that even though the tags are different, they can still be rendered just like HTML.
8
XML Document Structure
An XML document consists of three parts, in the order given: 1. An XML declaration
(which is technically optional, but recommended in most normal cases) 2. A document
type declaration that refers to a DTD (which is optional, but required if you want
validation) 3. A body or document instance (which is required) Collectively, the
XML declaration and the document type declaration are called the XML prolog
9
XML Declaration The XML declaration is a piece of markup that identifies this as
an XML document. The declaration also indicates whether the document can be
validated by referring to an external Document Type Definition (DTD). The minimal
XML declaration is: <?xml version="1.0" ?> The formal definition of an XML
declaration, according to the XML 1.0 specification : XMLDecl ::= '<?xml'
VersionInfo EncodingDecl? SDDecl? S? '?>' The following declaration means that
there is an external DTD on which this document depends. <?xml version="1.0"
standalone="no" ?> 10
if your XML document has no associated DTD, the correct XML declaration is: <?xml
version="1.0" standalone="yes" ?> The optional encoding part of the declaration
tells the XML processor (parser) how to interpret the bytes based on a particular
character set. The default encoding is UTF-8 <?xml version="1.0" encoding="UTF-8" ?
> <?xml version="1.0" encoding="ISO-8859-7" ?> <?xml version="1.0" standalone="no"
encoding="UTF-8" ?> Is the next example valid? <?xml version="1.0" encoding='UTF-8'
standalone='no'?> Neither of the following XML declarations is valid. <?XML
VERSION="1.0" STANDALONE="no"?> <?xml version="1.0" standalone="No"?>
11
Document Type Declaration The purpose of this declaration is to announce the root
element and to provide the location of the DTD. The general syntax is: <!DOCTYPE
RootElement (SYSTEM | PUBLIC) ExternalDeclarations? [InternalDeclarations]? >
Examples: <!DOCTYPE Employees SYSTEM "employees.dtd"> Similarly, <!DOCTYPE
PriceList SYSTEM "prices.dtd"> <!DOCTYPE Employees SYSTEM "../dtds/employees.dtd">
<!DOCTYPE Employees SYSTEM "http://somewhere.com/dtds/employees.dtd"> Processing
instructions - An example processing instruction that causes style to be determined
by a style sheet: <?xml-stylesheet type="text/css" href="xmlstyle.css"?> 12
PUBLIC identifier: This is used in formal environments to declare that a given DTD
is available to the public for shared use. Syntax is a little different: <!DOCTYPE
RootElement PUBLIC PublicID URI> Example: <!DOCTYPE Instrument PUBLIC
"-//NASA//Instrument Markup Language 0.2//EN"
"http://pioneer.gsfc.nasa.gov/public/iml/iml.dtd"> In this case the PublicID is:
"-//NASA//Instrument Markup Language 0.2//EN“ The URI that locates the DTD is:
http://pioneer.gsfc.nasa.gov/public/iml/iml.dtd The complete prolog for NASA
example is:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
16
XML Elements
Elements have Content Elements can have different content types. An XML element is
everything from (including) the element's start tag to (including) the element's
end tag. An element can have element content, mixed content, simple content, or
empty content. An element can also have attributes. In the example above, book has
element content, because it contains other elements. Chapter has mixed content
because it contains both text and other elements. Para has simple content (or text
content) because it contains only text. Prod has empty content, because it carries
no information. In the example above only the prod element has attributes. The
attribute named id has the value "33-657". The attribute named media has the value
"paper".
17
Elements & Attributes:
:• • • • • XML elements must follow these naming rules: Names can contain letters,
numbers, and other characters Names must not start with a number or punctuation
character Names must not start with the letters xml (or XML or Xml ..) Names cannot
contain spaces
Use elements to describe data Use attributes to present information that is not
part of the data – For example, the file type or some other information that would
be useful in processing the data, but is not part of the data.
<note date="12/11/99"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading>
<body>Don't forget me this weekend!</body> </note>
18
An Example XML Document
<?xml version=“1.0”?> xml-declaration <artist>
<name><first>Vincent</first><last>van Gogh</last></name>
<born><date>1853</date><place>Holland</place></born>
<died><date>1890</date><place>France</place></died> <artwork> start-tag element
content end-tag <artifact> <title>The Starry Night</title> <date>1889</date> root
element <material>Oil on Canvas</material> <dim> <height
metrics_type="in">29</height> <width metrics_type="in">36 1/4</width> </dim>
<location>Museum of Modern Art, NewYork</location> <image file="starry-
night.jpg"></image> </artifact> </artist>
19
An Example XML Document
<?xml version=“1.0”?> <artist> <name><first>Vincent</first><last>van
Gogh</last></name> <born><date>1853</date><place>Holland</place></born>
<died><date>1890</date><place>France</place></died> <artwork> <artifact> <title>The
Starry Night</title>attribute name attribute value <date>1889</date> <material>Oil
on Canvas</material> <dim> <height metrics_type="in">29</height> <width
metrics_type="in">36 1/4</width> </dim> <location>Museum of Modern Art,
NewYork</location> <image file="starry-night.jpg"></image> </artifact> </artist>
20
Document Type Definition (DTD)
• The purpose of a DTD is to define the structure of an XML document. It defines
the structure with a list of legal elements • With DTD, each of your XML files can
carry a description of its own format with it. • With a DTD, independent groups of
people can agree to use a common DTD for interchanging data. • Your application can
use a standard DTD to verify that the data you receive from the outside world is
valid. • You can also use a DTD to verify your own data. • XML files can be
validated against the definition before a program tries to process the data.
– Then you don’t have to worry about accounting for all kinds of error conditions.
21
DTD
• Internal
– Put the DTD right into the XML file
<?xml version="1.0"?> <!DOCTYPE note [ First, <!ELEMENT note
(to,from,heading,body)> there is the definition of the <!ELEMENT to (#PCDATA)> file
structure, then <!ELEMENT from (#PCDATA)> the actual data <!ELEMENT heading
(#PCDATA)> comes later <!ELEMENT body (#PCDATA)> ]> <note> <to>Tove</to>
<from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this
weekend</body> </note> 22
DTD
• External
<?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to>
<from>Jani</from> <heading>Reminder </heading> <body>Don't forget me this weekend!
</body> </note>
23
An Example XML DTD
<?xml version=“1.0”?> <!ELEMENT artist (name , born , died? , artwork?)> <!ELEMENT
name (first , last)> <!ELEMENT first (#PCDATA)> GROUP: element <!ELEMENT last
(#PCDATA)> with children <!ELEMENT born (date , place?)> (sequences) <!ELEMENT died
(date , place?)> <!ELEMENT date (#PCDATA)> Declaring zero or <!ELEMENT place
(#PCDATA)> one occurrences of <!ELEMENT artwork (artifact*)> the same <!ELEMENT
artifact (title , date? , material , dim , location , image)> element <!ELEMENT
title (#PCDATA)> (?) <!ELEMENT material (#PCDATA)> Declaring zero or <!ELEMENT dim
(height , width)> <!ELEMENT height (#PCDATA)> more occurrences of <!ATTLIST height
metrics_type CDATA #IMPLIED > the same element <!ELEMENT width (#PCDATA)> (*) <!
ATTLIST width metrics_type CDATA #IMPLIED > <!ELEMENT location (#PCDATA)> Elements
with only <!ELEMENT image EMPTY)> character data <!ATTLIST image file CDATA
#IMPLIED > 24
XML DTD Building Blocks
• Elements
– Elements are the main building blocks of both XML and HTML documents – Tags are
used to markup elements (e.g. <name>… </name>) – Elements are nested and may define
a specific sequence – Attributes provide extra information about elements (other
than their content and type) – Attributes are always placed inside the starting tag
of an element Attributes always come in name/value pairs (e.g. <width
metrics_type="in">36 1/4</width>) – May be applied to one specific instance of a
given element – Entities are variables used to define common text
25
• Attributes
• Entities
XML DTD Elements
Em pty elem ents
< !ELEM EN T ageEM PTY , XM L exam ple < im age /> im >
Elem ents w ith only character < !ELEM EN T height(#P CD ATA )> data Elem ents w
ith any contents Elem ents w ith children (sequences)
< !ELEM EN T note AN Y> < !ELEM EN T nam e (first last)> ,
Declaring only one occurrence <!ELEM EN T artw o rk(artifact > ) of the sam e elem
ent Declaring m inim um one < artw o rk(artifact )> + occurrence of the sam e elem
ent !ELEM EN T Declaring zero or m ore occurrences of the sam e elem ent Declaring
either/or content Declaring m ixed content
< !ELEM EN T artw o rk(artifact *)> < !ELEM EN T artifact(title d ate (im ag e|
location))> , , < !ELEM EN T artifact(#PC D AT A| title | date | im age) > *
26
XML DTD Attributes and Entities
Attribute declaration example Default attribute value Implied attribute Required
attribute Fixed attribute value Enumerated attribute values
<!ATTLISTsquare width CDATA "0"> XML example: < square width="100"></quare s > <!
ATTLISTpayment type CDATA "check"> XML example: < payment type="check" /> <!
ATTLISTcontact fax CDATA #IMPLIED > XML example: < contact fax="555-667788" /> <!
ATTLIST person number CDATA #REQUIRED > XML example: < person number="5677" /> <!
ATTLISTsender company CDATA #FIXED "Microsoft"> XML example: < sender
company="Microsoft" /> <!ATTLISTpayment type (check|cash) "cash"> XML example: <
payment type="check" /> or < payment type="cash" /> <!ENTITY writer "Donald Duck.">
Entity declaration
28
Element with only character data: <!ELEMENT element-name (#PCDATA)> example:<!
ELEMENT from (#PCDATA)> Element with any data: <!ELEMENT element-name ANY>
example:<!ELEMENT note ANY> Elements with children <!ELEMENT element-name (child-
element-name)> or <!ELEMENT element-name (child-element-name,child-
elementname, .....)> example: <!ELEMENT note (to,from,heading,body)> Full
declaration of note <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
29
XML Namespaces
• XML Namespaces provide a method to avoid element name conflicts. • Conflicting
names make consistent interpretation impossible • XML identifies namespaces to make
the usage clear. • In XML, element names are defined by the developer. This often
results in a conflict when trying to mix XML documents from different XML
applications.
30
An example
<table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table> <table> <name>African
Coffee Table</name> <width>80</width> <length>120</length> </table>
If these XML fragments were added together, there would be a name conflict. Both
contain a <table> element, but the elements have different content and meaning. An
XML parser will not know how to handle these differences.
31
Solving the Name Conflict Using a Prefix Name conflicts in XML can easily be
avoided using a name prefix. <h:table> <h:tr> <h:td>Apples</h:td>
<h:td>Bananas</h:td> </h:tr> </h:table> <f:table> <f:name>African Coffee
Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> In the
example above, there will be no conflict because the two <table> elements have
different names.
32
XML Namespaces - The xmlns Attribute
When using prefixes in XML, a so-called namespace for the prefix must be defined.
The namespace is defined by the xmlns attribute in the start tag of an element.
Syntax: xmlns:prefix="URI". <root> <h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> <f:table
xmlns:f="http://www.w3schools.com/furniture"> <f:name>African Coffee Table</f:name>
<f:width>80</f:width> <f:length>120</f:length> </f:table> 33 </root>
• In the example above, the xmlns attribute in the <table> tag give the h: and f:
prefixes a qualified namespace. • When a namespace is defined for an element, all
child elements with the same prefix are associated with the same namespace. •
Namespaces can be declared in the elements where they are used or in the XML root
element:
The use of a prefix (h or f here) clearly separates the two meanings of the tag
“table.” Tag attribute xmlns (xml name space) identifies each prefix with a unique
name. The link is not used by the parser to check the definition. The link may
contain information about the namespace.
34
Default name space
• Using a default namespace in an element avoids the need to repeat the prefix on
each child element.
<table xmlns="http://www.w3.o rg/TR/html4/"> <tr> <td>Apples</td> <td>Bananas</td>
</tr> </table>
Here, all subelements of “table” have the name related to the namespace indicated
in the xmlns attribute.
35
XML Schema
XML Schema is an XML-based alternative to DTD. An XML schema describes the
structure of an XML document. The XML Schema language is also referred to as XML
Schema Definition (XSD).
37
Syntax and semantics
• Syntax determines the rules for a wellformed statement. • Semantics determines
how a well-formed statement will be used. • Use of a schema can help detect errors
in use within a well-formed statement.
– Ex: May include a range of legal values.
38
Schema example for “note”
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3s.com" xmlns=http://www.w3schools.com
elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType>
<xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from"
type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element
name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
</xs:schema>
39
The <schema> Element The <schema> element is the root element of every XML Schema:
<?xml version="1.0"?> <xs:schema> ... ... </xs:schema> The <schema> element may
contain some attributes. A schema declaration often looks something like this: <?
xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com" xmlns=http://www.w3schools.com
elementFormDefault="qualified"> ... </xs:schema>
40
Reference to a schema
<?xml version="1.0"?> <note xmlns="http://www.w3s.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd"> <to>Tove</to>
<from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!
</body> </note>
Default namespace. All elements used in this XML doc are declared here.
42
Attributes
All attributes are declared as simple types. Elements with attributes are
considered complex type. Syntax for defining an attribute: <xs:attribute name="xxx"
type="yyy"/> Defining an attribute for an element:
<lastname lang="EN">Smith</lastname>
43
Displaying raw XML documents
Viewing XML Files in Firefox and Internet Explorer: Open the XML file (typically by
clicking on a link) - The XML document will be displayed with color-coded root and
child elements. A plus (+) or minus sign (-) to the left of the elements can be
clicked to expand or collapse the element structure. To view the raw XML source
(without the + and - signs), select "View Page Source" or "View Source" from the
browser menu. Viewing XML Files in Netscape 6: Open the XML file, then rightclick
in XML file and select "View Page Source". The XML document will then be displayed
with color-coded root and child elements. Viewing XML Files in Opera 7: Open the
XML file, then right-click in XML file and select "Frame" / "View Source". The XML
document 44 will be displayed as plain text.
XML support in IE 5.0+
Internet Explorer 5.0 has the following XML support: • Viewing of XML documents •
Full support for W3C DTD standards • XML embedded in HTML as Data Islands • Binding
XML data to HTML elements • Transforming and displaying XML with XSL • Displaying
XML with CSS • Access to the XML DOM (Document Object Model) *Netscape 6.0 also
have full XML support
45
Viewing XML Documents with IE 5.0
46
Displaying XML documents with CSS
47
What is CSS ?
• CSS stands for Cascading Style Sheets • Styles define how to display HTML/XML
elements • Styles are normally stored in Style Sheets • Styles were added to HTML
4.0 to solve a problem • External Style Sheets can save you a lot of work •
External Style Sheets are stored in CSS files • Multiple style definitions will
cascade into on – cascading order
48
CSS Syntax
• Use of External Style Sheets
<?xml version=“1.0”?> <!DOCTYPE artist SYSTEM ”artist.dtd”> <?xml-stylesheet
type="text/css" href="artist.css"?> <artist> . . .
• Basic syntax
title { font-family: Palatino; font-size: 16pt; font-weight: bold; text-align:
center; color: #6699CC; }
• Grouping
artifact, artist, artwork, name, title { font-family: Arial; font-size: 16pt;
display: block; }
49
CSS Display Properties
• Background properties (color, image, position) • Text properties (color,
alignment, direction, letter-spacing) • Font properties (family, size, style,
weight) • Border properties (color, style, width) • Margin properties • Padding
properties • Classification properties (visibility, inline, block) • Pseudo-
elements (:before, :after)
50
The following document shows a document with a link to a cascading style sheet: <?
xml version="1.0"?> <?xml-stylesheet type="text/css" href="xmlstyle.css"?>
<DATABASE> <TITLE>List of Items Important to Markup Languages</TITLE>
<TITLE2>Languages</TITLE2> <LANGUAGES>SGML<LANGUAGES> <LANGUAGES>XML</LANGUAGES>
<LANGUAGES>HTML<LANGUAGES> <TITLE2>Other</TITLE2> <OTHER>DTD<OTHER>
<OTHER>DSSL<OTHER> <OTHER>Style Sheets</OTHER> </DATABASE> The below line, which is
a part of the XML document above, is a processing instruction and is a part of the
prolog. 51 <?xml-stylesheet type="text/css" href="xmlstyle.css"?>
xmlstyle.css
DATABASE { display: block } TITLE { display: block; font-family: arial; color:
#008000; font-weight: 600; font-size: 22; text-align: center } OTHER { display:
block; list-style-type: square; font-family: arial; color: #0000ff; font-weight:
200; font-size: 14 }
54
Interpreting XML Documents When you need to interpret an XML document, there are
two APIs you can use: 1. The Document Object Model, or DOM, and 2. the Simple API
for XML, or SAX. The DOM is a standard of the World Wide Web Consortium that
creates a tree view of your XML document. The DOM provides standard functions for
manipulating the elements in your document.
55
Interpreting XML Documents
The SAX API notifies you when certain events happen as it parses your document.
When you respond to an event, any data you don't specifically store is discarded.
56
SAX or DOM? Why would you use SAX or DOM? If your document is very large, using SAX
will save significant amounts of memory when compared to using DOM. This is
especially true if you only need a few elements in a large document. On the other
hand, the rich set of standard functions provided by the DOM isn't available when
you use SAX.
57
A Simple Example
XML Declaration (“this is XML”)
Binary encoding used in file
58
Example Revisited
element tags <partorders xmlns=“http://myco.org/Spec/partorders” > <order ref=“x23-
2112-2342” date=“25aug1999-12:34:23h”> <desc> Gold sprockel grommets, with matching
hamster </desc> <part number=“23-23221-a12” /> <quantity units=“gross”> 12
</quantity> <deliveryDate date=“27aug1999-12:00h” /> </order> <order ref=“x23-2112-
2342” date=“25aug1999-12:34:23h”> . . . Order something else . . . </order>
Hierarchical, structured information </partorders>
59
desc
text
order part
quantity
text
xmlns=
delivery-date
order
ref= date=
60
XSLT style sheets
XSL - XML Style Sheet Language consists of three parts: XSLT - a language for
transforming XML documents XPath - a language for navigating in XML documents
XSL-FO - a language for formatting XML documents XSLT is the recommended style
sheet language of XML. XSLT (eXtensible Stylesheet Language Transformations) is far
more sophisticated than CSS. XSLT is a language for transforming XML documents into
XHTML documents or to other XML documents. With XSLT you can add/remove elements
and attributes to or from the output file. You can also rearrange and sort
elements, perform tests and make decisions about which elements to hide and
display, and a lot more.
61
XSL Style Sheet Declaration The root element that declares the document to be an
XSL style sheet is <xsl:stylesheet> or <xsl:transform> Both are completely
synonymous and either can be used! The correct way to declare an XSL style sheet :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> or:
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> To
get access to the XSLT elements, attributes and features we must declare the XSLT
namespace at the top of the document.
62
XSLT ELEMENTS <xsl:template> Element The <xsl:template> element is used to build
templates. The match attribute is used to associate a template with an XML element.
The match attribute can also be used to define a template for the entire XML
document. The value of the match attribute is an XPath expression (i.e. match="/"
defines the whole document). <xsl:value-of> Element The <xsl:value-of> element can
be used to extract the value of an XML element and add it to the output stream of
the transformation <xsl:for-each> Element The <xsl:for-each> element allows you to
do looping in XSLT. The XSL <xsl:for-each> element can be used to select every XML
63 element of a specified node-set
<xsl:sort> Element
is used to sort the output. To sort the output, simply add an <xsl:sort> element
inside the <xsl:for-each> element in the XSL file
<xsl:if> Element
is used to put a conditional test against the content of the XML file. To put a
conditional if test against the content of the XML file, add an <xsl:if> element to
the XSL document.
<xsl:choose> Element
is used in conjunction with <xsl:when> and <xsl:otherwise> to express multiple
conditional tests.
Syntax
<xsl:choose> <xsl:when test="expression"> ... some output ... </xsl:when>
<xsl:otherwise> ... some output .... </xsl:otherwise> </xsl:choose>
64
<xsl:apply-templates> Element The <xsl:apply-templates> element applies a template
to the current element or to the current element's child nodes. If we add a select
attribute to the <xsl:apply-templates> element it will process only the child
element that matches the value of the attribute. We can use the select attribute to
specify the order in which the child nodes are processed.
65
Examples on XSLT: Consider to Transform the following XML document
("cdcatalog.xml") into XHTML: <cd> <?xml version="1.0" encoding="ISO-8859-1"?>
<title>Greatest Hits</title> <catalog> <artist>Dolly Parton</artist> <cd>
<country>USA</country> <title>Empire Burlesque</title> <company>RCA</company>
<artist>Bob Dylan</artist> <price>9.90</price> <country>USA</country>
<year>1982</year> <company>Columbia</company> </cd> <price>10.90</price> <cd>
<year>1985</year> <title>Still got the blues</title> </cd> <artist>Gary
Moore</artist> <country>UK</country> <cd> <company>Virgin Records <title>Hide your
heart</title> <artist>Bonnie Tyler</artist> </company> <country>UK</country>
<price>10.20</price> <company>CBS Records</company> <year>1990</year>
<price>9.90</price> </cd> <year>1988</year> … … … 66 </cd> </catalog>
Create an XSL Style Sheet: ("cdcatalog.xsl") with a transformation template:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0“
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html>
<body> < h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32">
<th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr>
<td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td>
</tr> </xsl:for-each> </table> </body> </html> </xsl:template> 67 </xsl:stylesheet>
Link the XSL Style Sheet to the XML Document
Add the XSL style sheet reference to your XML document ("cdcatalog.xml"):
69
Modifying cdcatalog.xsl <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet
version="1.0“ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template
match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr
bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <tr> <td>.</td> <td>.</td>
</tr> </table> </body> </html> </xsl:template>
</xsl:stylesheet>
70
OUTPUT:
My CD Collection
Title Artist
71
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html>
<body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32">
<th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:sort
select="artist" /> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of
select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html>
</xsl:template> 72 </xsl:stylesheet>
OUTPUT:
My CD Collection
Title Artist
Romanza
Andrea Bocelli
Bee Gees
Empire Burlesque
Bob Dylan
Bonnie Tyler
Cat Stevens
73
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0“
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html>
<body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32">
<th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr>
<td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10">
<td bgcolor="#ff00ff"> <xsl:value-of select="artist"/> </td> </xsl:when> <xsl:when
test="price > 9"> <td bgcolor="#cccccc"> <xsl:value-of select="artist"/></td>
</xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td>
</xsl:otherwise> </xsl:choose> 74 </tr> </xsl:for-each>
</table></body></html></xsl:template>
OUTPUT:
My CD Collection
Title Empire Burlesque Hide your heart Greatest Hits Still got the blues Eros One
night only Sylvias Mother Maggie May Romanza When a man loves a woman Black angel
1999 Grammy Nominees Bob Dylan Bonnie Tyler Dolly Parton Gary Moore Eros Ramazzotti
Bee Gees Dr.Hook Rod Stewart Andrea Bocelli Percy Sledge Savage Rose Many Artist
75
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0“
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html>
<body> <h2>My CD Collection</h2> <xsl:apply-templates/> </body> </html>
</xsl:template> <xsl:template match="cd"> <p> <xsl:apply-templates select="title"/>
<xsl:apply-templates select="artist"/> </p> </xsl:template> <xsl:template
match="title"> Title: <span style="color:#ff0000"> <xsl:value-of
select="."/></span> <br /> </xsl:template> <xsl:template match="artist"> Artist:
<span style="color:#00ff00"> <xsl:value-of select="."/></span> <br />
</xsl:template> 76 </xsl:stylesheet>
My CD Collection Title: Empire Burlesque Artist: Bob Dylan Title: Hide your heart
Artist: Bonnie Tyler Title: Greatest Hits Artist: Dolly Parton Title: Still got the
blues Artist: Gary Moore Title: Eros Artist: Eros Ramazzotti Title: One night only
Artist: Bee Gees
77
XML processors XML processors are software programs that are used to parse XML
documents and provide access to the documents' content and structure. XML
processors can also validate the structure of XML documents and transform the
documents into a variety of formats. IBM XML4j Microsoft MSXML in Java Oracle XML
Parser Sun ``Java Project X''
78
79
What is a web service?
• “Web services” is an effort to build a distributed computing platform for the
Web.
• Web-based applications that dynamically interact with other Web applications
using open standards that include XML, UDDI and SOAP.
81
What’s next?
• The Web is everywhere. There is a lot more we can do!
– – – – E-marketplaces. Open, automated B2B e-commerce. Business process
integration on the Web. Resource sharing, distributed computing. e.g., application-
to-application interactions with HTML forms.
• •
82
• Goals
• Requirements
– Based on standards. Pervasive support is critical. – Minimal amount of required
infrastructure is assumed.
• Only a minimal set of standards must be implemented.
84
Why to use more than one computer?
• Distributed resources
– access to shared data – access to shared programs – access to CPU (e.g. many
desktop PCs together), to memory, to special devices (e.g. printer)
– implementation independence
• requires
– adding a communication layer between parts – synchronization of efforts
• including such nasty things as distributed garbage collection
86
Distributed architecture
(known location, (known location, known port) known port)
• cgi-bin scripts:
– – – – Data transmitted as name-value pairs (HTML forms) Transport over (state-
less) HTTP protocol no standards for keeping user sessions (state-fullness) server
side: a script is called
88
CORBA-based approach
(known location, (known location, known port) known port)
• CORBA:
– – – – Data transmitted as objects (at least it looks like that) Transport
(usually) over well standardised IIOP protocol user sessions (state-fullness) very
inter-operable server side: an RPC call is made
89
SOAP-based communication
(known location, (known location, known port) known port)
• SOAP:
– Data in a well-defined XML format – Transport over various protocols
• HTTP, SMTP are the most used, perhaps because they are firewall-friendly
90 – server side: either an RPC call or a message delivered
Web services
• A collection of XML-based technologies developed by the e-business community to
address issues of:
– service discovery – interoperable data exchange and/or application invocation –
service compositions (workflow, business processes)
http://www.webservices.org/
91
Web Services Architecture
92
Web Services Stack
93
SOAP
• Simple Object Access Protocol
– http://www.w3c.org/TR/SOAP/
Request: getHelloMessage
95
XML Messaging Using SOAP
96
WSDL
• Web Services Definition Language
– http://www.w3.org/TR/wsdl/
• It does not depend on the underlying protocol • But: It is not much human-
readable
97
UDDI (and alternatives)
• Universal Description, Discovery and Integration – http://www.uddi.org
• The UDDI may be less used than predicted, especially on the Internet level •
BioMoby - an alternative for Life Sciences domain?
98
A Web Service example in Java
HTTP Server
Servlet engine (e.g. Apache Tomcat)
Any class Any class processing Any class processing Any class the processing
incoming the processing incoming requests the incoming requests the incoming
(“business logic” requests (“business logic” requests (“business logic” (“business
logic”
99
Why to use Web Services…
(comparing to CORBA)
101
2. What is better
• WS are easier to deploy because of their firewall-friendliness • WS are quite
well marketed (both from IT companies and Open Source projects) • Integration of WS
into workflows seems to be very dynamic and very real topic
– comparing with CORBA Components
102
3. What is worse
• Peer-to-peer access is problematic
– notification by “server-push” is harder to achieve
103
So what?
• Don't throw the baby out with the bathwater
– combine the existing projects with a new Web Services layer; in most cases it is
not so difficult
104
105