Dlaczego potrzebujemy identyfikatorów URI dla przestrzeni nazw XML?

23

Próbuję dowiedzieć się, dlaczego potrzebujemy identyfikatorów URI dla przestrzeni nazw XML i nie mogę znaleźć dla tego celu. Czy ktoś może mnie trochę rozjaśnić, pokazując ich użycie na konkretnym przykładzie?

EDYTOWAĆ:

Ok, więc na przykład: Mam to z w3schools

<root
xmlns:h="http://www.w3.org/TR/html4/"
 xmlns:f="http://www.w3schools.com/furniture">

 <h:table>
   <h:tr>
     <h:td>Apples</h:td>
     <h:td>Bananas</h:td>
   </h:tr>
 </h:table>

 <f:table>
   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
 </f:table>

 </root>

Co więc powinno się http://www.w3schools.com/furnituretrzymać?

Patryk
źródło
7
Obowiązkowy komentarz w3fools .
yannis
Czy zatem przestrzenie nazw XML muszą mieć format URI? Czy mogę po prostu użyć dowolnego ciągu, takiego jak „My.Namespace.Foo”?
Mas

Odpowiedzi:

20

Nazw jest sposobem na powiedzenie „Ten rodzaj Foo” różni się od „tego rodzaju Foo”, mimo że są one napisane tak samo. Lub, jeśli wolisz, „ MÓJ rodzaj Foo” różni się od „ Każdy inny rodzaj Foo”.

Techniczny sposób powiedzenia tego to „URI mojej przestrzeni nazw dla Foo” różni się od wszystkich pozostałych URI dla ich przestrzeni nazw dla Foo. Innymi słowy, identyfikatory URI to tylko ciągi znaków, które pozwalają ci to powiedzieć.

Sztuką jest wtedy powiedzieć: „Hej, adresy URL są poprawnymi identyfikatorami URI”, a następnie użyć identyfikatora URI odpowiadającego adresowi URL pod kontrolą. Jeśli wszyscy to zrobią, unikniesz przypadkowych kolizji przestrzeni nazw. Równie dobrze mógłbyś powiedzieć przestrzeń nazw „A” i przestrzeń nazw „B”, ale ryzykujesz, że ktoś również użyje tej samej przestrzeni nazw, a wtedy twój rodzaj Foo nie będzie już różnił się od ich Foo, co jest dokładnie tym, czego chcesz uniknąć .

Następnie możesz dodać dodatkową konwencję do adresów URL używanych jako URI, na przykład, że adres URL musi odpowiadać stronie zawierającej dokumentację lub XSD lub podobny, ale nie jest to konieczne. To jest po prostu wygodne.


źródło
Ok, ale jaka jest różnica między przestrzenią nazw A a przestrzenią nazw w3.org/1999/xhtml ? oba mogą być używane przez użytkowników bez wiedzy, że używali tych samych przestrzeni nazw.
Patryk
1
@Patryk, dlatego używasz adresu URL, nad którym masz kontrolę. Adres URL przestrzeni nazw xhtml jest kontrolowany przez W3C, który zdefiniował specyfikację XHTML.
2
@Patryk, zauważ również, że to one definiują przestrzeń nazw, która może wybrać adres URL. Wtedy wszyscy inni będą mogli z nich korzystać .
1
Czy przestrzeń nazw abyłaby całkowicie poprawna? Głupie, ale ważne? Czy to musi być identyfikator URI?
Rudie
5
Czy nie byłoby wspaniale, gdyby kilka pierwszych osób korzystających z tej konwencji wiele lat temu umieściło również ładną zwięzłą dokumentację swoich schematów pod tymi adresami URL, co stało się rzeczywistością? Przestrzenie nazw OpenXML firmy Microsoft schemas.openxmlformats.org/drawingml/2006/chart wskazują na nic.
prototyp
16

Ogólnie rzecz biorąc, każdy niepowtarzalny identyfikator służyłby jako przestrzeń nazw; ale ponieważ ma być globalnie wyjątkowy , standard musiałby albo upoważnić jakiś organ arbitrażowy, albo użyć innego zasobu, który jest jednocześnie globalnie unikalny, ale łatwy do zdobycia i udowodnienia, że ​​jest twój.

O popatrz! jeśli masz domenę, to oczywiście tylko twoja i łatwo udowodnić, że jest twoja!

Chcieli na przykład uniknąć sytuacji, w której dwie różne księgarnie zaczynają używać „książek” jako przestrzeni nazw z całkowicie odmiennymi definicjami wewnętrznymi. Chociaż używają go wewnętrznie, nie ma problemu; ale gdy tylko jeden z nich chce opublikować swoją specyfikację, rozpęta się piekło.

