Target Namespaces
Associating a schema with a particular XML namespace is
extremely simple: add a targetNamespace attribute to the root xs:schema element, like so:
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema" targetNamespace="http://namespaces.oreilly.com/xmlnut/address">
Tip
It is important to remember that many XML 1.0 documents are
not associated with namespaces at all. To validate these
documents, it is necessary to use a schema that doesn’t have a
targetNamespace attribute. When
developing schemas that are not associated with a target
namespace, you should always explicitly qualify schema elements
(like xs:element) to keep them
from being confused with global declarations for your
application.
However, making that simple change impacts numerous other
parts of the example application. Trying to validate the addressdoc.xml document as it stands
(with the xsi:noNamespaceSchemaLocation attribute) causes the Xerces schema processor to
report this validity error:
General Schema Error: Schema in address-schema.xsd has a different target namespace from the one specified in the instance document :.
To rectify this, it is necessary to change the instance
document to reference the new, namespace-enabled schema properly.
This is done using the xsi:schemaLocation attribute, like so:
<fullName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://namespaces.oreilly.com/xmlnut/address
address-schema.xsd"
language="en">Scott Means</fullName>Notice that ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access