Namensräume in XML

Deutsche Übersetzung

18. Juni 2001

Diese Version:
http://www.schumacher-netz.de/TR/1999/REC-xml-names-19990114-de.html
Übersetzer:
Stefan Schumacher, schumacher-netz.de <sts@schumacher-netz.de>

Bei diesem Dokument handelt es sich um eine Übersetzung eines W3C-Textes. Dieser Text ist urheberrechtlich geschützt; bitte beachten Sie die nachfolgenden Hinweise des Originaldokuments. Die Rechte an der Übersetzung liegen beim Übersetzer. Die Übersetzung hat keine durch das W3C legitimierte, normative Wirkung. Das einzige maßgebliche Dokument ist das englische Original.

Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an den Übersetzer.

Kommentare des Übersetzers, die als solche gekennzeichnet sind, unterliegen dem Urheberrecht des Übersetzers. Sie sind nicht Bestandteil des Ursprungsdokuments.


W3C

Namensräume in XML

W3C-Empfehlung 14. Januar 1999

Diese Version:
http://www.w3.org/TR/1999/REC-xml-names-19990114
http://www.w3.org/TR/1999/REC-xml-names-19990114/xml-names.xml
http://www.w3.org/TR/1999/REC-xml-names-19990114/Overview.html
Aktuelle Version:
http://www.w3.org/TR/REC-xml-names
Vorherige Version:
http://www.w3.org/TR/1998/PR-xml-names-19981117
Editoren:
Tim Bray, Textuality <tbray@textuality.com>
Dave Hollander, Hewlett-Packard Company <dmh@corp.hp.com>
Andrew Layman, Microsoft <andrewl@microsoft.com>

Zusammenfassung

XML-Namensräume bieten eine einfache Möglichkeit, um Element- und Attributnamen, die in "Extensible Markup Language"-Dokumenten verwendet werden können, eindeutig zu benennen. Die Element- und Attributnamen werden mit Namensräumen verknüpft, die durch URI-Verweise identifiziert werden.

Status dieses Dokuments

Dieses Dokument wurde von Mitgliedern des W3C und anderen interessierten Gruppen überprüft und vom Direktor als W3C-Empfehlung gebilligt. Es ist ein stabiles Dokument und darf als Referenzmaterial verwendet werden oder als normative Referenz von anderen Dokumenten zitiert werden. Die Intention des W3C bei der Erstellung dieser Empfehlung ist es, das Interesse an dieser Spezifikation zu wecken und ihre weitläufige Verbreitung zu fördern. Dies erhöht die Funktionalität und die Interoperabilität des Webs.

Die Liste der bekannten Fehler in dieser Spezifikation ist verfügbar unter http://www.w3.org/XML/xml-names-19990114-errata.

Bitte senden Sie Berichte über Fehler in diesem Dokument an xml-names-editor@w3.org.

Inhaltsverzeichnis

1 Beweggründe und Überblick
    1.1 Eine Bemerkung zur Notation und zur Verwendung
2 Namensräume deklarieren
3 Qualifizierte Namen
4 Verwendung von qualifizierten Namen
5 Elementen und Attributen Namensräume zuweisen
    5.1 Geltungsbereich für Namensräume
    5.2 Voreinstellung des Namensraums
    5.3 Einzigartigkeit von Attributen
6 Konformität von Dokumenten

Anhänge

A Die interne Struktur von XML-Namensräumen (nicht normativ)
    A.1 Die Unzulänglichkeit der traditionellen Namensräume
    A.2 XML-Namensraum-Partitionen
    A.3 Erweiterte Elementtypen und Attributnamen
    A.4 Einzigartige erweiterte Attributnamen
B Anerkennungen (nicht normativ)
C Verweise


1 Beweggründe und Überblick

Wir betrachten Anwendungen der Extensible Markup Language (XML), in denen ein einzelnes XML-Dokument Elemente und Attribute (hier "Markup-Vokabular" genannt) enthalten kann, die für verschiedene Software-Module definiert sind und von verschiedenen Software-Modulen verwendet werden. Eine Motivation dafür ist Modularität; wenn ein Markup-Vokabular existiert, das gut verstanden wird und für welches nützliche Software vorhanden ist, ist es besser, dieses Markup wieder zu verwenden als es neu zu erfinden.