Zamiast tego, jeśli zachęcamy Cię do korzystania z Twojej domeny, każdy (cóż, każdy, kto jest właścicielem domeny) może zdefiniować swoją prywatną przestrzeń nazw z pewnością, że nikt inny nie użyje dokładnie tego samego identyfikatora.

Jako bonus możesz opcjonalnie przechowywać definicję swojego obszaru nazw pod identyfikatorem URI, dzięki czemu jest to samo dokumentowanie.

To dla mnie świetny pomysł.

Javier
źródło
Dzięki za odpowiedź, ale potrzebowałbym czegoś bardziej konkretnego, aby to zrozumieć. Dodałem przykładowy kod, na którym możesz bazować, spójrz.
Patryk
1
@patryk - nic, to nie jest adres - to tylko unikalny token, na który na pewno nie ma nikt inny, z kim można mieszać pliki XML. Mówi tylko, że nazwy <tabela> itp. Nie będą używane bez innych znaczeń w plikach xml, które mają na górze nazwę www.w3.org
Martin Beckett
Ok, ale kiedy wikipedia mówi coś, co użytkownicy mogą wykorzystać na przykład w3.org/1999/xhtml jako przestrzeń nazw, wtedy wiele osób miałoby tę samą przestrzeń nazw. Czy mam rację ?
Patryk
@Patryk, tylko jeśli chcesz go używać do tego samego zastosowania. Jeśli chcesz zdefiniować nową przestrzeń nazw, zachęcamy do korzystania z własnej domeny
Javier
@Javier Co rozumiesz przez „to samo użycie”?
Patryk
1

Poziom DOM 2 został opublikowany pod koniec 2000 roku. Wprowadzono funkcję „getElementById”, a także model zdarzenia i obsługę przestrzeni nazw XML i CSS.

Co określa xmlIns?
Jako węzły atrybutów o nazwie „xmlns” lub „xmlns: xxx”, dokładnie tak, jak przestrzenie nazw są zapisane w źródłowym dokumencie XML. To jest model przedstawiony przez DOM.

Co zawiera URI?
Przestrzeń nazw XML deklarowana jest za pomocą zastrzeżonego pseudo atrybutu XML xmlns lub xmlns: prefix, którego wartość musi być prawidłową nazwą przestrzeni nazw.

Na przykład następująca deklaracja odwzorowuje przedrostek „xhtml:” na przestrzeń nazw XHTML:

xmlns: xhtml = "http://www.w3.org/1999/xhtml"

Jak odkryłem po przeczytaniu artykułu na Wikipedii. Identyfikator URI zawiera sformatowane w XML specyfikacje przestrzeni nazw. Zapewnia metodę unikania konfliktów nazw elementów.

Być może wiesz, że dokument XML używa XML Schemastruktury elementu / tabeli / klasy elementów dokumentu XML.

co powinien utrzymywać http://www.w3schools.com/furniture ?

Odpowiedź znajduje się na twojej stronie, gdzie dowiedziałeś się o przestrzeni nazw XML. Sprawdź Namespaces in Real Usesekcję w tym artykule W3Schools .

Sprawdź poniższy link stackoverflow, który pokazuje, co zawiera ten identyfikator URI:

Jak utworzyć i używać przestrzeni nazw XML?

Niranjan Singh
źródło
-1

URI = globalnie unikalna nazwa lub identyfikator przestrzeni nazw

Rozważ zbudowanie bazy danych lub dokumentu na temat zarządzania finansami logistyki przemysłu naftowego. Musiałoby to używać określonych słowników (tj. Terminów kontrolowanych) dla każdego z przedmiotów: bazy danych, dokumentu, zarządzania, finansów, logistyki, ropy i przemysłu.

Jeśli żaden z tych terminów nie pokrywa się z tymi siedmioma słownikami, potrzebny jest tylko jeden identyfikator URI. Ale dla każdego terminu, który nakłada się na inne terminy w tych słownikach, potrzebujesz dodatkowego słownictwa specjalistycznego określonego w URI lub IRI. Jednym ze sposobów obejścia tego jest stworzenie scalonej taksonomii, z szerszymi ogólnymi warunkami i węższymi warunkami specyficznymi dla przedmiotu.

Można to następnie rozwinąć w tezaurus, który pokazuje także synonimy żargonowe danego terminu i umożliwia określenie preferowanego terminu wśród tych synonimów żargonowych.

Roy Roebuck
źródło
2
ten post jest raczej trudny do odczytania (ściana tekstu). Czy mógłbyś edytować go w lepszym kształcie?
komar