Jump to content

QName

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by WOSlinker (talk | contribs) at 08:36, 1 December 2020 (change source to syntaxhighlight). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A QName, or qualified name, is the fully qualified name of an element, attribute, or identifier in an XML document. A QName concisely associates the URI of an XML namespace with the local name of an element, attribute, or identifier in that namespace.[1] To make this association, the QName assigns the local name a prefix that corresponds to its namespace. In all, the QName comprises the URI of the XML namespace, the prefix, and the local name.

The World Wide Web Consortium introduced the QName convention in the 1999 specification "Namespaces in XML".[1][2]

Purpose

Since URI references can be long and may contain prohibited characters for element/attribute naming, QNames are used to create a mapping between the URI and a namespace prefix. The mapping enables the abbreviation of URIs, therefore it achieves a more convenient way to write XML documents (see example below).

Formal definition

QNames are formally defined by the W3C as:[3]

   	QName	           ::=   PrefixedName | UnprefixedName
   	PrefixedName	   ::=   Prefix ':' LocalPart
   	UnprefixedName     ::=   LocalPart
   	Prefix	           ::=   NCName
   	LocalPart          ::=   NCName

NCName is defined as follows:

        NCName	           ::=   Name - (Char* ':' Char*)  (* An XML Name, minus the ":" *)
        Name	           ::=   NameStartChar (NameChar)*
        NameStartChar	   ::=   ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] 
                                 | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF]  
                                 | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] 
                                 | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] 
                                 | [#x10000-#xEFFFF]
        NameChar           ::=   NameStartChar | "-" | "." | [0-9] 
                                 | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
        Char	           ::=   (* any Unicode char, excluding surrogate blocks FFFE and FFFF. *)
                                 #x9 | #xA | #xD | [#x20-#xD7FF] 
                                 | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

Whereby the Prefix is used as placeholder for the namespace and the LocalPart as the local part of the qualified name. A local part can be an attribute name or an element name.

Example

  <?xml version='1.0'?>
  <doc xmlns:x="http://example.com/ns/foo">
    <x:p/>
  </doc>

In line two the prefix "x" is declared to be associated with the URI "http://example.com/ns/foo". This prefix can further on be used as abbreviation for this namespace. Subsequently the tag "x:p" is a valid QName because it uses the "x" as namespace reference and "p" as local part. The tag "doc" is also a valid QName, but it consists only of a local part.[4]

See also

References

  1. ^ a b Walsh, Norman, ed. (17 March 2004). "Using Qualified Names (QNames) as Identifiers in XML Content". W3.org. World Wide Web Consortium. Retrieved 2018-06-12.
  2. ^ Bray, Tim; Hollander, Dave; Layman, Andrew, eds. (14 January 1999), "Namespaces in XML", W3.org, World Wide Web Consortium, retrieved 2018-06-12
  3. ^ Namespaces in XML 1.0 (Second Edition)
  4. ^ Namespaces in XML 1.0 (Second Edition)