Jeśli plik XML jest powiązany z definicją DTD lub schematem XML, oznacza to, że spełnia on reguły strukturalne zawarte w tej definicji DTD lub schemacie XML. Aby dokument był poprawnym plikiem XML, musi mu towarzyszyć definicja DTD lub schemat XML, a także musi być zgodny ze wszystkimi deklaracjami w tej definicji DTD lub schemacie XML.
Istnieją dwa różne sposoby powiązania plików XML z definicjami DTD lub schematami XML.
<!DOCTYPE root-name PUBLIC "IdFaktury" "C:\definicje_DTD\Faktura.dtd">
IdFaktury jest identyfikatorem publicznym pliku DTD. Służy on do wiązania pliku XML z plikiem DTD (w tym przypadku plikiem DTD jest plik Faktura.dtd). Jeśli identyfikator publiczny IdFaktury odpowiada kluczowi pozycji katalogu XML dla pliku Faktura.dtd, to do określenia położenia definicji DTD używany jest identyfikator URI pozycji katalogu XML zawierającej informację o położeniu pliku Faktura.dtd. W przeciwnym razie położenie definicji DTD jest określane przy użyciu systemowego identyfikatora deklaracji DOCTYPE („C:\definicje_DTD\Faktura.dtd”), który odwołuje się bezpośrednio do położenia definicji DTD w systemie plików.
<!DOCTYPE Root-name SYSTEM "plik_DTD.dtd">
gdzie plik_DTD.dtd jest identyfikatorem systemowym odpowiadającym kluczowi pozycji katalogu XML.
Jeśli plik XML jest powiązany ze schematem XML, w pliku XML znajduje się jeden lub więcej atrybutów położenia schematu. Informacje w atrybucie schemaLocation służą jako „wskazówka” dla procesora XML. Poniżej przedstawiono przykłady wykorzystania atrybutów schemaLocation:
<purchaseOrder xmlns="http://www.ibm.com" xsi:schemaLocation="http://www.ibm.com C:\myschemas\PurchaseOrder.xsd"> <shipTo country="US"> ...
<purchaseOrder xmlns="http://www.ibm.com" xsi:schemaLocation="http://www.ibm.com PO.xsd"> <shipTo country="US"> ....
W Przykładzie 1 „wskazówka” schemaLocation („C:\myschemas\PurchaseOrder.xsd”) odnosi się bezpośrednio do położenia w systemie plików lub odsyłacza URI schematu XML. W tym przypadku plik schematu zostanie znaleziony bezpośrednio przez procesor XML.
W Przykładzie 2 „wskazówka” schemaLocation („PO.xsd”) odnosi się do pozycji katalogu XML. PO.xsd odpowiada kluczowi pozycji katalogu XML dla pliku PurchaseOrder.xsd, a do znalezienia schematu XML zostanie użyty identyfikator URI pozycji katalogu XML (zawierający informacje o położeniu pliku PurchaseOrder.xsd).
W obu przykładach adres http://www.ibm.com w znaczniku xsi:schemaLocation jest identyfikatorem URI identyfikującym przestrzeń nazw dla schematu XML.
<purchaseOrder xmlns:="www.ibm.com" xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">
Atrybut schemaLocation wskazuje zarówno na klucz, jak i na rzeczywiste położenie schematu.
Definicja DTD lub schemat XML znajduje się na serwerze zdalnym
Niektóre funkcje edytora XML, takie jak sprawdzanie poprawności i aktywna obsługa treści, wymagają dostępności definicji DTD lub schematu XML. Dokumentacja produktu zawiera informacje o używaniu w przypadkach, gdy definicja DTD lub schemat XML znajduje się w komputerze lokalnym. Jednakże w wielu przypadkach definicja DTD lub schemat XML mogą znajdować się na serwerze zdalnym, na przykład:
<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">
Zazwyczaj taki przypadek nie stanowi problemu, ponieważ definicję DTD lub schemat XML można pobrać z serwera zdalnego. Jeśli jednak użytkownik znajduje się za firewallem i nie ma systemu obsługującego protokół SOCKS, środowisko robocze nie udostępnia obecnie sposobu określenia serwera socks, za pomocą którego można pobrać definicję DTD lub schemat XML. W przypadku braku możliwości zainstalowania obsługi protokołu SOCKS w systemie obejściem problemu byłoby pobranie kopii definicji DTD lub schematu XML (na przykład za pomocą przeglądarki WWW) i zapisanie go na komputerze lokalnym. Następnie można umieścić go w tym samym projekcie co plik XML lub za pomocą katalogu XML powiązać identyfikator publiczny z (lokalnym) położeniem definicji DTD.
W przypadku tworzenia bezpośredniego powiązania między plikiem XML a schematem XML lub plikiem DTD za każdym razem, gdy zmienia się położenie schematu lub pliku DTD, należy określić nowe położenie pliku DTD lub schematu we wszystkich odwołujących się do niego plikach XML. Jednakże w przypadku powiązania pliku XML z kluczem schematu XML lub pliku DTD po zmianie jego położenia wystarczy zaktualizować pozycję katalogu XML zamiast każdego pliku XML oddzielnie.
Przykład: Istnieje plik DTD o nazwie Building.dtd, który jest powiązany z pięcioma plikami XML - Office.xml, House.xml, Apartment.xml, Bank.xml oraz PostOffice.xml. Użytkownik przenosi plik DTD Building.dtd w nowe miejsce. W przypadku bezpośredniego powiązania między plikiem Building.dtd a wszystkimi plikami XML konieczne będzie zaktualizowanie deklaracji <DOCTYPE> w każdym pliku XML, aby wskazywała na nowe położenie pliku Building.dtd. Jeśli jednak istnieje powiązanie katalogu XML, a wszystkie pliki XML odwołują się tylko do klucza pliku Building.dtd, to wystarczy tylko zaktualizować identyfikator URI, a wszystkie pliki XML będą wskazywać nowe położenie pliku Building.dtd.
Po
zaktualizowaniu pozycji w katalogu XML może zajść potrzeba odświeżenia
widoku edytora XML, aby korzystał z nowych informacji. W tym celu należy kliknąć przycisk Przeładuj
zależności na pasku narzędzi , a
widok zostanie zaktualizowany przy użyciu bieżących ustawień katalogu XML. Wystarczy tylko odświeżyć widok edytora
XML, w którym otwarty jest plik XML odwołujący się do zaktualizowanej
pozycji katalogu XML.
Więcej informacji na ten temat zawierają opisy czynności pokrewnych.