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 "&#169;">
]>
<author>&writer;&copyright;</author>

Zauważysz tutaj, że użyliśmy &#169;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.