13 Stimmen

Welche Bedeutung haben die abschließenden Schrägstriche in einem Namespace-URI?

Ich habe mich mit SOAP und WSDL beschäftigt, um mich auf die Implementierung eines Webdienstes vorzubereiten. Eine Sache, auf die ich gestoßen bin, die mich verwirrt, ist, dass einige der URIs, die ich gesehen habe, einen abschließenden Schrägstrich verwenden, wie z. B.:

http://www.w3.org/some-namespace/

während andere Beispiele, die ich studiert habe, diesen Schrägstrich am Ende weglassen. Ich habe dazu wirklich mehrere Fragen:

  • Welche Bedeutung hat der Schrägstrich am Ende?
  • Ist der URI http://www.w3.org/some-namespace derselbe wie http://www.w3.org/some-namespace/?
  • Wenn sie nicht dasselbe sind, wie entscheide ich dann, wann eine Form gerechtfertigt ist und wann eine andere?
  • Ich habe die Leitlinien des w3c zu URIs gelesen, und diese scheinen darauf hinzuweisen, dass URIs nur dann als gleichwertig angesehen werden sollten, wenn der Vergleich der URI-Strings unter Berücksichtigung der Groß- und Kleinschreibung als gleichwertig angesehen wird. Ist diese Interpretation richtig?

10voto

Dimitre Novatchev Punkte 234995

Ja, die w3c-Leitlinien für URIs, die Sie gelesen haben, sind korrekt. .

Die beiden Namespaces mit not equal-strings-uri's sind unterschiedliche Namespaces. Sogar Großschreibung und Leerzeichen sind wichtig .

Eine Namespace-uri bedeutet nicht, dass eine Anfrage nach ihr eine Web-Antwort erzeugen sollte. Daher ist jede Überlegung, ob sie mit "/" enden sollte oder nicht, nicht sehr sinnvoll.

Eine Namespace-uri kann sogar die Syntaxregeln für einen URI nicht erfüllen und erfüllt trotzdem ihren Zweck zur Definition eines Namensraums. Es ist durchaus sinnvoll, einen Namespace wie, sagen wir, zu verwenden:

"\/^%$#sdhfgds"

solange sie eindeutig ist (bitte beachten Sie, dass ich eine solche Verwendung in keiner Weise empfehle :) ). Vorhandene XML-Prozessoren (wie Parser, XPath- oder XSLT-Prozessoren) lösen keine Fehler aus, wenn sie auf einen solchen Namensraum stoßen.

6voto

kdgregory Punkte 37614

Namespace-URIs sind einfach als eindeutige Bezeichner gedacht ( aquí ist ein Link zu den Regeln zum Vergleich). Die Verwendung eines URI (im Gegensatz zu, sagen wir, "foo") kann (glaube ich) auf die Verwendung von URIs in einem XML-DOCTYPE zurückgeführt werden.

Das ist auch der Punkt, an dem die Verwirrung über die "Auffindbarkeit" solcher URIs entsteht. Die XML-Spezifikation verlangt, dass der SYSTEM-Bezeichner in einem DOCTYPE verwendet werden kann, um die DTD des Dokuments abzurufen (ich verweise auf die Annotated XML Spec und nicht auf die W3C-Version, weil ich den Kommentar von Tim Bray für sehr nützlich halte).

Obwohl andere Spezifikationen (z. B. XML-Schema) dieses Verhalten nicht vorschreiben, bin ich der Meinung, dass es eine nützliche Gewohnheit ist, die man befolgen sollte - insbesondere im Fall von Schema-Zielnamensräumen. Zum einen wird es dadurch für die Benutzer Ihres Schemas einfach, immer die richtige Definition zu finden. Zum anderen können Sie, wenn Sie die Möglichkeit haben, das Dokument unter einer öffentlichen URL zu veröffentlichen, auch sicherstellen, dass der URI eindeutig ist.

Endlich: Uniform Resource Identifiers (URIs) sind eine Obermenge der Uniform Resource Locators (URLs). Sie können auch einen einheitlichen Ressourcennamen (URN) haben, und ich glaube (habe aber die Spezifikation nicht zur Hand), dass es noch eine dritte Form von Bezeichnern gibt.

3voto

Marc Gravell Punkte 970173

Nein, sie sind nicht dasselbe.

Der größte Unterschied bestünde in der Bildung von relativen Uris aus dieser Basis; mit dem Schrägstrich wäre die relative Uri ein Nachkomme; ohne den Schrägstrich wäre sie ein Geschwisterteil - d. h. (C#-Beispiel):

    Uri uri = new Uri(@"http://www.w3.org/some-namespace/");
    Console.WriteLine(new Uri(uri, "foo")); // http://www.w3.org/some-namespace/foo

    uri = new Uri(@"http://www.w3.org/some-namespace");
    Console.WriteLine(new Uri(uri, "foo")); //http://www.w3.org/foo

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X