Namespace in XML Transparency No. 1 Namespace in XML Cheng-Chia Chen

  • View
    224

  • Download
    1

Embed Size (px)

Text of Namespace in XML Transparency No. 1 Namespace in XML Cheng-Chia Chen

  • Slide 1

Namespace in XML Transparency No. 1 Namespace in XML Cheng-Chia Chen Slide 2 Namespace in XML Transparency No. 2 Abstract XML namespaces provide a simple method for qualifying element and attribute names used in XML documents by associating them with namespaces identified by URI references. Slide 3 Namespace in XML Transparency No. 3 Table of Contents 0. Quick reviews 1. Motivation and Summary 2. Declaring Namespaces 3. Qualified Names 4. Using Qualified Names 5. Applying Namespaces to Elements and Attributes 5.1 Namespace Scoping 5.2 Namespace Defaulting 5.3 Uniqueness of Attributes 6. Conformance of Documents Slide 4 Namespace in XML Transparency No. 4 0. quick reviews: Motivation name clashes. Consider an XML language WidgetML which uses XHTML as a sublanguage for help messages: Description of gadget Gadget A gadget contains a big gizmo Meaning of head and body depends on context! complicates things for processors and might even cause ambiguities. The solution: multiple namespaces. name = Slide 5 Namespace in XML Transparency No. 5 lexical rules for namespace and local names: require every namespace to be a URIs (Universal Resource Identifiers) called its [namespace URI]. => name = [namespace URI]:[local part] http://www.w3.org/TR/xhtml1 : head namespace URI local part same with attribute names. Notes: URI = URL URN (extended to IRI (W3c draft) at 1.1). URI here used only for identification - doesn't have to point at anything. Not all URIs are legal Attribute/element names. (XML names do not allow/restrict the use of special characters: (.:_- ok) (/,#,%, no) use namespace prefix as a proxy for namespace URI. Qualifying names Slide 6 Namespace in XML Transparency No. 6 Namespace declarations indirection: namespaces are declared by special namespace attributes (xmlns:* or xmlns) and associated prefixes. Example:... xmlns:prefix1="URI1" declares a namespace with a prefix: prefix1 and a URI: URI1. Scope rule: lexical the element containing the declaration and all descendants can be overridden by nested declaration Both element and attribute names can be qualified with namespaces. Note: the prefix is just a proxy - applications should use only the URI for identification. Slide 7 Namespace in XML Transparency No. 8 Example Default namespace affects element names only; it does not apply to attributes. in Ex: 1. the 1 st and 2 nd belong to the same namespace (http;;//test.com/) but the 3 rd belongs to no namespace. 2. Global attribute belongs to namespace: http;//test.com. 3. Both attributes are local in the sense that they belong to the local namespace of ex and are different from s:att1. 4. note the asymmetry of default namspace on elements and attributes Slide 9Description of gadget Gadget A gadget contains a big gizmo The main part of WidgetML uses the default namespace which has the URI http://www.widget.org; XHTML uses the namespace prefix xhtml which is assigned the URI http://www.w3.org/TR/xhtml1."> Namespace in XML Transparency No. 9 An example: WidgetML with namespacesDescription of gadget Gadget A gadget contains a big gizmo The main part of WidgetML uses the default namespace which has the URI http://www.widget.org; XHTML uses the namespace prefix xhtml which is assigned the URI http://www.w3.org/TR/xhtml1. Slide 10 Namespace in XML Transparency No. 10 Consequences for other XML technologies - namespace awareness. XML languages and applications should consider Namespaces as an inherent part of XML. DTD should take namespace into considerations parsers need an extra processing layer on top to resolve namespace declarations and uses schemas schemas should be used to declare all possible element/attribute names of a namespace. namespace URIs could be tied together with schemas ... Slide 11 Namespace in XML Transparency No. 11 1. Summary [Definition:] An XML namespace Is a collection of names, used in XML documents as element types and attribute names. has a namespace name identified by a URI reference [RFC2396],RFC2396 [Definition:] URI references which identify namespaces are considered identical when they are exactly the same character-for-character. E.g. 1. http://a.b.c/~wine/d, 2. http://a.B.c/%7Ewine/d, 3. http://a.b.c/%7ewine/d, 4. d (relative URI deprecated) All 4 URIs are treated as equal in URI spec, but are seen as different namespace URIs in xml namespace. Note: Relative URI should not be used. Slide 12 Namespace in XML Transparency No. 12 1. Summary (contd) Names from XML namespaces appear as qualified names (= [ namespace prefix :] local part ) URI references can contain characters not allowed in names, so cannot be used directly as namespace prefixes. Therefore, the namespace prefix serves as a proxy for a URI reference. Special attributes (xmlns & xmlns:xxx) used to declare the association of the namespace prefix with a URI reference. Slide 13 Namespace in XML Transparency No. 13 2. Declaring Namespaces A namespace is declared using two types of reserved attributes. 1. xmlns = default_URI 2. xmlns:aPrefix = aURI Notes: default_URI and aURI are URI references used to identify a namespace [name]. Type 1 is used to bind default_URI to all unprefixed elements. Type 2 is used to bind aURI to all elements/attributes whose common prfix part is aPrfix. Namespace declarations may occur directly (in document instance) or by default (in DTD). Slide 14 Namespace in XML Transparency No. 14 Example Notes: Two namespace declarations in 1. the one occurring indirectly at DTD is a default namespace, while 2. the one inside declares all elements inside with the prefix : edi be assocaited with the namepspace : http://ec.org/schema. Slide 15 Namespace in XML Transparency No. 15 Attribute Names for Namespace Declaration [1] NSAttName ::= PrefixedAttName | DefaultAttName [2] PrefixedAttName ::= 'xmlns:' NCName [ NSC: Leading "XML" ] [3] DefaultAttName ::= 'xmlns' [4] NCName ::= (Letter | '_') (NCNameChar)* /* An XML Name, minus the ":" */ [5] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | CombiningChar | Extender Note: NCName is any XML Name containing no char :. Slide 16 Namespace in XML Transparency No. 16 2. Declaring Namespaces (contd) Notes on the properties of a namespace name: Must be a URI reference, should be unique and persistent. Need not directly usable for retrieval of a schema ) syntax designed with these goals: Uniform Resource Names [RFC2141].RFC2141 Ordinary URLs can be managed in such a way as to achieve these same goals. Slide 17 Namespace in XML Transparency No. 17 3. Qualified Names Qualified Name: [6] QName ::= (Prefix ':')? LocalPart [7] Prefix ::= NCName [8] LocalPart ::= NCName The Prefix provides the namespace prefix part of the qualified name, and must be associated with a namespace URI reference in a namespace declaration. Note that the prefix functions only as a placeholder for a namespace name. Applications should use the namespace name, not the prefix,in constructing names whose scope extends beyond the containing document. Slide 18 Namespace in XML Transparency No. 18 4. Using Qualified Names [for element type] Element types are given as qualified names, as follows: Element Types : [9] STag ::= ' ' [10] ETag ::= ' ' [11] EmptyElemTag ::= ' ' [NSC: Prefix Declared ] Example: 32.18 Slide 19 Namespace in XML Transparency No. 19 4. Using Qualified Names [for attribute names] Attributes are either namespace declarations or their names are given as qualified names: Attribute: [12] Attribute ::= NSAttName Eq AttValue | QName Eq AttValue [ NSC: Prefix Declared ] Example of a qualified name serving as an attribute name: Baby food Slide 20 Namespace in XML Transparency No. 20 4. Using Qualified Names [ in DTD] Element names and attribute types are also given as qualified names in the DTD: Qualified Names in Declarations [13] doctypedecl ::= '' [14] elementdecl ::= '' [15] cp ::= (QName | choice | seq) ('?' | '*' | '+')? [16] Mixed ::= '(' S? '#PCDATA' (S? '|' S? QName)* S? ')*' | '(' S? '#PCDATA' S? ')' [17] AttlistDecl ::= ' ' [18] AttDef ::= S (QName | NSAttName) S AttType S DefaultDec Slide 21 Namespace in XML Transparency No. 21 5. Applying Namespaces to Elements and Attributes 5.1 Namespace Scoping: The namespace declaration is considered to apply to the element where it is specified and to all elements within the content of that element, unless overridden by another namespace declaration with the same NSAttName part. Example: Frobnostication Moved to here. Slide 22 Namespace in XML Transparency No. 22 5.1 Namespace Scoping: Multiple different namespace prefixes can be declared in the same start tag. Example:Cheaper by the Dozen 1568491379 Slide 23 Namespace in XML Transparency No. 23 5.2 Namespace Defaulting A default namespace is applied to the element where it is declared (if that element has no namespace prefix), and to all elements with no prefix within the content of that element. If the URI reference in a default namespace declaration is empty, then unprefixed elements are not considered to be in any namespace. Note : Default namespaces do not apply directly to attributes !!! Slide 24 Namespace in XML Transparency No. 24 5.2 Namespace Defaulting: examples Frobnostication Moved to here.Cheaper by the Dozen 1568491379 Slide 25 Namespace in XML Transparency No. 25 5.2 Namespace Defaulting: a larger exampleCheaper by the Dozen 1568491379 This is a funny book! Slide 26 Namespace in XML Transparency No. 26 5.2 Namespace Defaulting: The default namespace can be set to the empty string to disable default namespace. Name Origin Description Huntsman Bath, UK Bitter Fuggles Wonderful hop, light alcohol, good summer beer Fragile; excessive variance pub to pub Slide 27 "> Namespace in XML Transparency No. 27 5.3 Uniqueness of Attributes In XML documents conforming to this specification, no tag may contain two attributes which: 1.have identical names, or // for well-formedness 2.have qualified names with the same loca