In Dokumenten, die unterschiedliches Markup-Vokabular enthalten, können Probleme mit der Erkennung und Kollisionen auftreten. Software-Module müssen die Tags und Attribute erkennen, für deren Verarbeitung sie geschaffen wurden, auch im Fall einer Kollision, wenn Markup, das für eine andere Software geschrieben wurde, die gleichen Elementtypen und Attributnamen verwendet.

Diese Überlegungen erfordern, dass Dokumentkonstrukte, deren Geltungsbereich über den des beinhaltenden Dokuments hinausgeht, einzigartige Namen haben sollten. Diese Spezifikation beschreibt einen Mechanismus, XML-Namensräume, der diese Anforderungen erfüllt.

[Definition: Ein XML-Namensraum ist eine Zusammenstellung von Namen, identifiziert durch einen URI-Verweis [RFC2396], die in XML-Dokumenten als Elementtypen und Attributnamen verwendet werden.] XML-Namensräume unterscheiden sich von den "Namensräumen", die normalerweise im Computerbereich verwendet werden, in dem Maße, dass die XML-Version eine interne Struktur hat und im mathematischen Sinne keine Zusammensetzung ist. Dieses Thema wird in A Die interne Struktur von XML-Namensräumen besprochen.

[Definition: URI-Verweise, die Namensräume identifizieren, werden als identisch angesehen, wenn sie Zeichen für Zeichen genau gleich sind.] Beachten Sie, dass URI-Verweise, die in diesem Sinne nicht identisch sind, trotzdem die gleiche Funktionalität besitzen können. Zum Beispiel seien URI-Verweise genannt, die sich nur in der Groß- und Kleinschreibung unterscheiden, oder externe Entities, die unterschiedliche effektive Base-URIs haben.

Namen aus XML-Namensräumen können als qualifizierte Namen erscheinen, die einen einzelnen Doppelpunkt enthalten, der den Namen in ein Namensraum-Präfix und einen lokalen Teil aufteilt. Das Präfix, das Platzhalter für einen URI-Verweis ist, wählt einen Namensraum aus. Die Kombination aus dem allumfassend verwalteten URI-Namensraum und dem eigenen Namensraum des Dokuments erzeugt einen Identifier, der einzigartig ist. Mechanismen für die Präfixbereiche und Voreinstellungen werden gegeben.

URI-Verweise können Zeichen enthalten, die nicht in Namensraumnamen erlaubt sind, also nicht direkt als Namensraum-Präfixe benutzt werden können. Deshalb fungiert das Namensraum-Präfix als Proxy für einen URI-Verweis. Eine Attribut-basierte Syntax, wie unten beschrieben, wird verwendet, um die Verbindung zwischen dem Namensraum-Präfix und dem URI-Verweis zu deklarieren; Software, die dieser Spezifikation gerecht wird, muss diese Deklarationen und Präfixe erkennen und verarbeiten.

1.1 Eine Bemerkung zur Notation und zur Verwendung

Beachten Sie, dass viele Nicht-Terminale in den Produktionen dieser Spezifikation nicht hier, sondern in der XML-Spezifikation [XML] definiert sind. Wenn hier definierte Nicht-Terminale den gleichen Namen haben wie Nicht-Terminale, die in der XML-Spezifikation definiert sind, unterliegen die hiesigen Produktionen in allen Fällen einer Untermenge der Strings, denen die entsprechenden Produktionen dort unterliegen würden.

In den Produktionen dieses Dokuments ist NSC ein Namensraumzwang, also eine der Regeln, die von Dokumenten befolgt werden müssen, die konform zu dieser Spezifikation sind.

Beachten Sie, dass alle Internet-Domain-Namen, die in diesen Beispielen verwendet werden, mit Ausnahme von w3.org zufällig ausgewählt sind und nicht so verstanden werden sollen, als würden sie Inhalte importieren.

2 Namensräume deklarieren

