Rolf B: Namespace Grundlagenfrage

Beitrag lesen

Hallo Pauli,

ich glaube, dein Missverständnis ist, dass sich hinter "http://www.w3.org/2001/XMLSchema" eine echte Ressource verbirgt, die man zum Verarbeiten eines Schemas braucht. Das ist nicht so. Dieser Namespace ist einfach ein Name, und wenn ein Programm ein Schema verarbeiten können will, dann

  • muss es wissen, was ein XML Schema ist
  • muss es prüfen, ob ein xmlns:xyz Attribut im XML Dokument drin ist, das dem Alias xyz den Namespace "http://www.w3.org/2001/XMLSchema" zuordnet. Dann weiß das Programm, dass alle Elemente die ein xyz: Prefix haben, zum Schema-Namespace gehören.

Sinn ist vor allem, Mehrdeutigkeiten zu vermeiden. XML wird so weit verbreitet eingesetzt, dass keiner garantieren kann, dass <element> ein Schema-Element meint. Es könnte ja auch zum Bauingenieurswesen gehören und ein Bauelement meinen. Darum definiert man Namespaces. Es gibt auch einen Default-Namespace (der mit xmlns="..."). Du bist nicht gezwungen, den Schema-Namespace xs zu nennen.

Du könntest, wenn ich gerade nicht ganz schief liege, das Beispielschema von Thomas auch so schreiben:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
  targetNamespace="http://example.org/myns">
  <element name="test">
    <complexType>
      <sequence>
        <element maxOccurs="unbounded" minOccurs="0" name="bla"/>
      <sequence>
    </complexType>
  </element>
</schema>

Solange Du nur Elemente aus einem Namespace brauchst, ist ein Prefix nicht zwingend nötig (meine ich). Es ist nur häufiger Brauch, xs für den Schema-Namespace zu verwenden.

Rolf

--
sumpsi - posui - clusi