Encja ma swoją nazwę i wartość - fragment dokumentu. Aby można użyć danej encji, trzeba ją zadeklarować w DTD (nie dotyczy to pięciu encji predefiniowanych). Procesor XML powinien traktować dokument tak jakby w miejsce referencji do encji wstawił ich wartości.
Referencja do encji ogólnej w dokumencie ma postać &nazwa_encji; i może wystąpić poza DTD, natomiast deklaracja w DTD:
<!ENTITY nazwa-encji wartość-encji>
Może być wiele deklaracji encji o tej samej nazwie, liczy się pierwsza.
Wartość encji może być podana bezpośrednio w deklaracji ujęta w znaki " lub ', wtedy encję nazywamy wewnętrzną. Można też zadeklarować encję zewnętrzną - jest to uogólnienie pliku, jakiś zasób dostępny dla procesora XML.
Do identyfikacji encji zewnętrznej służy identyfikator systemowy lub identyfikator publiczny. Domyślnie encja po wstawieniu jest przetwarzana jako XML, powinna być fragmentem XML dającym się sparsować (jeśli jest znacznik otwierający, powinien być zamykający itp.), ponadto może zaczynać się od deklaracji analogicznej do deklaracji XML, podającej wersję XML i kodowanie (np. <?xml version="1.0" encoding="UTF-8"?>).
Jeśli chcemy zadeklarować encję nieprzetwarzaną, należy napisać NDATA notacja - notacja powinna być zadeklarowana w DTD. Encja nieprzetwarzana może w dokumencie występować tylko jako wartość atrybutu typu ENTITY (ENTITIES).
<!ENTITY wewnetrzna "bla bla bla <bla>123</bla>">
<!ENTITY zewnetrzna_id_systemowy SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY zewnetrzna_id_publiczny PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" "http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY zewnetrzna_nieprzetwarzana SYSTEM "../grafix/OpenHatch.gif" NDATA gif >
Encje parametryczne to specjalny rodzaj encji, do których referencje pojawiać się mogą wewnątrz DTD. Referencja ma postać: %nazwa_encji;, natomiast deklaracja:
<!ENTITY % nazwa-encji wartość-encji>
Encje parametryczne też mogą być wewnętrzne i zewnętrzne, ale nie ma nieprzetwarzanych. Encje parametryczna i ogólna o tej samej nazwie są różnymi obiektami, mogą istnieć obok siebie.
Wszystkie encje muszą być zadeklarowane przed jakimkolwiek odwołaniem do nich.
Deklaracja notacji w DTD: <!NOTATION nazwa-notacji ID>
<!NOTATION GIF SYSTEM "ACDSee.exe">
<!NOTATION GIF PUBLIC "-//GIF.COM//Gif//EN" "ACDSee.exe">
<!NOTATION GIF PUBLIC "-//GIF.COM//Gif//EN">
Zastosowanie notacji:
<![INCLUDE[ fragment DTD ]]>
<![IGNORE[ fragment DTD ]]>
W połączeniu z encjami parametrycznymi stanowią mechanizm do tworzenia sparametryzowanych DTD.