[Definition: Ein Namensraum wird deklariert, indem reservierte Attribute verwendet werden. Ein Attributname muss entweder xmlns sein oder es muss ein Präfix xmlns: verwendet werden. Diese Attribute müssen, wie jedes andere XML-Attribut, direkt oder durch eine Voreinstellung zur Verfügung gestellt werden. ]

Attributnamen für Namensraum-Deklarationen
[1]    NSAttName    ::=    PrefixedAttName
| DefaultAttName
[2]    PrefixedAttName    ::=    'xmlns:' NCName
[3]    DefaultAttName    ::=    'xmlns'
[4]    NCName    ::=    (Letter | '_') (NCNameChar)* /* Ein XML-Name ohne den ":" */
[5]    NCNameChar    ::=    Letter | Digit | '.' | '-' | '_' | CombiningChar | Extender

[Definition: Der Wert des Attributs, ein URI-Verweis, ist der Namensraumname, der den Namensraum identifiziert.] Der Namensraumname sollte, um seinen Zweck zu erfüllen, einzigartig und dauerhaft sein. Es ist nicht notwendig, dass er direkt für den Empfang eines Schemas (sofern eines existiert) verwendet werden kann. Uniform Resource Names [RFC2141] sind ein Beispiel für eine Syntax, die mit diesen Zielen entwickelt wurde. Es soll jedoch erwähnt werden, dass auch normale URLs so verwendet werden können, dass sie diesen gleichen Vorstellungen entsprechen.

[Definition: Entspricht der Attributname dem PrefixedAttName, gibt der NCName das Namensraum-Präfix an, das verwendet wird, um die Element- und Attributnamen mit dem Namensraumnamen zu verbinden, der im Attributwert des mit der Deklaration verbundenen Elements angegeben ist.] In solchen Deklarationen sollte der Namensraumname nicht leer sein.

[Definition: Entspricht der Attributname dem DefaultAttName, dann ist der Namensraumname im Attributwert der Name des voreingestellten Namensraums im Geltungsbereich des mit der Deklaration verbundenen Elements.] In solch einer voreingestellten Deklaration kann der Attributwert leer sein. Mehr zu voreingestellten Namensräumen und dem Überschreiben von Deklarationen wird in 5 Elementen und Attributen Namensräume zuweisen besprochen.

Das Beispiel einer Namensraum-Deklaration, die das Präfix edi mit dem Namensraumnamen http://ecommerce.org/schema verbindet:

<x xmlns:edi='http://ecommerce.org/schema'>
  <!-- Das "edi"-Präfix wird für das Element "x" und Inhalt
       an http://ecommerce.org/schema gebunden. -->
</x>

Namensraumzwang: Führendes "XML"

Präfixe, die mit den drei Buchstaben x, m, l beginnen, in jeglicher Kombination von Groß- und Kleinschreibung, sind für die Verwendung von XML oder XML-verwandten Spezifikationen reserviert.

3 Qualifizierte Namen

[Definition: In XML-Dokumenten, die konform zu dieser Spezifikation sind, können einige Namen (Konstrukte, die dem Nicht-Terminal Name entsprechen) als qualifizierte Namen vergeben werden, die wie folgt definiert sind:

Qualifizierter Name
[6]    QName    ::=    (Prefix ':')? LocalPart
[7]    Prefix    ::=    NCName
[8]    LocalPart    ::=    NCName
]

Das "Prefix" stellt den Part des Namensraum-Präfixes des qualifizierten Namens zur Verfügung und muss mit einem Namensraum-URI-Verweis durch eine Namensraum-Deklaration verbunden werden. [Definition: Der "LocalPart" stellt den lokalen Teil des qualifizierten Namens zur Verfügung.]

Beachten Sie, dass das Präfix nur als Platzhalter für den Namensraumnamen steht. Anwendungen sollten den Namensraumnamen verwenden, nicht das Präfix, wenn sie Namen erstellen, deren Geltungsbereich über den des beinhaltenden Dokuments hinausgeht.

4 Verwendung von qualifizierten Namen

In XML-Dokumenten, die konform zu dieser Spezifikation sind, werden Elementtypen als qualifizierte Namen wie folgt gegeben:

