DTD - jednostki
Encje służą do definiowania skrótów do znaków specjalnych w dokumentach XML. Jednostki mogą mieć przede wszystkim cztery typy -
Wbudowane jednostki
Jednostki postaci
Ogólne podmioty
Elementy parametrów
Składnia deklaracji jednostki
Ogólnie rzecz biorąc, można deklarować jednostki internally lub externally. Zrozummy każdy z nich i ich składnię w następujący sposób -
Jednostka wewnętrzna
Jeśli jednostka jest zadeklarowana w DTD, nazywana jest jednostką wewnętrzną.
Syntax
Poniżej znajduje się składnia wewnętrznej deklaracji jednostki -
<!ENTITY entity_name "entity_value">
W powyższej składni -
entity_name to nazwa jednostki, po której następuje jej wartość w podwójnym cudzysłowie lub pojedynczym cudzysłowie.
entity_value zawiera wartość nazwy jednostki.
Odwołanie do wartości encji jednostki wewnętrznej jest usuwane przez dodanie prefiksu & do nazwy jednostki, tj. & entity_name.
Example
Poniżej znajduje się prosty przykład wewnętrznej deklaracji jednostki -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address [
<!ELEMENT address (#PCDATA)>
<!ENTITY name "Tanmay patil">
<!ENTITY company "TutorialsPoint">
<!ENTITY phone_no "(011) 123-4567">
]>
<address>
&name;
&company;
&phone_no;
</address>
W powyższym przykładzie nazwy odpowiednich podmiotów name , company i phone_no są zastępowane ich wartościami w dokumencie XML. Odwołania do wartości encji są usuwane przez dodanie prefiksu & do nazwy jednostki.
Zapisz ten plik jako sample.xmli otworzysz go w dowolnej przeglądarce, zauważysz, że wartości encji dla name , company , phone_no są odpowiednio zastępowane.
Podmiot zewnętrzny
Jeśli jednostka jest zadeklarowana poza DTD, nazywana jest jednostką zewnętrzną. Do jednostki zewnętrznej można odwoływać się przy użyciu identyfikatorów systemowych lub identyfikatorów publicznych.
Syntax
Poniżej znajduje się składnia deklaracji jednostki zewnętrznej -
<!ENTITY name SYSTEM "URI/URL">
W powyższej składni -
name to nazwa podmiotu.
SYSTEM jest słowem kluczowym.
URI/URL to adres źródła zewnętrznego ujęty w podwójne lub pojedyncze cudzysłowy.
Types
Możesz odwołać się do zewnętrznego DTD, używając -
System Identifiers - Identyfikator systemowy umożliwia określenie położenia zewnętrznego pliku zawierającego deklaracje DTD.
Jak widać, zawiera słowo kluczowe SYSTEM i odniesienie URI wskazujące lokalizację dokumentu. Składnia jest następująca -
<!DOCTYPE name SYSTEM "address.dtd" [...]>
Public Identifiers - Identyfikatory publiczne zapewniają mechanizm lokalizacji zasobów DTD i są zapisane jak poniżej -
Jak widać, zaczyna się od słowa kluczowego PUBLIC, po którym następuje wyspecjalizowany identyfikator. Identyfikatory publiczne służą do identyfikacji pozycji w katalogu. Identyfikatory publiczne mogą mieć dowolny format; jednak powszechnie używany format jest nazywany formalnymi identyfikatorami publicznymi lub FPI.
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
Example
Rozumiemy zewnętrzną jednostkę na następującym przykładzie -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
<name>
Tanmay Patil
</name>
<company>
TutorialsPoint
</company>
<phone>
(011) 123-4567
</phone>
</address>
Poniżej zawartość pliku DTD address.dtd -
<!ELEMENT address (name, company, phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
Wbudowane jednostki
Wszystkie parsery XML muszą obsługiwać wbudowane jednostki. Ogólnie rzecz biorąc, możesz używać tych odniesień do encji w dowolnym miejscu. Możesz także użyć zwykłego tekstu w dokumencie XML, na przykład w treści elementów i wartościach atrybutów.
Istnieje pięć wbudowanych jednostek, które odgrywają swoją rolę w dobrze uformowanym formacie XML, są to -
ampersand: & amp;
Pojedynczy cudzysłów: & apos;
Większe niż: & gt;
Mniejsze niż: & lt;
Podwójny cudzysłów: & rdquo;
Przykład
Poniższy przykład demonstruje wbudowaną deklarację jednostki -
<?xml version = "1.0"?>
<note>
<description>I'm a technical writer & programmer</description>
<note>
Jak widać tutaj, & amp; znak jest zastępowany przez & za każdym razem, gdy procesor to napotka.
Jednostki postaci
Jednostki znakowe są używane do nazwania niektórych jednostek, które są symboliczną reprezentacją informacji, tj. Znaki, które są trudne lub niemożliwe do wpisania, mogą być zastąpione przez jednostki znakowe.
Przykład
Poniższy przykład demonstruje deklarację jednostki znaku -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE author[
<!ELEMENT author (#PCDATA)>
<!ENTITY writer "Tanmay patil">
<!ENTITY copyright "©">
]>
<author>&writer;©right;</author>
Zauważysz tutaj, że użyliśmy ©jako wartość praw autorskich. Zapisz ten plik jako sample.xml i otwórz go w przeglądarce, a zobaczysz, że prawa autorskie zostały zastąpione znakiem ©.
Ogólne podmioty
Ogólne encje muszą być zadeklarowane w DTD, zanim będą mogły być użyte w dokumencie XML. Zamiast przedstawiać tylko jeden znak, jednostki ogólne mogą reprezentować znaki, akapity, a nawet całe dokumenty.
Składnia
Aby zadeklarować jednostkę ogólną, użyj deklaracji tej ogólnej formy w swoim DTD -
<!ENTITY ename "text">
Przykład
Poniższy przykład demonstruje ogólną deklarację jednostki -
<?xml version = "1.0"?>
<!DOCTYPE note [
<!ENTITY source-text "tutorialspoint">
]>
<note>
&source-text;
</note>
Ilekroć parser XML napotka odniesienie do encji tekstu źródłowego , dostarczy tekst zastępczy do aplikacji w punkcie odniesienia.
Elementy parametrów
Celem encji parametrycznej jest umożliwienie tworzenia sekcji tekstu zastępczego wielokrotnego użytku.
Składnia
Poniżej znajduje się składnia deklaracji jednostki parametru -
<!ENTITY % ename "entity_value">
Wartość_jednostki to dowolny znak, który nie jest „&”, „%” ani „” ”.
Przykład
Poniższy przykład demonstruje deklarację jednostki parametru. Załóżmy, że masz deklaracje elementów, jak poniżej -
<!ELEMENT residence (name, street, pincode, city, phone)>
<!ELEMENT apartment (name, street, pincode, city, phone)>
<!ELEMENT office (name, street, pincode, city, phone)>
<!ELEMENT shop (name, street, pincode, city, phone)>
Teraz przypuśćmy, że chcesz dodać dodatkowy kraj elementu , a następnie musisz dodać go do wszystkich czterech deklaracji. Dlatego możemy przejść do odniesienia do encji parametrycznej. Teraz używając odniesienia do encji parametrycznej, powyższy przykład będzie -
<!ENTITY % area "name, street, pincode, city">
<!ENTITY % contact "phone">
Elementy parametrów są wyłuskiwane w taki sam sposób, jak odniesienie do elementu ogólnego, tylko ze znakiem procentu zamiast znaku ampersand -
<!ELEMENT residence (%area;, %contact;)>
<!ELEMENT apartment (%area;, %contact;)>
<!ELEMENT office (%area;, %contact;)>
<!ELEMENT shop (%area;, %contact;)>
Gdy parser odczytuje te deklaracje, zastępuje tekst zastępczy jednostki dla odwołania do jednostki.