Title: ITR3 lecture 3: Namespaces, XML Schema
1ITR3 lecture 3 Namespaces, XML Schema XSL
- Thomas Krichel
- 2002-09-10
2Gee.
- Birdseye view only, have a look at what these
things do. - If there is interest, I can teach some more in a
separate course. - Structure
- Some XML related standards
- Namespaces
- XML Schema
- XSL
3Literature
- Castro, Elizabeth (2001). XML for the World Wide
Web Visual QuickStart Guide. Peachpit Press. - Duckett, Jon et al. (2001). Professional XML
Schemas. Wrox Press (recommended) - Kay, Michael (2001). XSLT (2nd ed.). Wrox Press.
4XHTML
- This is HTML redefined so that it becomes
well-formed XML - Examples
- Case-sensitive elements
- ltpgt replaced by ltp/gt
- Verdict pain without gain
5Resource Description Framework (RDF)
- A standard issued by the W3C. A framework to
encode meaning to make it computer processable. - Uses the approach of a directed graph.
- Generalizes an object / property / value approach
- Value may be another object.
- Objects are URI identified by a URI.
- Properties may be identified with a URI
- A paper on RDF available at http//openlib.org/hom
e/krichel/papers/anhalter.letter.pdf - RDF XML syntax is defined but currently being
reworked. - Verdict very costly to implement.
6Cascading style sheets (CSS)
- a non-XML way of writing stylesheets that can be
applied to both XML and HTML. Widely supported by
browsers. - Written as a sequence of rules. Example
- compositionyear, recordingyear
- color red
- font-family sans-serif
- Verdict not flexible
7XPath and XPointer
- are non-XML syntaxes referring to parts of an XML
document, specific - Ranges
- points
- sets of XML document.
- There are used in other XML related standards, in
particular, in XSL will be covered as part of
XSL. - Verdict useful
8XLinks
- is an XML syntax to link XML documents.
- They go way beyond the conventional linking
capabilities of HTML, but there is no obvious way
for the browser to represent them. - Verdict nonsense
9Document Object Model DOM
- a platform- and language-neutral interface that
will allow programs and scripts to dynamically
access and update the content, structure and
style of documents. The Document Object Model
provides a standard set of objects for
representing HTML and XML documents, a standard
model of how these objects can be combined, and a
standard interface for accessing and manipulating
them. - Now at ''Level 3''.
- Works by building a tree out of a document.
- Verdict exxxtremly complicated
10Simple API for XML (SAX)
- SAX is an event-based paring model. It reports
parsing events (such as the start and end of
elements) directly to the application through
callbacks - Does not usually build an internal tree.
- A lot less resource-intensive,
- when the document is large
- when the task is simple.
- Verdict thumbs up!
11XML Information Sets
- best understood through an example. Consider two
XML snippets. - Snippet 1
- ltperson sex"female"gt Margarete
Krichellt/persongt - Snippet 2
- ltperson sex'female'gtMargarete Krichel
lt/persongt - Are they the same?
12XML Namespaces
- Allow to make XML element names and attribute
name globally unique by associating them with a
particular URI, usually a URL. - The globally unique name is called the qualified
name or qname, for short. - The name without the namespace URI called the
local name. - This is done through a namespaces declaration,
and a prefix. The namespace declaration
associates a short string, called a prefix with
the namespace. - The qualified name can then be written as
prefixlocalname
13Namespace syntax
- ltelement xmlnsprefixURIgt lt/elementgt
- element is the element name
- prefix is the prefix
- URI is a URI, often a URL, actually.
- indicate that it is optional. If the prefix
is missing it means that all elements that have
no namespace prefix belong, by default to the
declared namespace. - Namespace declaration remains local to the
children of element.
14Avoiding cerebral indigestion related
tonamespaces
- Expect nothing if you retrieve the namespace URI,
when it is a URL. - Prefixes can be any short string. Some prefixes
are customary, like xsi for http//www.w3.org/2001
/XMLSchema-instance - Default attributes only apply to elements not
attributes. Attributes belong to the namespace of
their elements, unless it has an explicit prefix.
15XML Schemas http//www.w3.org/TR/xmlschema-0/
(Primer) http//www.w3.org/TR/xmlschema-1/
(Structures) http//www.w3.org/TR/xmlschema-2/
(Datatypes)
16What is XML Schema?
- XML Schema is vocabulary for expressing
constraints for the validity of an XML document. - A piece of XML is valid if it satisfies the
constraints expressed in another XML file, the
schema file. - The idea is to check if the XML file is fit for a
certain purpose.
17Example
ltlocationgt ltlatitudegt32.904237lt/latitude
gt ltlatitudegt73.620290lt/longitudegt
ltuncertainty units"meters"gt2lt/uncertaintygt lt/loca
tiongt
To be valid, this XML snippet must meet all the
following constraints 1. The location must
be comprised of a latitude, followed by a
longitude, followed by an indication of the
uncertainty of the lat/lon measurements.
2. The latitude must be a decimal with a value
between -90 to 90 3. The longitude must be a
decimal with a value between -180 to 180 4.
For both latitude and longitude the number of
digits to the right of the decimal point
must be exactly six digits. 5. The value of
uncertainty must be a non-negative integer 6.
The uncertainty units must be either meters or
feet.
18Validating your data
XML instance
ltlocationgt ltlatitudegt32.904237lt/latitude
gt ltlongitudegt73.620290lt/longitudegt
ltuncertainty units"meters"gt2lt/uncertaintygt lt
/locationgt
XML Schema validator
Data is ok!
-check that the latitude is between -90 and
90 -check that the longitude is between -180 and
180 - check that the fraction digits is 6 Etc..
software
XML Schema file
19History of Schema
- Once upon a time, there was SGML
- SGML has a schema language called a DTD.
- It is crap
- Different syntax then SGML
- Main focus on presence and absence of elements
- Very limited capabilties to check contents of
elements (datatypes)
20XML Schemas can constrain
- the structure of instance documents
- "this element contains these elements, which
contains these other elements, etc - the datatype of each element/attribute
- "this element shall hold an integer with the
range 0 to 12,000"
21Highlights of XML Schemas
- 44 built-in datatypes
- Can create your own datatypes by extending or
restricting existing datatypes - Written in the same syntax as instance documents
- Can express sets, i.e., can define the child
elements to occur in any order - Can specify element content as being unique (keys
on content) and uniqueness within a region - Can define multiple elements with the same name
but different content - Can define elements with nil content
- Can define substitutable elements
22important schema concepts
- simple types types that can not have child
elements - elements that only have text contents and no
attributes - attributes
- complex type type of anything that can have
child attributes
23important schema concepts
- global declarations are direct children of the
root schema element. They are visible everywhere. - all local declarations are local and are limited
in scope to the element that they appear within
24important schema concepts
- Value space. The range of values that the type
can take - Lexical space. The range litterals that represent
the value - Set of facets. The defining properties of a type.
- Fundamental facets include equality, order,
bounds, cardinality, numeric/non-numeric - Constraining facets include ranges for numbers,
string lengths, or a regular expressions
25Namespaces
- XML Schema file mixes vocabulary from the XML
Schema language with own vocabulary to be
created. - Has to keep both separate using namespaces.
- Namespaces associate a URI with names.
26http//www.w3.org/2001/XMLSchema
http//www.books.org (targetNamespace)
complexType
element
BookStore
Author
sequence
Book
schema
Title
boolean
string
ISBN
Publisher
Date
integer
This is the vocabulary that XML Schemas provide
to define your new vocabulary
This is the vocabulary for our book store xml
description.
27lt?xml version"1.0"?gt ltxsdschema
xmlnsxsd"http//www.w3.org/2001/XMLSchema"
targetNamespace"http//www.books
.org" xmlns"http//www.book
s.org" elementFormDefault"q
ualified"gt ltxsdelement name"BookStore"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Book"
minOccurs"1" maxOccurs"unbounded"/gt
lt/xsdsequencegt lt/xsdcomplexTypegt
lt/xsdelementgt ltxsdelement name"Book"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Title"
minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"Author" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Date" minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"ISBN" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Publisher" minOccurs"1" maxOccurs"1"/gt
lt/xsdsequencegt
lt/xsdcomplexTypegt lt/xsdelementgt
ltxsdelement name"Title" type"xsdstring"/gt
ltxsdelement name"Author" type"xsdstring"/gt
ltxsdelement name"Date" type"xsdstring"/gt
ltxsdelement name"ISBN" type"xsdstring"/gt
ltxsdelement name"Publisher" type"xsdstring"/gt
lt/xsdschemagt
(explanations on succeeding pages)
BookStore.xsd (see example01)
xsd Xml-Schema Definition
28lt?xml version"1.0"?gt ltxsdschema
xmlnsxsd"http//www.w3.org/2001/XMLSchema"
targetNamespace"http//www.books
.org" xmlns"http//www.book
s.org" elementFormDefault"q
ualified"gt ltxsdelement name"BookStore"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Book"
minOccurs"1" maxOccurs"unbounded"/gt
lt/xsdsequencegt lt/xsdcomplexTypegt
lt/xsdelementgt ltxsdelement name"Book"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Title"
minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"Author" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Date" minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"ISBN" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Publisher" minOccurs"1" maxOccurs"1"/gt
lt/xsdsequencegt
lt/xsdcomplexTypegt lt/xsdelementgt
ltxsdelement name"Title" type"xsdstring"/gt
ltxsdelement name"Author" type"xsdstring"/gt
ltxsdelement name"Date" type"xsdstring"/gt
ltxsdelement name"ISBN" type"xsdstring"/gt
ltxsdelement name"Publisher" type"xsdstring"/gt
lt/xsdschemagt
29lt?xml version"1.0"?gt ltxsdschema
xmlnsxsd"http//www.w3.org/2001/XMLSchema"
targetNamespace"http//www.book
s.org" xmlns"http//www.bo
oks.org"
elementFormDefault"qualified"gt ltxsdelement
name"BookStore"gt ltxsdcomplexTypegt
ltxsdsequencegt ltxsdelement
ref"Book" minOccurs"1" maxOccurs"unbounded"/gt
lt/xsdsequencegt
lt/xsdcomplexTypegt lt/xsdelementgt
ltxsdelement name"Book"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Title" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Author" minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"Date" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"ISBN" minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"Publisher" minOccurs"1"
maxOccurs"1"/gt lt/xsdsequencegt
lt/xsdcomplexTypegt lt/xsdelementgt
ltxsdelement name"Title" type"xsdstring"/gt
ltxsdelement name"Author" type"xsdstring"/gt
ltxsdelement name"Date" type"xsdstring"/gt
ltxsdelement name"ISBN" type"xsdstring"/gt
ltxsdelement name"Publisher" type"xsdstring"/gt
lt/xsdschemagt
All XML Schemas have "schema" as the root element.
30lt?xml version"1.0"?gt ltxsdschema
xmlnsxsd"http//www.w3.org/2001/XMLSchema"
targetNamespace"http//www.book
s.org" xmlns"http//www.bo
oks.org"
elementFormDefault"qualified"gt ltxsdelement
name"BookStore"gt ltxsdcomplexTypegt
ltxsdsequencegt ltxsdelement
ref"Book" minOccurs"1" maxOccurs"unbounded"/gt
lt/xsdsequencegt
lt/xsdcomplexTypegt lt/xsdelementgt
ltxsdelement name"Book"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Title" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Author" minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"Date" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"ISBN" minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"Publisher" minOccurs"1"
maxOccurs"1"/gt lt/xsdsequencegt
lt/xsdcomplexTypegt lt/xsdelementgt
ltxsdelement name"Title" type"xsdstring"/gt
ltxsdelement name"Author" type"xsdstring"/gt
ltxsdelement name"Date" type"xsdstring"/gt
ltxsdelement name"ISBN" type"xsdstring"/gt
ltxsdelement name"Publisher" type"xsdstring"/gt
lt/xsdschemagt
The elements and datatypes that are used to
construct schemas - schema - element -
complexType - sequence - string come from the
http///XMLSchema namespace
31XMLSchema Namespace
http//www.w3.org/2001/XMLSchema
complexType
element
sequence
schema
boolean
string
integer
32lt?xml version"1.0"?gt ltxsdschema
xmlnsxsd"http//www.w3.org/2001/XMLSchema"
targetNamespace"http//www.books
.org" xmlns"http//www.book
s.org" elementFormDefault"q
ualified"gt ltxsdelement name"BookStore"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Book"
minOccurs"1" maxOccurs"unbounded"/gt
lt/xsdsequencegt lt/xsdcomplexTypegt
lt/xsdelementgt ltxsdelement name"Book"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Title"
minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"Author" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Date" minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"ISBN" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Publisher" minOccurs"1" maxOccurs"1"/gt
lt/xsdsequencegt
lt/xsdcomplexTypegt lt/xsdelementgt
ltxsdelement name"Title" type"xsdstring"/gt
ltxsdelement name"Author" type"xsdstring"/gt
ltxsdelement name"Date" type"xsdstring"/gt
ltxsdelement name"ISBN" type"xsdstring"/gt
ltxsdelement name"Publisher" type"xsdstring"/gt
lt/xsdschemagt
Says that the elements defined by this schema -
BookStore - Book - Title - Author - Date
- ISBN - Publisher are to go in
this namespace
33Book Namespace (targetNamespace)
http//www.books.org (targetNamespace)
BookStore
Author
Book
Title
ISBN
Publisher
Date
34lt?xml version"1.0"?gt ltxsdschema
xmlnsxsd"http//www.w3.org/2001/XMLSchema"
targetNamespace"http//www.books
.org" xmlns"http//www.book
s.org" elementFormDefault"q
ualified"gt ltxsdelement name"BookStore"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Book"
minOccurs"1" maxOccurs"unbounded"/gt
lt/xsdsequencegt lt/xsdcomplexTypegt
lt/xsdelementgt ltxsdelement name"Book"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Title"
minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"Author" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Date" minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"ISBN" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Publisher" minOccurs"1" maxOccurs"1"/gt
lt/xsdsequencegt
lt/xsdcomplexTypegt lt/xsdelementgt
ltxsdelement name"Title" type"xsdstring"/gt
ltxsdelement name"Author" type"xsdstring"/gt
ltxsdelement name"Date" type"xsdstring"/gt
ltxsdelement name"ISBN" type"xsdstring"/gt
ltxsdelement name"Publisher" type"xsdstring"/gt
lt/xsdschemagt
The default namespace is http//www.books.org whic
h is the targetNamespace!
This is referencing a Book element
declaration. The Book in what namespace?
35lt?xml version"1.0"?gt ltxsdschema
xmlnsxsd"http//www.w3.org/2001/XMLSchema"
targetNamespace"http//www.books
.org" xmlns"http//www.book
s.org" elementFormDefault"q
ualified"gt ltxsdelement name"BookStore"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Book"
minOccurs"1" maxOccurs"unbounded"/gt
lt/xsdsequencegt lt/xsdcomplexTypegt
lt/xsdelementgt ltxsdelement name"Book"gt
ltxsdcomplexTypegt ltxsdsequencegt
ltxsdelement ref"Title"
minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"Author" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Date" minOccurs"1" maxOccurs"1"/gt
ltxsdelement ref"ISBN" minOccurs"1"
maxOccurs"1"/gt ltxsdelement
ref"Publisher" minOccurs"1" maxOccurs"1"/gt
lt/xsdsequencegt
lt/xsdcomplexTypegt lt/xsdelementgt
ltxsdelement name"Title" type"xsdstring"/gt
ltxsdelement name"Author" type"xsdstring"/gt
ltxsdelement name"Date" type"xsdstring"/gt
ltxsdelement name"ISBN" type"xsdstring"/gt
ltxsdelement name"Publisher" type"xsdstring"/gt
lt/xsdschemagt
This is a directive to any instance documents
which conform to this schema Any elements that
are defined in this schema must be
namespace-qualified when used in instance
documents.
36Referencing a schema in an XML instance document
lt?xml version"1.0"?gt ltBookStore xmlns
"http//www.books.org"
xmlnsxsi"http//www.w3.org/2001/XMLSchema-instan
ce" xsischemaLocation"http/
/www.books.org
BookStore.xsd"gt
ltBookgt ltTitlegtMy Life and
Timeslt/Titlegt ltAuthorgtPaul
McCartneylt/Authorgt ltDategtJuly,
1998lt/Dategt ltISBNgt94303-12021-4389
2lt/ISBNgt ltPublishergtMcMillin
Publishinglt/Publishergt lt/Bookgt
... lt/BookStoregt
1
3
2
1. First, using a default namespace declaration,
tell the schema-validator that all of the
elements used in this instance document come from
the http//www.books.org namespace. 2. Second,
with schemaLocation tell the schema-validator
that the http//www.books.org namespace is
defined by BookStore.xsd (i.e., schemaLocation
contains a pair of values). 3. Third, tell the
schema-validator that the schemaLocation
attribute we are using is the one in the XML
Schema-instance namespace.
37XMLSchema-instance Namespace
http//www.w3.org/2001/XMLSchema-instance
schemaLocation
type
noNamespaceSchemaLocation
nil
38Referencing a schema in an XML instance document
targetNamespace"http//www.books.org"
schemaLocation"http//www.books.org
BookStore.xsd"
BookStore.xsd
BookStore.xml
- uses elements from namespace
http//www.books.org
- defines elements in namespace
http//www.books.org
A schema defines a new vocabulary. Instance
documents use that new vocabulary.
39Note multiple levels of checking
BookStore.xml
BookStore.xsd
XMLSchema.xsd (schema-for-schemas)
Validate that the xml document conforms to the
rules described in BookStore.xsd
Validate that BookStore.xsd is a valid schema
document, i.e., it conforms to the rules
described in the schema-for-schemas
40Using XSLT and XPath
41XSL transforms XML
- XSL may be used to generate either HTML, XML, or
text
XSL
XSL Processor
XML
HTML (or XML or text)
42Doing it using Internet Explorer
- First, download the latest version of Internet
Explorer (at this time it is 6.0) - Write an XSL stylesheet stylish.xsl
- Write an XML file, and refer to the xsl
stylesheet with a processing instruction - lt?xml-stylesheet type"text/xsl
href"stylish.xsl"?gt - Note this does not work with other browsers!
43XML tree
- XSL has a model of XML as a tree.
- XSL tree model is similar to the DOM model.
- As the processor does its job it looks at
elements of the input tree and transforms them to
the output tree. - The processor only writes the file to the tree at
the end. - End points in the tree are called nodes.
44in the general section
- we examine how XSL looks at an XML document. In
fact it builds a tree. - and then we look at a very simple way to look at
what the stylesheet does. After that we have
Roger showing us the details.
45Seven types of nodes
- root node contains all the elements in the
document. Not to be confused with the document
element of XML. - element node contains an element
- text node contain an as-large-as-possible area
of text. - attribute node contains attribute name and value
- comment node contains a comment
- processing instruction (p-i) node
- namespace node each element node has one
namespace node for every namespace declaration
46properties of nodes name
- This is empty for the root, text and comment
nodes. - for elments and attribute node, it is the name as
it appears in the xml file, expanded by namespace
declarations. - for p-i nodes, it is the target
- for a namespace node, it is the prefix
47properties of nodes string value
- for text nodes the text
- for comment nodes the text of the comment
- for p-i nodes the data part of the p-i.
- for an attribute node the value of the attribute
- for a root node the concatenation of all the
string values of all element and text children. - for a namespace node the URI of the namespace
48properties of nodes base URI
- for all nodes the URI of the XML source document
where the node has been found - Only of interest for elements and p-i nodes
- for the root node the URI of the document
- for attribute, text and comment nodes the base
URI of its parent node
49properties of nodes children
- for element nodes all the element nodes, text
nodes, p-i nodes and comment nodes between its
start and end tags. - for root nodes all the element nodes, text
nodes, p-i nodes and comment nodes that are not
children of some other node.
50parent node
- for all nodes except root nodes the parent of
the node. - attribute nodes and namespace nodes have an
element node as parent node, but are not
considered to be its child.
51property of nodes attribute
- element one to many attributes that the element
has - other nodes empty
- Now we look at what XSL does
52Different formats
- ltxsloutput method"xml"gt is the default
- ltxsloutput method"htmlgt
- ltxsloutput method"text"gt used for everything
else. Final formatting may be up to formatting
objects, anyway. - Your stylesheet processor may have more formats,
but they will be vendor-specific.
53templates set rules
- ltxsltemplate match"expression"gt
- do some stuff
- ltxsltemplategt
- This is a rule that says, if you find a node that
matches the expression expression, then go ahead
and do some stuff. It is called a template. The
fact that a rule is written down down does not
imply that it is applied.
54applying templates
- ltxslapply-templates/gt
- says apply all template rules on the current
node and on all its child nodes.
55Default, built-in rules for the nodes
- root ltxslapply-templatesgt on all children
- element ltxslapply-templatesgt to the current
node and all its children - attribute copy the value as text to the output
- text copy the text to the output
- comment, p-i, namespace do nothing
56HTML Generation
- We will first use XSL to generate HTML documents
- When generating HTML, XSL should be viewed as a
tool to enhance HTML documents. - That is, the HTML documents may be enhanced by
extracting data out of XML documents - XSL provides elements (tags) for extracting the
XML data, thus allowing us to enhance HTML
documents with data from an XML document
57Enhancing HTML Documents with XML Data
HTML Document (with embedded XSL elements)
XML Document
XSL element
XSL Processor
XML data
XML data
58Enhancing HTML Documents with the Following XML
Data
lt?xml version"1.0"?gt lt?xml-stylesheet
type"text/xsl" href"FitnessCenter.xsl"?gt ltFitnes
sCentergt ltMember level"platinum"gt
ltNamegtJefflt/Namegt ltPhone
type"home"gt555-1234lt/Phonegt
ltPhone type"work"gt555-4321lt/Phonegt
ltFavoriteColorgtlightgreylt/FavoriteColorgt
lt/Membergt lt/FitnessCentergt
FitnessCenter.xml
59Embed HTML Document in an XSL Template
lt?xml version"1.0"?gt ltxslstylesheet
xmlnsxsl"http//www.w3.org/1999/XSL/Transform"
version"1.0"gt ltxsloutput
method"html"/gt ltxsltemplate match"/"gt
ltHTMLgt ltHEADgt
ltTITLEgtWelcomelt/TITLEgt lt/HEADgt
ltBODYgt Welcome!
lt/BODYgt lt/HTMLgt lt/xsltemplategt lt/xsl
stylesheetgt
FitnessCenter.xsl (see html-example01)
60Note
- The HTML is embedded within an XSL template,
which is an XML document. The HTML must be well
formed. - We are able to add XSL elements to the HTML,
allowing us to extract data out of XML documents. - Let's customize the HTML welcome page by putting
in the member's name. This is achieved by
extracting the name from the XML document. We
use an XSL element to do this.
61Extracting the Member Name
lt?xml version"1.0"?gt ltxslstylesheet
xmlnsxsl"http//www.w3.org/1999/XSL/Transform"
version"1.0"gt ltxsloutput
method"html"/gt ltxsltemplate match"/"gt
ltHTMLgt ltHEADgt
ltTITLEgtWelcomelt/TITLEgt lt/HEADgt
ltBODYgt Welcome ltxslvalue-of
select"/FitnessCenter/Member/Name"/gt!
lt/BODYgt lt/HTMLgt lt/xsltemplategt lt/xsl
stylesheetgt
(see html-example02)
62Extracting a Value from Navigating the XML
Document
- Extracting values
- use the ltxslvalue-of select""/gt XSL element
- Navigating
- The slash ("/") indicates parent/child
relationship - A slash at the beginning of the path indicates
that it is an absolute path, starting from the
top of the XML document
/FitnessCenter/Member/Name
"Start from the top of the XML document, go to
the FitnessCenter element, from there go to the
Member element, and from there go to the Name
element."
63Document /
PI lt?xml version1.0?gt
Element FitnessCenter
Element Member
Element Phone
Element Name
Element FavoriteColor
Element Phone
Text Jeff
Text 555-4321
Text lightgrey
Text 555-1234
64http//openlib.org/home/krichel
- Thank you for your attention!