Elementtypen
[9]    STag    ::=    '<' QName (S Attribute)* S? '>'
[10]    ETag    ::=    '</' QName S? '>'
[11]    EmptyElemTag    ::=    '<' QName (S Attribute)* S? '/>'

Ein Beispiel eines qualifizierten Namens, der als Elementtyp dient:

<x xmlns:edi='http://ecommerce.org/schema'>
  <!-- Der Namensraum des Elements 'preis' ist http://ecommerce.org/schema -->
  <edi:preis einheit='Euro'>32.18</edi:preis>
</x>

Attribute sind entweder Namensraum-Deklarationen oder ihre Namen werden als qualifizierte Namen angegeben:

Attribut
[12]    Attribute    ::=    NSAttName Eq AttValue
| QName Eq AttValue

Ein Beispiel eines qualifizierten Namens, der als Attributname dient:

<x xmlns:edi='http://ecommerce.org/schema'>
  <!-- Der Namensraum des Attributs 'taxClass' ist http://ecommerce.org/schema -->
  <lineItem edi:taxClass="exempt">Babynahrung</lineItem>
</x>

Namensraumzwang: Deklariertes Präfix

Das Namensraum-Präfix muss, es sei denn, es ist xml oder xmlns, in einem Namensraum-Deklarations-Attribut deklariert worden sein, entweder im Start-Tag des Elements, in dem das Präfix benutzt wird, oder in einem Elternelement (z.B. in einem Element, in dessen Inhalt das vorangestellte Markup (Präfix) auftaucht). Das Präfix xml ist laut Definition an den Namensraumnamen http://www.w3.org/XML/1998/namespace gebunden. Das Präfix xmlns wird nur für Namensraumeinbindungen verwendet und ist selbst nicht an irgendeinen Namensraum gebunden.

Dieser Zwang kann in der Praxis zu Schwierigkeiten führen, wenn die Namensraum-Deklaration nicht direkt im XML-Dokument-Entity angegeben wird, sondern über einen voreingestellten Wert in einem externen Entity. Diese Deklarationen können eventuell nicht von Software verarbeitet werden, die auf nicht validierenden XML-Prozessoren aufbaut. Viele XML-Anwendungen, vermutlich auch Namensraum-sensitive, versäumen es, validierende Prozessoren zu fordern. Um eine korrekte Zusammenarbeit mit solchen Anwendungen zu gewährleisten, müssen Namensraum-Deklarationen entweder direkt oder über voreingestellte Attribute im internen Subset der DTD angegeben werden.

Elementnamen und Attributtypen werden auch als qualifizierte Namen angegeben, wenn sie in Deklarationen innerhalb der DTD auftauchen:

Qualifizierte Namen in Deklarationen
[13]    doctypedecl    ::=    '<!DOCTYPE' S QName (S ExternalID)? S? ('[' (markupdecl | PEReference | S)* ']' S?)? '>'
[14]    elementdecl    ::=    '<!ELEMENT' S QName S contentspec S? '>'
[15]    cp    ::=    (QName | choice | seq) ('?' | '*' | '+')?
[16]    Mixed    ::=    '(' S? '#PCDATA' (S? '|' S? QName)* S? ')*'
| '(' S? '#PCDATA' S? ')'
[17]    AttlistDecl    ::=    '<!ATTLIST' S QName AttDef* S? '>'
[18]    AttDef    ::=    S (QName | NSAttName) S AttType S DefaultDecl

5 Elementen und Attributen Namensräume zuweisen

5.1 Geltungsbereich für Namensräume

Die Namensraum-Deklaration gilt für das Element, in dem sie angegeben ist, und für alle Elemente im Inhalt dieses Elements, es sei denn, sie wird durch eine andere Namensraum-Deklaration mit dem gleichen NSAttName-Teil überschrieben:

<?xml version="1.0"?>
<!-- alle Elemente hier sind explizit im HTML-Namensraum -->
<html:html xmlns:html='http://www.w3.org/TR/REC-html40'>
  <html:head><html:title>Frobnostication</html:title></html:head>
  <html:body><html:p>Moved to
    <html:a href='http://frob.com'>here.</html:a></html:p></html:body>
