QName – Wikipedia
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
[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]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
[Bearbeiten | Quelltext bearbeiten] <?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
[Bearbeiten | Quelltext bearbeiten]- CURIE: Compact URI
- Fully qualified name