Szukaj…
Uwagi
Z perspektywy przechowywania dokument XML składa się z encji. Jednym z podmiotów jest encja dokumentu, która jest głównym samym dokumentem XML.
Jednostki można tak sklasyfikować (wstępnie posortować według malejącej kolejności użycia):
- encja dokumentu : jest to główny plik XML.
- wewnętrzne podmioty ogólne : jest to najczęstszy przypadek oprócz obiektu dokumentu, i ten, o którym wie większość użytkowników XML. Często słowo „ encja” jest dla nich swobodnie używane. Pozwalają określić niektóre skróty do dłuższych tekstów zastępczych w treści dokumentu. Są zadeklarowane w DTD.
- zewnętrzny podzbiór DTD : inny plik, w którym część DTD jest zlecana na zewnątrz.
- encje parametrów : skróty, do zastosowania w DTD.
- zewnętrzne parsowane podmioty ogólne : są to fragmenty XML przechowywane w innych plikach.
- niepodzielone byty : mogą to być dowolne pliki, na które XML nie nakłada żadnych ograniczeń, w tym obrazy, dźwięki itp.
W wielu przypadkach dokument XML składa się wyłącznie z encji dokumentu.
Wstępnie zdefiniowane podmioty ogólne
XML wstępnie definiuje pięć ogólnych encji, których można używać bez ich deklarowania:
& " ' < >
Są one powiązane z nazwami amp
, quot
, apos
, lt
i gt
.
<?xml version="1.0"?>
<entities>
& is an ampersand.
" is a quote.
' is an apostrophe.
< is a lower-than sign.
> is a greater-than sign.
</entities>
Zdefiniowane przez użytkownika ogólne (wewnętrzne) podmioty
Możliwe jest zdefiniowanie własnych ogólnych podmiotów. Deklaracja występuje w podzbiorze DTD, z nazwą i powiązanym tekstem zastępczym.
Można go następnie wykorzystać w dokumencie przy użyciu składni odwołania do encji &...;
, w tekście lub w wartościach atrybutów.
<?xml version="1.0"?>
<!DOCTYPE my-document [
<!ENTITY my-entity "This is my entity">
]>
<my-document>
The entity was declared as follows: &my-entity;
<element attribute="Entity: &my-entity;"/>
</my-document>
Zewnętrzne parsowane jednostki
Fragmenty XML, znane również pod nazwą zewnętrznych parsowanych elementów , mogą być przechowywane w osobnych plikach.
Fragmenty XML, w przeciwieństwie do dokumentów XML, są mniej restrykcyjne, ponieważ kilka elementów może pojawiać się na najwyższym poziomie, a także węzły tekstowe. Podobnie jak dokument XML, zewnętrzna parsowana jednostka może zaczynać się od deklaracji XML, ale deklaracja ta nie jest uważana za część tekstu zastępczego.
To jest przykład zewnętrznej analizowanej encji:
<?xml version="1.0" encoding="UTF-8"?>
This is some text
<element/>
<element/>
Zewnętrzna analizowana jednostka może być następnie zadeklarowana w dokumencie XML, w DTD, i może być używana z odwołaniem do encji, która ma taką samą składnię jak dla ogólnych encji wewnętrznych:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY fragment SYSTEM "fragment.xml">
]>
<root>
&fragment;
</root>
Po rozwiązaniu odwołania do encji ten dokument jest równoważny z:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY fragment SYSTEM "fragment.xml">
]>
<root>
This is some text
<element/>
<element/>
</root>
Każdy znacznik elementu otwierającego w zewnętrznej analizowanej jednostce musi mieć odpowiedni znacznik końcowy: niedopuszczalne jest rozkładanie pojedynczych elementów na wiele elementów ani rozsyłanie znaczników.
Parser sprawdzający poprawność jest wymagany do rozpoznania odwołania do encji i dołączenia tekstu zastępczego do dokumentu jak wyżej. Analizator składni nie sprawdzający poprawności może to pominąć i zamiast tego powiedzieć aplikacji używającej, że istnieje nierozwiązane odwołanie do zewnętrznej analizowanej jednostki.