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�…

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]

Siehe auch

Einzelnachweise

  1. Namespaces in XML 1.0 (Second Edition). W3C
  2. Using Qualified Names (QNames) as Identifiers in XML Content. W3C
  3. Namespaces in XML 1.0 (Second Edition). W3C
  4. Namespaces in XML 1.0 (Second Edition). W3C

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.