</html:html>

Mehrere Namensraum-Präfixe können als Attribute eines einzelnen Elements deklariert werden, wie in diesem Beispiel beschrieben:

<?xml version="1.0"?>
<!-- beide Namensraum-Präfixe sind durchgängig verfügbar -->
<bk:book xmlns:bk='urn:loc.gov:books'
         xmlns:isbn='urn:ISBN:0-395-36341-6'>
    <bk:title>Cheaper by the Dozen</bk:title>
    <isbn:number>1568491379</isbn:number>
</bk:book>

5.2 Voreinstellung des Namensraums

Ein voreingestellter Namensraum soll für das Element gelten, in dem er deklariert ist (sofern das Element kein Namensraum-Präfix hat), und für alle Elemente ohne Präfix im Inhalt des Elements. Wenn der URI-Verweis in der voreingestellten Namensraum-Deklaration leer ist, sollten Elemente ohne Präfix im Geltungsbereich der Deklaration so angesehen werden, als wären sie in keinem Namensraum. Beachten Sie, dass voreingestellte Namensräume nicht direkt für Attribute gelten.

<?xml version="1.0"?>
<!-- Elemente sind im HTML-Namensraum, in diesem Fall voreingestellt -->
<html xmlns='http://www.w3.org/TR/REC-html40'>
  <head><title>Frobnostication</title></head>
  <body><p>Moved to
    <a href='http://frob.com'>here</a>.</p></body>
</html>
<?xml version="1.0"?>
<!-- Elementtypen ohne Präfix gehören zu "books" -->
<book xmlns='urn:loc.gov:books'
      xmlns:isbn='urn:ISBN:0-395-36341-6'>
    <title>Cheaper by the Dozen</title>
    <isbn:number>1568491379</isbn:number>
</book>

Ein umfassenderes Beipiel für Namensraumgeltungsbereiche:

<?xml version="1.0"?>
<!-- anfangs ist der voreingestellte Namensraum "books" -->
<book xmlns='urn:loc.gov:books'
      xmlns:isbn='urn:ISBN:0-395-36341-6'>
    <title>Cheaper by the Dozen</title>
    <isbn:number>1568491379</isbn:number>
    <notes>
      <!-- HTML wird zum voreingestellten Namensraum für einige Kommentare -->
      <p xmlns='urn:w3-org-ns:HTML'>
          This is a <i>funny</i> book!
      </p>
    </notes>
</book>

Der voreingestellte Namensraum kann auf einen leeren String gesetzt werden. Das hat innerhalb des Geltungsbereichs der Deklaration den gleichen Effekt, als wäre kein voreingestellter Namensraum gegeben.

<?xml version='1.0'?>
<Beers>
  <!-- der voreingestellte Namensraum ist der von HTML -->
  <table xmlns='http://www.w3.org/TR/REC-html40'>
   <th><td>Name</td><td>Origin</td><td>Description</td></th>
   <tr>
     <!-- kein voreingestellter Namensraum in Tabellenzellen -->
     <td><brandName xmlns="">Huntsman</brandName></td>
     <td><origin xmlns="">Bath, UK</origin></td>
     <td>
       <details xmlns=""><class>Bitter</class><hop>Fuggles</hop>
         <pro>Wonderful hop, light alcohol, good summer beer</pro>
         <con>Fragile; excessive variance pub to pub</con>
         </details>
        </td>
      </tr>
    </table>
  </Beers>

5.3 Einzigartigkeit von Attributen

In XML-Dokumenten, die konform zu dieser Spezifikation sind, sollte kein Tag zwei Attribute enthalten, die

  1. identische Namen haben, oder

  2. qualifizierte Namen mit dem gleichen lokalen Namensteil und mit Präfixen, die mit identischen Namensraumnamen verbunden sind.

Zum Beispiel ist jedes Einzelne der Start-Tags bad nicht erlaubt:

<!-- http://www.w3.org ist an n1 und n2 gebunden -->
<x xmlns:n1="http://www.w3.org"
   xmlns:n2="http://www.w3.org" >
  <bad a="1"     a="2" />
  <bad n1:a="1"  n2:a="2" />
