Giovanni: XML Namensräume

Hallo, ich hab mir dies hier durchgelesen:
http://selfhtml.teamone.de/xml/regeln/namensraeume.htm

Es werden die Namensräume von XML erklärt. Dabei wird ein Präfix erstellt, der Bezug auf eine URI nimmt. Wieso? Und Wieso kann die URI einfach irendwie heißen? Ich versteh das nicht ganz?

<?xml version="1.0" encoding="ISO-8859-1" ?>
<buch xmlns="http://www.IrgendeineDummeAdresseAberWieso.de">   <-
<kapitel nummer="1">
...

Danke für Eure Hilfe
Gruß
Giovanni

  1. Hallo Giovanni,

    Es werden die Namensräume von XML erklärt. Dabei wird ein Präfix erstellt,
    der Bezug auf eine URI nimmt. Wieso? Und Wieso kann die URI einfach irendwie
    heißen? Ich versteh das nicht ganz?

    Das Ziel dabei ist es, einen eindeutigen und persistenten Namen für dieses
    Namensraum zu erstellen. Persistenz bedeutet soviel, daß sich der Name
    nicht ändert. Die Anforderungen an einen Namen ist also, daß er kein zweites
    Mal auftaucht und sich in der Zukunft nicht ändert. Anstatt nun ein neues
    Konzept zu erstellen, wird einfach ein gegebenes und schon verstandenes
    Namenskonzept genommen, das der URI, da diese die Anforderungen erfüllt.

    Zum Beispiel: Angenommen bei SELFHTML wird zu irgendwelchen Zwecken die
    XML-Sprache SelfML 1.0 entwickelt. Man könnte nun als Namen einfach
    "SelfML" nehmen, ja. Aber was ist, wenn nun das Projekt SELFLINUX zu
    eigenen Zwecken auch eine XML-Sprache entwickelt und diese auch "SelfML"
    nennt? Dann könnte es bei einer eventuellen Vermischung der beiden Sprachen
    zu technischen Problemen kommen.

    Erste einfache Lösung: Man berücksichtigt, daß unser SelfML ein Produkt
    von SELFHTML ist und benennt den Namen um in SELFHTML:SelfML. Wenn man
    ihn als urn:selfhtml:selfml schreibt, kommt übrigens ein URN, ein
    Uniform Resource Name heraus. URNs sind eine Teilmenge von URIs, den
    Uniform Resource Identifiers.

    Aber was passiert nun, wenn das französische SELFHTML zu seinen Zwecken
    ein anderes SelfML entwickelt, wenn Patrick und Serge plötzlich Lust
    darauf haben? Und wenn sie dieses genauso benennen? Sehr unwahrscheinlich,
    aber der technische Standard soll ja alles mögliche abdecken.

    Man besinnt sich darauf, was ein Projekt eindeutig identifizieren kann
    und weltweit eindeutig ist. Und so etwas eindeutiges gibt es schon, es sind
    Domainnamen in den uns bekannten URLs. SELFHTML Deutsch und SELFHTML
    Französisch könnten als Namen nun diese beiden wählen und es gäbe keine
    Konflikte:
    http://selfhtml.teamone.de/namespace/SelfML
    http://www.selfhtml.com.fr/namespace/SelfML

    Nebenbei: Man muß ja nicht unbedingt eine HTTP-URL nehmen. Es gibt ja
    auch noch andere URL-Schemata. Zum Beispiel tel://-URLs. Auch wenn das
    wenig sinnvoll erscheint. ;-)

    Ist das schon ideal oder könnte es noch etwas besseres geben? Ja. SELFHTML
    könnte ja nicht immer unter selfhtml.teamone.de residieren, sondern die
    Domain wechseln. Das heißt die zweite Anforderung, die Persistenz eines
    Namens ist nicht mehr gegeben (In unserem Beispiel den sehr, sehr, sehr
    unwahrscheinlichen Fall, wenn sich jemand dann selfhtml.teamone.de
    reserverieren würde und auch eine Sprache namens SelfML entwickelt und
    ihr auch obigen Namen reserviert). Schon wieder ein Konflikt.

    Über Persistenz von URIs und URLs wurde schon häufiger nachgedacht, ein
    Gedanke ist es, daß URIs praktisch ewig gleich bleiben. Ein Resultat
    davon ist das Projekt PURL: http://www.purl.org/ Dort kann man unter
    purl.org auch wieder Namen reservieren und diese auf die tatsächliche
    gerade existierende Seite weiterleiten. Und man kann auch einfach Namen
    reservieren, die man nur für einen Namensraum benutzt.

    Und hier gilt wieder wie bei Domains das Prinzip »First come, first serve«,
    das heißt, wer am ersten reserviert, kriegt den Namen. Damit wird wieder
    für Eindeutigkeit gesorgt. Wenn SELFHTML also flink ist, könnte es sowas
    wie http://purl.org/selfhtml/namensraeume/selfml/1.0 reservieren. Es
    kann jedoch auch sein, daß Patrick und Serge vom französischen SELFHTML
    schneller sind. Was aber nicht wirklich ein Problem sein, könnte, wir
    könnten uns ja absprechen. ;-)

    Klingt kompliziert? Es sind aber alles Überlegungen, die man machen muß,
    wenn man nach einem eindeutigen und zukunftsfähigen Namen für seinen
    Namensraum sucht. Und ich finde URLs sind hier eine recht praktikable
    Lösung, PURL-URLs auch, wenn nicht gerade purl.org irgendwann den Dienst
    aufgibt.

    Tim

    1. Hey, vielen vielen Dank für eure so ausführlichen Antworten. Ich fand beide Antworten sehr gut und hab es 100% verstanden! Danke!

      Ihr soltet Lehrer oder Informatik Professoren werden!

  2. Hallo,

    Es werden die Namensräume von XML erklärt. Dabei wird ein Präfix erstellt, der Bezug auf eine URI nimmt. Wieso?

    Ein Namensraum ist nichts anderes als eine Sammlung von Namen die über eine URI eindeutig identifizierbar sind und die in XML-Dokumenten als Name für Elementtypen und Attribute genutzt werden.

    buch:buch
     buch:titelRatgeber</buch:titel>
     buch:autor
      person:titelDr.</person:titel>
      person:vornamePeter</person:vorname>
      person:nachnameKlug</person:nachname>
     </buch:autor>
    </buch:buch>

    Hier haben wir Elementen die sich auf eine Person beziehen einen Präfix mit dem Namen „person“ und Elementen die sich auf das Buch beziehen  einen Präfix mit dem Namen „buch“ zugewiesen. Somit erhalten wir zwei Gruppen von Elementen und wir können sofort sagen, welche Elemente in die eine und welche in die andere Gruppe gehören.
    Jede diese Gruppen bildet einen Namensraum und das jeweilige Präfix ist das sogenannte Namensraum-Präfix.
    Wir habe noch immer nicht die Sicherheit, dass unsere Elemente eindeutig gekennzeichnet sind, denn andere Autoren könnten ebenso diese Präfixe für ihre Elemente benutzen.
    Um auch dieses Problem zu lösen, können wir bestimmen, dass für diese Präfixe eine URI als Name genutzt werden soll.
    Da URIs eindeutig sind, würden wir also das Problem beheben.
    Und so könnte dann eine unsere Elemente in einem XML-Dokument notiert werden:
    http://www.meinedomain.de/person/:titelDr.</http://www.meinedomain.de/person/:titel>

    In XML darf aber ein  XML-Name nicht das Zeichen „/“ enthalten, und dieses hätten wir in einer URI, womit unsere Dokumente nicht mehr wohlgeformt wären.
    Was wir also benötigen ist eine Kombination von beiden, einerseits die Möglichkeit der Verwendung von eindeutigen URIs, anderseits die Möglichkeit Präfixe zu verwenden. Und genau diese Kombination bietet der Namensraumkonzept von XML.
    Ein Element oder Attribut aus dem Namensraum wird dann über das Namensraum-Präfix referenziert und das Namensraum-Präfix dient dabei als Abkürzung der URI. Intern ersetzt der XML-Parser den Namensraum-Präfix durch den Namensraum selbst.

    Und Wieso kann die URI einfach irendwie heißen? Ich versteh das nicht ganz?

    Weil ein URI nun mal irgendwie heissen kann.
    Die URI die einen Namensraum definiert ist lediglich eine formale Bezeichnung und muss nicht auf eine real existierende Ressource verweisen. Es ist auch  nicht nötig, dass eine existierende Ressource die verwendete Syntax im Dokument beschreibt.

    Klarer?

    Grüße
    Thomas