Tutorial.02

advertisement
TUTORIAL 2
XP
WORKING WITH NAMESPACES
New Perspectives on XML, 2nd Edition
Tutorial 2
1
COMBINING XML
VOCABULARIES
XP
• A document that combines several vocabularies is known
as a compound document
New Perspectives on XML, 2nd Edition
Tutorial 2
2
XP
WORKING WITH NAMESPACES
• Name collision occurs when elements from two or
more documents share the same name.
• Name collision is not a problem if you are not
concerned with validation. The document content
only needs to be well-formed.
• However, name collision will keep a document
from being validated.
New Perspectives on XML, 2nd Edition
Tutorial 2
3
XP
NAME COLLISION
This figure shows name collision
Model
vocabulary
Parts
vocabulary
New Perspectives on XML, 2nd Edition
Tutorial 2
4
XP
DECLARING A NAMESPACE
• A namespace is a defined collection of element
and attribute names.
• Names that belong to the same namespace must be
unique. Elements can share the same name if they
reside in different namespaces.
• Namespaces must be declared before they can be
used.
New Perspectives on XML, 2nd Edition
Tutorial 2
5
XP
DECLARING A NAMESPACE
• A namespace can be declared in the prolog or as an
element attribute. The syntax for an attribute used to
declare a namespace in the prolog is:
“Short hand name”
Full, unique name
xmlns:prefix=“URI”
where URI is a Uniform Resource Identifier that assigns
a unique name to the namespace
prefix is a string of letters
New Perspectives on XML, 2nd Edition
Tutorial 2
6
XP
DECLARING A NAMESPACE
• For example,
xmlns:mod=“http://jacksonelect.com/models”
declares a namespace with the prefix “mod” and the URI
http://jacksonelect.com/models
• The URI is not a Web address. A URI (Uniform Resource
Identifier) identifies a physical or an abstract resource.
URI (Uniform Resource Identifier)
URL (Uniform Resource Locator)
Physical Resource: file, a Web page, or
an e-mail address
URN (Uniform Resource Name)
Persistent name for a resource
New Perspectives on XML, 2nd Edition
Tutorial 2
7
XP
URIs, URLs, AND URNs
• URN (Universal Resource Name) is a persistent resource
identifier, meaning the user need only know the name of a
resource.
• URNs take the form:
urn:NID:NSS
NID = namespace identifier
NSS = text string specific to that the namespace
• Example
– urn: isbn: 0-619-01969-7
New Perspectives on XML, 2nd Edition
Tutorial 2
8
XP
APPLYING A NAMESPACE TO AN
ELEMENT
• Use prefix instead of the URI to qualify element names
• General form:
<prefix:element>
content
</prefix:element>
• For example
xmlns:mod=http://jacsonelect.com/models
<mod:title>Laser4C (PR205) </mod:title>
New Perspectives on XML, 2nd Edition
Tutorial 2
9
XP
APPLYING A NAMESPACE TO AN
ELEMENT
• Prefixed names are called qualified names
• Example:
<mod:title>Laser4C (PR205) </mod:title>
• A name without a namespace prefix is called an
unqualified name.
• Example:
<title>Laser4C (PR205) </title>
New Perspectives on XML, 2nd Edition
Tutorial 2
10
XP
DECLARING A NAMESPACE AS
AN ELEMENT ATTRIBUTE
• For example, the code:
<mod:model xmlns:mod=http://jacksonelect.com/modes >
<mod:title>Laser4C (PR205)</mod:title>
<mod:description>Entry level color laser printer</mod:description>
<mod:type>color laser</mod:type>
<mod:ordered>320</mod:ordered>
<mod:parts list="chx201,fa100-5,eng005-2,cbx-450V4,tn01-53" />
</mod:model>
• …applies the namespace
http://jacksonelect.com/models
to the model element and all of its child elements.
New Perspectives on XML, 2nd Edition
Tutorial 2
11
XP
DECLARING A DEFAULT
NAMESPACE
• You can specify a default namespace by omitting
the prefix in the namespace declaration.
:mod removed
• Example:
<model xmlns=http://jacksonelect.com/modes >
<title>Laser4C (PR205)</title>
<description>Entry level color laser printer</description>
<type>color laser<type>
<ordered>320</ordered>
<parts list="chx201,fa100-5,eng005-2,cbx-450V4,tn01-53" />
</model>
• All elements including the model element, are considered
to be part of the name space
New Perspectives on XML, 2nd Edition
Tutorial 2
12
USING NAMESPACES WITH XP
ATTRIBUTES
•
•
Attributes, like elements, can become qualified by adding the namespace prefix
to the attribute name. The syntax is:
<element prefix:attribute = “value”> … </element>
For example:
<mod:model xmlns:mod=http://jacksonelect.com/models
mod:id=“pr205”>
• Attributes inherit their namespace from their
….
parent element:
</mod:model>
• For example:
<mod:model
xmlns:mod=http://jacksonelect.com/models
id=“pr205”>
…..
</mod:model>
New Perspectives on XML, 2nd Edition
Tutorial 2
13
ADDING A NAMESPACE TO A XP
STYLE SHEET:
DECLARING A NAMESPACE
• To declare a namespace in a style sheet, you add the
following rule to the style sheet file
@namespace prefix url(uri);
Where prefix is the namespace previx and uri is the URI of
the namespace
• Example:
@namespace mod url(http://jacksonelect.com/models)
New Perspectives on XML, 2nd Edition
Tutorial 2
14
APPLYING A NAMESPACE TO XP
A
SELECTOR
• Once you’ve declared a namespace in a style sheet, you can
associate selectors with that namespace using the syntax:
prefix|selector {attribute1:value1; attribute2:value2;…}
• For example:
mod|title {width: 150px}
• You also can use the wildcard symbol (*) to apply a style to any
element within a namespace or to elements across different
namespaces
New Perspectives on XML, 2nd Edition
Tutorial 2
15
APPLYING A NAMESPACE TO XP
A
SELECTOR
• You also can use the wildcard symbol (*) to apply a style to any
element within a namespace or to elements across different
namespaces
mod | title {width: 15px}
applies width style to all title elements in the models namespace
mod | * {font-size: 12 pt}
applies the font-sie style to any element within the models namespace
title {witdth: 15p}
applies a width of 150 pixels to any element named title
• Not supported by Firefox, Opera, and Netscape
New Perspectives on XML, 2nd Edition
Tutorial 2
16
COMBINING STANDARD
VOCABULARIES
XP
• Standard vocabularies may be combined within single
documents
New Perspectives on XML, 2nd Edition
Tutorial 2
17
XP
A compound XHTML and MathML
document
• See page XML 68
New Perspectives on XML, 2nd Edition
Tutorial 2
18
XP
XHTML
New Perspectives on XML, 2nd Edition
Tutorial 2
19
XP
Summary
• Combining vocabularies in a single document can
result in name collisions
• Use namespaces to resolve collisions
• Namespaces use URI to provide unique identification
for each vocabulary in a document
• CSS style sheets can be modified to accommodate
namespaces
• You can create an XHTML document that combines
features from XHTML and other XML vocabularies
New Perspectives on XML, 2nd Edition
Tutorial 2
20
Download