Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

MODULARIZING XML WITH NAMESPACES

Better Innovation www.zidnysolutions.com


Objectives

After completing this lesson, you should be able to


do the following:
Describe XML Namespaces
Explain the need for XML Namespaces
Use XML Namespaces in an XML document
Use XML Namespaces with prefixes
Manage the scope of XML Namespace declarations

Better Innovation www.zidnysolutions.com


What Is an XML Namespace?

An XML Namespace:
Is identified by a case-sensitive internationalized
resource identifier (IRI) reference (URL or URN)
Provides universally unique names for a collection of
names (elements and attributes)

<employee> <departments>
<name>
employee_id
department_id
<name>
<location_id>
<salary>

http://hr.com/employees urn:hr:departments

Better Innovation www.zidnysolutions.com


Why Use XML Namespaces?
Using an XML Namespace resolves name collisions or
ambiguities in an XML document.

<?xml version="1.0"?> <?xml version="1.0"?>


<department> <department>
<name> <name>
Executive Executive
</name> </name> Which name?
</department> <employee>
<name>
<?xml version="1.0"?>
<first_name>Steven</f
<employee>
<last_name>King</last
<name>
</name>
<first_name>Steven</first_name>
<salary>2000</salary>
<last_name>King</last_name>
</employee>
</name>
</department>
<salary>2000</salary>
</employee>

Better Innovation www.zidnysolutions.com


Declaring XML Namespaces

Declare an XML Namespace:


With the xmlns attribute in an element start tag
Assigned an IRI (URL, URI, or URN) string value
Provided with an optional namespace prefix
With a namespace prefix after xmlns: to form
qualified element names
<dept:department
xmlns:dept="urn:hr:department-ns">
...
</dept:department>
Without a prefix to form a “default namespace”
<department xmlns="http://www.hr.com/departments">
...
</department>

Better Innovation www.zidnysolutions.com


XML Namespace Prefixes

A namespace prefix:
May contain any XML character except a colon
Can be declared multiple times as attributes of a single
element, each with different names whose values can
be the same or a different string
Can be overridden in a child element by setting the
value to a different string, as in this example:

<?xml version="1.0"?>
<emp:employee xmlns:emp="urn:hr:employee-ns">
<emp:last_name>King</emp:last_name>
<emp:address xmlns:emp="urn:hr:address-ns">
500 Oracle Parkway
</emp:address>
</emp:employee>

Better Innovation www.zidnysolutions.com


XML Namespace Declarations: Example

<?xml version="1.0"?>
<department xmlns="urn:hr:department-ns"
xmlns:emp="urn:hr:employee-ns">
<name>Executive</name>
<emp:employee>
<emp:name>
<emp:first_name>Steven</emp:first_name>
<emp:last_name>King</emp:last_name>
</emp:name>
</emp:employee>
<emp:employee>
<emp:name>
<emp:first_name>Neena</emp:first_name>
<emp:last_name>Kochhar</emp:last_name>
</emp:name>
</emp:employee>
</department>

Better Innovation www.zidnysolutions.com


Scope of XML Namespace Declarations

<?xml version="1.0"?>
<root-level xmlns="urn:demo:default-ns"
xmlns:one="urn:hr:one-ns"
xmlns:two="urn:hr:two-ns">
<level-one id="1">A</level-one>
<one:level-one id="2">
<one:level-two>B</one:level-two>
<two:level-two>C</two:level-two>
</one:level-one>
<one:level-one xmlns:one="urn:one:override-ns">
<level-two xmlns="">D</level-two>
<level-two>E</level-two>
<level-two xmlns:two="urn:two:override-ns">F
</level-two>
</one:level-one>
</root-level>

Better Innovation www.zidnysolutions.com

You might also like