</x>

Jedoch ist jedes der folgenden Start-Tags good erlaubt. Das zweite Start-Tag ist zulässig, weil der voreingestellte Namensraum nicht für Attribute gilt:

<!-- http://www.w3.org ist an n1 gebunden und voreingestellt -->
<x xmlns:n1="http://www.w3.org"
   xmlns="http://www.w3.org" >
  <good a="1"     b="2" />
  <good a="1"     n1:a="2" />
</x>

6 Konformität von Dokumenten

In XML-Dokumenten, die konform zu dieser Spezifikation sind, müssen Elementtypen und Attributnamen der Bauanleitung für QName entsprechen und die Namensraumzwänge erfüllen.

Ein XML-Dokument ist konform zu dieser Spezifikation, wenn alle anderen Tokens im Dokument, die aus Gründen der XML-Konformität der XML-Bauanleitung für Name entsprechen müssen, auch der in dieser Spezifikation gegebenen Bauanleitung für NCName entsprechen.

Konformität bedeutet für ein Dokument, dass

Streng genommen sind Attributwerte, die als ID, IDREF(S), ENTITY(IES) und NOTATION deklariert sind, ebenfalls Namen und sollten keine Doppelpunkte enthalten. Jedoch ist der deklarierte Typ eines Attributwerts nur Prozessoren bekannt, welche die Markup-Deklarationen lesen. Ein Beispiel sind validierende Prozessoren. Deshalb ist nicht sicher, ob der Inhalt des Attributwerts auf Konformität zu dieser Spezifikation überprüft worden ist, auch wenn der Gebrauch von validierenden Prozessoren spezifiziert ist.

A Die interne Struktur von XML-Namensräumen (nicht normativ)

A.1 Die Unzulänglichkeit der traditionellen Namensräume

In der Computersprache bezieht sich der Begriff Namensraum normalerweise auf eine Zusammenstellung von Namen, z.B. einer Zusammenstellung ohne Duplikate. Werden die Namen in XML-Markup jedoch mit dieser Bedeutung von Namensraum verwendet, wird ein großer Teil ihres Potenzials vernachlässigt. Der vorrangige Nutzen solcher Namen in XML-Dokumenten ist die Indentifikation von logischen Strukturen in Dokumenten durch Software-Module wie Abfrage-Prozessoren, Style Sheet erkennende Render-Engines und Schema erkennende Validatoren. Erwägen Sie das folgende Beispiel:

<section><title>Book-Signing Event</title>
<signing>
  <author title="Mr" name="Vikram Seth" />
  <book title="A Suitable Boy" price="$22.95" /></signing>
<signing>
  <author title="Dr" name="Oliver Sacks" />
  <book title="The Island of the Color-Blind" price="$12.95" /></signing>
</section>

In diesem Beispiel taucht der Name title dreimal im Markup auf und der Name alleine bietet offensichtlich keine ausreichenden Informationen für eine korrekte Verarbeitung durch ein Software-Modul.

Ein weiterer problematischer Bereich rührt her vom Gebrauch globaler Attribute, wie in diesem Beispiel gezeigt. Ein Ausschnitt aus einem XML-Dokument, welches mit Hilfe von CSS Style Sheets dargestellt werden soll:

<RESERVATION>
 <NAME HTML:CLASS="largeSansSerif">Layman, A</NAME>
 <SEAT CLASS="Y" HTML:CLASS="reallyImportant">33B</SEAT>
 <DEPARTURE>1997-05-24T07:55:00+1</DEPARTURE></RESERVATION>

In diesem Fall unterscheidet sich das CLASS-Attribut, welches die Gebührengrundlage beschreibt und Werte wie "J", "Y" und "C" annimmt, in allen semantischen Bereichen vom Attribut HTML:CLASS, welches verwendet wird, um syntaktische Vielfalt in HTML zu simulieren, indem das begrenzte Repertoire an Elementen durch Unterklassen umgangen wird.

