xp new perspectives on xml, 2nd edition tutorial 2 1 tutorial 2 working with namespaces
TRANSCRIPT
XP
New Perspectives on XML, 2nd EditionTutorial 2
1
TUTORIAL 2
WORKING WITH NAMESPACES
XP
New Perspectives on XML, 2nd EditionTutorial 2
2
COMBINING XML VOCABULARIES
• A document that combines several vocabularies is known as a compound document
XP
New Perspectives on XML, 2nd EditionTutorial 2
3
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.
XP
New Perspectives on XML, 2nd EditionTutorial 2
4
NAME COLLISION
This figure shows name collision
Partsvocabulary
Modelvocabulary
XP
New Perspectives on XML, 2nd EditionTutorial 2
5
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.
XP
New Perspectives on XML, 2nd EditionTutorial 2
6
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:
xmlns:prefix=“URI”
where URI is a Uniform Resource Identifier that assigns a unique name to the namespace
prefix is a string of letters
“Short hand name” Full, unique name
XP
New Perspectives on XML, 2nd EditionTutorial 2
7
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
XP
New Perspectives on XML, 2nd EditionTutorial 2
8
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:NSSNID = namespace identifierNSS = text string specific to that the namespace
• Example– urn: isbn: 0-619-01969-7
XP
New Perspectives on XML, 2nd EditionTutorial 2
9
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>
XP
New Perspectives on XML, 2nd EditionTutorial 2
10
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>
XP
New Perspectives on XML, 2nd EditionTutorial 2
11
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.
XP
New Perspectives on XML, 2nd EditionTutorial 2
12
DECLARING A DEFAULT NAMESPACE
• You can specify a default namespace by omitting the prefix in the namespace declaration.
• 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
:mod removed
XP
New Perspectives on XML, 2nd EditionTutorial 2
13
USING NAMESPACES WITH 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”>
….
</mod:model>
• Attributes inherit their namespace from their parent element:
• For example:
<mod:model xmlns:mod=http://jacksonelect.com/models
id=“pr205”>
…..
</mod:model>
XP
New Perspectives on XML, 2nd EditionTutorial 2
14
ADDING A NAMESPACE TO A 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)
XP
New Perspectives on XML, 2nd EditionTutorial 2
15
APPLYING A NAMESPACE TO 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
XPAPPLYING A NAMESPACE TO 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 EditionTutorial 2
16
XP
New Perspectives on XML, 2nd EditionTutorial 2
17
COMBINING STANDARD VOCABULARIES
• Standard vocabularies may be combined within single documents
XPA compound XHTML and MathML document
• See page XML 68
New Perspectives on XML, 2nd EditionTutorial 2
18
XP
New Perspectives on XML, 2nd EditionTutorial 2
19
XHTML
XPSummary
• 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 EditionTutorial 2
20