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