XML 1.0 bietet keinen eigenen Weg, globale Attribute zu deklarieren; Dinge wie das HTML-Attribut CLASS sind nur durch ihre selbsterklärende Beschreibung und durch die Interpretation durch HTML-Anwendungen global. Jedoch kann man beobachten, dass solche Attribute, deren wichtiges unterscheidendes Merkmal ist, dass ihre Namen einmalig sind, in vielen unterschiedlichen Anwendungen vorkommen.

A.2 XML-Namensraum-Partitionen

Um das Ziel zu unterstützen, dass sowohl qualifizierte als auch nicht qualifizierte Namen ihren beabsichtigten Zweck erfüllen, identifizieren wir die Namen, die in XML-Namensräumen vorkommen, als würden sie zu einem von mehreren auseinander genommenen traditionellen (z.B. set-strukturierten) Namensräumen gehören, welche sich Namensraum-Partitionen nennen. Diese Partitionen sind:

Die All Element Types Partition

Alle Elementtypen in einem XML-Namensraum gehören zu dieser Partition. Jeder hat einen einzigartigen lokalen Teil; die Kombination aus Namensraumname und dem lokalen Teil identifiziert den Elementtyp eindeutig.

Die Global Attribute Partition

Diese Partition enthält die Namen aller Attribute, die für diesen Namensraum als global definiert sind. Die einzige geforderte Charakteristik des globalen Attributs ist, dass dessen Name einzigartig in der Global Attribute Partition ist. Diese Spezifikation macht keine Vorschriften in Bezug auf die geeignete Verwendung dieser Attribute. Die Kombination des Namensraumnamens mit dem Attributnamen identifiziert das globale Attribut eindeutig.

Die Per Element Type Partitions

Jeder Typ in der All Element Types Partition hat einen zugeordneten Namensraum, in dem die Namen der nicht qualifizierten Attribute erscheinen, die für das Element vorgesehen sind. Dies ist ein traditioneller Namensraum, weil das Vorhandensein von mehreren gleichen Attributnamen in einem Element laut XML 1.0 verboten ist. Die Kombination des Attributnamens mit dem Typ und dem Namensraumnamen des Elements identifiziert jedes nicht qualifizierte Attribut.

In XML-Dokumenten, die konform zu dieser Spezifikation sind, sind die Namen aller qualifizierten Attribute der Global Attribute Partition zugewiesen und die Namen aller nicht qualifizierten Attribute sind der passenden Per-Element-Type Partion zugewiesen.

A.3 Erweiterte Elementtypen und Attributnamen

Um einfacher Regeln spezifizieren und Vergleiche machen zu können, definieren wir eine ein XML-Syntax ausgedrückte erweiterte Form für jeden Elementtyp und jeden Attributnamen in einem XML-Dokument.

[Definition: Ein erweiterter Elementtyp wird als ein leeres XML-Element des Typs ExpEType ausgedrückt. Es hat ein erforderliches type-Attribut, das den LocalPart des Typs angibt, und ein optionales ns-Attribut, das, sofern das Element qualifiziert ist, seinen Namensraumnamen angibt.]

[Definition: Ein erweiterter Attributname wird als ein leeres XML-Element des Typs ExpAName ausgedrückt. Es hat ein erforderliches name-Attribut, das den Namen angibt. Sofern das Attribut global ist, hat es ein erforderliches ns-Attribut, das den Namensraumnamen angibt; ansonsten hat es ein erforderliches Attribut elttype, das den Typ des angehängten Elements angibt und ein optionales Attribut elns, das den Namensraumnamen des angehängten Elements angibt, sofern bekannt.]

Geringfügige Abweichungen der obigen Beispiele werden die Arbeitsweise der erweiterten Elementtypen und Attributnamen veranschaulichen. Den beiden folgenden Ausschnitten folgt jeweils eine Tabelle, welche die Erweiterung der Namen zeigt:

<!-- 1 --> <section xmlns='urn:com:books-r-us'>
<!-- 2 -->   <title>Book-Signing Event</title>
<!-- 3 -->   <signing>
<!-- 4 -->     <author title="Mr" name="Vikram Seth" />
<!-- 5 -->     <book title="A Suitable Boy" price="$22.95" />
             </signing>
           </section>

