QName
QNames wurden durch XML Namespaces mit dem Ziel eingeführt, als URI-Referenz zu dienen.[1] QName steht für „qualified name“ und definiert einen gültigen Bezeichner für Elemente und Attribute. QNames werden allgemein benutzt, um auf bestimmte Elemente oder Attribute innerhalb von XML-Dokumenten zu verweisen.[2]
Motivation
    
Weil URI-Referenzen lang sein können und für Element-/Attributnamen verbotene Zeichen enthalten können, werden QNames benutzt, um eine Abbildung von URI und Namespace-Präfix zu erstellen. Durch das Abbilden können URIs abgekürzt werden und somit in XML-Dokumenten komfortabler geschrieben werden (siehe Beispiel)
Formale Definition
    
QNames werden vom W3C formal wie folgt definiert:[3]
       QName          ::=   PrefixedName | UnprefixedName
       PrefixedName   ::=   Prefix ':' LocalPart
       UnprefixedName ::=   LocalPart
       Prefix         ::=   NCName
       LocalPart      ::=   NCName
NCName ist wie folgt definiert:
     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]
Das Präfix wird als Platzhalter für den Namensraum und der LocalPart als Lokalteil für den qualifizierten Bezeichner verwendet. Lokalteil kann ein Attributname oder Elementname sein.
Beispiel
    
  <?xml version='1.0'?>
  <doc xmlns:x="http://example.com/ns/foo">
    <x:p/>
  </doc>
In Zeile 2 wird das Präfix x definiert, welches mit der URI "http://example.com/ns/foo" verknüpft wird. Dieses Präfix kann später als Abkürzung für diesen Namensraum verwendet werden. Im weiteren Dokument ist der Tag x:p ein gültiger QName, weil er das x als Referenz auf den Namensraum und p als Lokalteil verwendet. Der Tag doc ist auch ein gültiger QName, er besteht allerdings nur aus dem Lokalteil.[4]