200 likes | 364 Views
TUTORIAL 2. WORKING WITH NAMESPACES. COMBINING XML VOCABULARIES. A document that combines several vocabularies is known as a compound document. WORKING WITH NAMESPACES. Name collision occurs when elements from two or more documents share the same name.
E N D
TUTORIAL 2 WORKING WITH NAMESPACES New Perspectives on XML, 2nd Edition Tutorial 2
COMBINING XML VOCABULARIES • A document that combines several vocabularies is known as a compound document New Perspectives on XML, 2nd Edition Tutorial 2
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
NAME COLLISION This figure shows name collision Model vocabulary Parts vocabulary New Perspectives on XML, 2nd Edition Tutorial 2
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
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 New Perspectives on XML, 2nd Edition Tutorial 2
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
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
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
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
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
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 New Perspectives on XML, 2nd Edition Tutorial 2
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:modelxmlns:mod=http://jacksonelect.com/models id=“pr205”> ….. </mod:model> New Perspectives on XML, 2nd Edition Tutorial 2
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) New Perspectives on XML, 2nd Edition Tutorial 2
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 New Perspectives on XML, 2nd Edition Tutorial 2
APPLYING 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 Edition Tutorial 2
COMBINING STANDARD VOCABULARIES • Standard vocabularies may be combined within single documents New Perspectives on XML, 2nd Edition Tutorial 2
A compound XHTML and MathML document • See page XML 68 New Perspectives on XML, 2nd Edition Tutorial 2
XHTML New Perspectives on XML, 2nd Edition Tutorial 2
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