xmlns,xmlns: xsi, xsi: schemaLocation i targetNamespace?

Dla następującego fragmentu XML:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">

Co zrobić xmlns, xmlns:xsi, i xsi:schemaLocation atrybuty dokładnie oznaczają? W jaki sposób są spokrewnieni? Do czego służy :?

I są 2 Adresy URL w xsi:schemaLocation=

  1. http://maven.apache.org/POM/4.0.0 (zdarza się, że jest taki sam jak xmlns, ale daje błąd 404 podczas odwiedzania.)
  2. http://maven.apache.org/xsd/maven-4.0.0.xsd jest to plik XSD doc.]}

Jeśli 1 nie istnieje, to dlaczego wciąż umieścić go tam?

Author: kjhughes, 2015-12-10

2 answers

Atrybuty związane z przestrzenią nazw w XML i XML Schema (XSD)

  • xmlns jest częścią przestrzeni nazw W3C w rekomendacji XML :

    Prefiks xmlns jest używany tylko do deklarowania wiązań przestrzeni nazw i jest z definicji związana z nazwą przestrzeni nazw http://www.w3.org/2000/xmlns/.

    W twoim przykładzie deklaruje, że http://maven.apache.org/POM/4.0.0 jest domyślną przestrzenią nazw dla elementy Twojego projektu Maven.

  • xmlns:xsi deklaruje standardowy prefiks przestrzeni nazw (xsi) dla podstawowej przestrzeni nazw używanej w XSD: http://www.w3.org/2001/XMLSchema-instance

    XML Schema: Structures definiuje również kilka atrybutów do bezpośredniego użycia w dowolnych dokumentach XML. Atrybuty te znajdują się w innej przestrzeni nazw, który ma nazwę przestrzeni nazw http://www.w3.org/2001/XMLSchema-instance . dla zwięzłości tekst i przykłady w niniejszej specyfikacji przedrostek xsi: oznacza to druga przestrzeń nazw; w praktyce można użyć dowolnego prefiksu.

    W twoim przykładzie , deklaruje konwencjonalne powiązanie prefiksu przestrzeni nazw xsi do http://www.w3.org/2001/XMLSchema-instance, które poprawnie ustawia użycie następujących atrybutów:

    • xsi:type pozwala instancji XML kojarzyć informacje o typie elementu bezpośrednio, a nie poprzez XSD. Zobacz też Jak ograniczyć wartość elementu XML using xsi:type in XSD?

      W twoim przykładzie, xsi:type nie jest używany; zawarte tutaj dla kompletności dotyczące xsi.

    • xsi:nil pozwala na uznanie pustego elementu za poprawny, gdy w przeciwnym razie XSD mogłoby na to nie pozwolić.

      W twoim przykładzie, xsi:nil nie jest używany; zawarte tutaj dla kompletności dotyczące xsi.

    • xsi:schemaLocation oraz xsi:noNamespaceSchemaLocation dostarcza wskazówki procesorowi XML, jak powiązać XSD z dokumentem XML. Użyj xsi:schemaLocation, gdy istnieje przestrzeń nazw; użyj xsi:noNamespaceSchemaLocation, gdy nie ma przestrzeni nazw.

      W twoim przykładzie istnieje przestrzeń nazw, więc prawidłowo używasz xsi:schemaLocation, których wartości są oddzielonymi spacjami parami z przestrzeń nazw oraz XSD-location-URI. Twój przykład używa przestrzeni nazw http://maven.apache.org/POM/4.0.0, a przestrzenie nazw są leksykalnymi konstrukcjami nazw, które nie trzeba być retrivable. Twój przykład używa również XSD-location-URI, http://maven.apache.org/xsd/maven-4.0.0.xsd, który jest retrivable tak jak powinien być.

      Jeśli twój przykład nie używa przestrzeni nazw, użyjesz xsi:noNamespaceSchemaLocation, której wartość jest pojedynczą XSD-location-URI to podpowiada lokalizację zamierzonego XSD i który powinien być odzyskiwalny.

  • targetNamespace jest atrybutem na korzeniu xs:schema element XSD która określa przestrzeń nazw elementu głównego XSD jest przeznaczony do zarządzania instancjami dokumentu XML. Musi dopasuj domyślną lub jawną przestrzeń nazw tych dokumentów XML ' root żywioły.

 26
Author: kjhughes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:16:24

xmlns definiuje domyślną przestrzeń nazw, która określa, że wszystkie węzły w węźle projektu i bez przestrzeni nazw-alias będą domyślnie w przestrzeni nazw http://maven.apache.org/POM/4.0.0.

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" definiuje przestrzeń nazw - http://www.w3.org/2001/XMLSchema-instance i nadaje jej nowy alias - xsi

xsi:schemaLocation jest atrybutem schemaLocation z "http://www.w3.org/2001/XMLSchema-instance" przestrzeni nazw. Zawiera pary wartości-URI przestrzeni nazw i link do lokalizacji schematu dla pliku XSD-schema tej przestrzeni nazw. Może zawierać wiele par wartości - jeden plik xsd dla każdego zdefiniowanego URI przestrzeni nazw. Że oznacza, że link http://maven.apache.org/xsd/maven-4.0.0.xsd zawiera schemat xsd z definicją przestrzeni nazw http://maven.apache.org/POM/4.0.0.

 4
Author: Nodonutsforyou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-01 11:08:45