DTD - encje ogólne i parametryczne, przestrzenie nazw Instytut Informatyki
Encje Encja (ang.entity) - uogólnienie pojęcia makrodefinicji Encje to dogodny sposób reprezentacji danych które występują wielokrotnie, które często zmieniają się.
Kiedy używamy encji Encje moga występować w dokumencie XML lub w DTD - deklaracje tylko w DTD. Encje mogą reprezentować: część dokumentu DTD, część lub cały dokument XML, specjalny znak lub ciąg znaków, blok tekstu.
Encje ogólne i parametryczne Wyróżniamy encje ogólne (general entities) encje parametryczne (parameter entities) - odwołania tylko w dokumentach DTD,
Encje ogólne - general entities Encje ogólne służą do deklarowania fragmentów XML; przyklad predefined.xml zawiera predefiniowane encje (obejrzeć w przeglądarce), przykład osoba.xml zawiera przykład użycia encji ogólnych Encje ogólne mogą być parsowane (kiedy w deklaracji umieszczono wartość atrybutu standalone= no ) lub nie.
Encje ogólne Encje ogólną wewnętrzną definiujemy używając słowa kluczowego ENTITY podając nazwę i wartość encji <!ENTITY mgr magister > użycie encji w dokumencie <!ATTLIST osoba tytul CDATA &mgr; >
Encje ogólne, cd Encje ogólne mogą być zastosowane do podziału dużego dokumentu na wiele dokumentów XML. W przykładzie katalog.xml użyto encji zewnętrznych. <!ENTITY firma1 SYSTEM Firma1.ent > Jako encja zewnętrzna (z pliku o nazwie podanej w tzw. identyfikatorze systemowym) włączane jest także DTD <!DOCTYPE PriceList SYSTEM internal-param.dtd >
Notacje Nazwa encji nieprzetwarzanej może być wartością atrybutu typu ENTITY <?xml version="1.0" standalone="no"?> <!DOCTYPE obrazek [ <!ELEMENT obrazek EMPTY> <!ATTLIST obrazek zrodlo ENTITY #REQUIRED> <!ENTITY logo SYSTEM "Logo.jpg" NDATA jpeg> <!NOTATION jpeg SYSTEM "..\jpgview.exe"> ]> <obrazek zrodlo="logo"/> por. obrazek.xml - encji musi zostać przypisana notacja wraz z informacją dla aplikacji zewnętrznej
Notacje,cd Deklaracja notacji rozpoznawana jest przez słowo kluczowe NOTATION, następujący tekst powinien jednoznacznie identyfikować format przetwarzanych danych. Dostęp do danych umożliwia adres napisany za nazwą formatu.
Encje parametryczne Encja parametryczna to specjalny rodzaj encji, do której referencje pojawiać się mogą wewnątrz DTD. Referencja ma postać: %nazwa-encji; natomiast deklaracja: <!ENTITY % nazwa-encji wartość-encji> Zasada działania encji parametrycznych jest identyczna z ogólnymi (zastępowanie tekstu) Encje parametryczne mogą ułatwić przejście z deklaracji DTD do XML Schema.
Encje parametryczne wewnętrzne Deklaracja encji parametrycznej - przykłady <!ENTITY % nazwa nazwa firmy imie nazwisko wlasciciela > <!ENTITY % float CDATA > odwołania do encji parametrycznej: <!ELEMENT odbiorca (%nazwa;)+> <!ATTLIST TodaysSpecial %deptattr; profit %float; #REQUIRED > Warto zwrócić na nazwa i opis encji umieszczony w cudzysłowie, średnik oraz znak % - bezpośrednio przed nazwą w odwołaniu. W przykładach internal-param.dtd i encjeparam.dtd zastosowano encje wewnętrzne.
Encje parametryczne zewnętrzne W przykładzie klient.dtd zastosowano encje zewnętrzne. Parametryczne encje zewnętrzne umożliwiają odwołania do zewnętrznych plików, w których znajdują sie fragmenty DTD, w miejscu użycia encji wstawiana jest zawartość zewnętrznego pliku wskazanego w deklaracji encji.
Encje parametryczne zewnętrzne W deklaracji parametrycznej encji zewnętrznej można wykorzystać zarówno prywatny zbiór z deklaracjami (SYSTEM) jak i publiczny (PUBLIC). Publiczne DTD zwykle opisuje jakiś uznany przez pewną społeczność standard dokumentów XML, odwołanie jest postaci: na poczatku znak plus lub minus co oznacza standard lub DTD nie będące standardem, nazwa osoby lub organizacji odpowiedzialnej za standard, typ dokumentu DTD i numer wersji, dwie litery oznaczające język
Sekcje warunkowe Sekcje warunkowe służą do wydzielania fragmentów dokumentów DTD z przetwarzania przez parser. deklaracja sekcji włączenia składa się ze słowa kluczowego INCLUDE oraz nawiasów [,] ograniczających sekcję, deklaracja sekcji ignorowanej zawiera słowo kluczowe IGNORE przykład warunkowy.dtd. Jak zmienić DTD, aby stworzyć dokument XML dla wersji osoba fizyczna
Przestrzenie nazw Pojedyńczy dokument XML może zawierać elementy zdefiniowane w różnych językach znaczników. Jak nie dopuścić do konfliktu, w przypadku gdy występuja te same nazwy? Stosuje się przestrzenie nazw traktuje się ustalony język znaczników jako zbiór nazw (elementów, atrybutów); nazwy w ramach jednej przestrzeni muszą być różne, każdej przestrzeni nazw przyporządkowuje się dodatkową nazwę - prefix; poprzedzenie każdego odwołania tym prefixem gwarantuje niepowtarzalność por. przykład ns.xml
Przestrzenie nazw cd. w jednym dokumencie możemy korzystać z kilku przestrzeni nazw, dla czytelności dokumentu wygodnie jest stosowac tzw. domyślna przestrzeń nazw, poprzez pominięcie prefiksu
Przestrzenie standardowe dla języka XHTML zwyczajowy prefiks html: dla języka XML Schema zwyczajowy prefiks xsd: dla języka XSLT zwyczajowy prefiks xsl: dla języka MathML zwyczajowy prefiks mml: itd Prefiks xml: jest zastrzeżony.
Przestrzenie nazw, przyklad Które nazwy nalezą do której przestrzeni? <a:xmlns:b="urn:b"> <c xmlns="urn:x"> <d:e xmlns="urn:y" xmlns:d="urn:d" b:f="g"> <i xmlns:b="urn:b2"> <j b:k="l"/> </i> </d:e> <m n="o"/> </c> </a> Odpowiedz a? nie należy do żadnej przestrzeni c? należy do urn:x e? należy do urn:d f? należy do urn:b i? należy do urn:y