Die Namen würden wie folgt erweitert:

Line Name Expanded
1 section <ExpEType type="section" ns="urn:com:books-r-us" />
2 title <ExpEType type="title" ns="urn:com:books-r-us" />
3 signing <ExpEType type="signing" ns="urn:com:books-r-us" />
4 author <ExpEType type="author" ns="urn:com:books-r-us" />
4 title <ExpAName name='title' eltype="author" elns="urn:com:books-r-us" />
4 name <ExpAName name='name' eltype="author" elns="urn:com:books-r-us" />
5 book <ExpEType type="book" ns="urn:com:books-r-us" />
5 title <ExpAName name='title' eltype="book" elns="urn:com:books-r-us" />
5 price <ExpAName name='price' eltype="book" elns="urn:com:books-r-us" />

<!-- 1 --> <RESERVATION xmlns:HTML="http://www.w3.org/TR/REC-html40">
<!-- 2 --> <NAME HTML:CLASS="largeSansSerif">Layman, A</NAME>
<!-- 3 --> <SEAT CLASS="Y" HTML:CLASS="largeMonotype">33B</SEAT>
<!-- 4 --> <HTML:A HREF='/cgi-bin/ResStatus'>Check Status</HTML:A>
<!-- 5 --> <DEPARTURE>1997-05-24T07:55:00+1</DEPARTURE></RESERVATION>

1 RESERVATION <ExpEType type="RESERVATION" />
2 NAME <ExpEType type="NAME" />
2 HTML:CLASS <ExpAName name="CLASS" ns="http://www.w3.org/TR/REC-html40" />
3 SEAT <ExpEType type="SEAT" />
3 CLASS <ExpAName name="CLASS" eltype="SEAT" />
3 HTML:CLASS <ExpAName name="CLASS" ns="http://www.w3.org/TR/REC-html40" />
4 HTML:A <ExpEType type="A" ns="http://www.w3.org/TR/REC-html40" />
4 HREF <ExpAName name="HREF" eltype="A" elns="http://www.w3.org/TR/REC-html40" />
5 DEPARTURE <ExpEType type="DEPARTURE" />

A.4 Einzigartige erweiterte Attributnamen

Die Zwänge, ausgedrückt in 5.3 Einzigartigkeit von Attributen oben, könnten einfach so implementiert werden, dass kein Element zwei Attribute haben darf, deren erweiterte Namen äquivalent sind, z.B. die gleichen Attributwert-Paare haben.

B Anerkennungen (nicht normativ)

Diese Arbeit spiegelt die Beiträge vieler Personen wieder, insbesondere der Mitglieder der World Wide Web Consortium XML Working Group und der Special Interest Group sowie der Mitarbeiter der W3C Metadata Activity. Die Mitwirkung von Charles Frankston von Microsoft war besonders wertvoll.

C Verweise

RFC2141
IETF (Internet Engineering Task Force) RFC 2141: URN Syntax, Editor R. Moats. Mai 1997.
RFC2396
IETF (Internet Engineering Task Force) RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax, Editoren T. Berners-Lee, R. Fielding, L. Masinter. August 1998.
XML
Extensible Markup Language (XML) 1.0, Editoren Tim Bray, Jean Paoli und C. M. Sperberg-McQueen. 10. Februar 1998. Verfügbar unter: http://www.edition-w3c.de/TR/REC-xml.

Stichwortverzeichnis

Stichwort Art des Vorkommens
Attribut Formale Produktion(en)
Attributnamen für Namensraum-Deklarationen Formale Produktion(en)
Elementtypen Formale Produktion(en)
Erweiterter Attributname Definition
Erweiterter Elementtyp Definition
Identisch Definition
Lokaler Teil Definition
Namensraum Definition
Namensraum-Deklaration Definition
Namensraum-Präfix Definition
Namensraumname Definition
Qualifizierte Namen in Deklarationen Formale Produktion(en)
Qualifizierter Name Definition
Qualifizierter Name Formale Produktion(en)
Voreingestellter Namensraum Definition