Zum Inhalt springen

QName

aus Wikipedia, der freien Enzyklopädie

QNames wurden durch XML Namespaces mit dem Ziel eingeführt, als URI-Referenz zu dienen.<ref>Namespaces in XML 1.0 (Second Edition). W3C</ref> 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.<ref>Using Qualified Names (QNames) as Identifiers in XML Content. W3C</ref>

Motivation[Bearbeiten]

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[Bearbeiten]

QNames werden vom W3C formal wie folgt definiert:<ref>Namespaces in XML 1.0 (Second Edition). W3C</ref> <syntaxhighlight lang="bnf">

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

</syntaxhighlight>

NCName ist wie folgt definiert: <syntaxhighlight lang="bnf">

    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]

</syntaxhighlight>

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[Bearbeiten]

<syntaxhighlight lang="xml">

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

</syntaxhighlight>

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.<ref>Namespaces in XML 1.0 (Second Edition). W3C</ref>

Siehe auch[Bearbeiten]

Einzelnachweise[Bearbeiten]

<references />