Prolog Extensible Markup Language (XML) jest częścią każdego systemu XML, która jest obecna przed elementem głównym systemu. Jest to część systemu XML, w której definiuje się informacje o programowaniu XML. Nie ma standardu dla prologu XML, ale zazwyczaj zawiera on niektóre z tych samych cech w różnych systemach. W niektórych przypadkach może być nawet pusta, ponieważ użytkownik nie chce deklarować żadnych informacji prologowych. Nawet jeśli jest pusta, nadal istnieje w każdym systemie XML.
Prolog XML jest czasami określany jako deklaracja XML. Jest obecny w każdym systemie, ale jego użycie jest opcjonalne. Gdy jest używany, zazwyczaj zawiera informacje o wersji, instrukcje przetwarzania, wszelkie komentarze autora oraz pole na definicje typu dokumentu, powszechnie określane jako doctype. Czasami zawiera również informacje o przekazywaniu do HyperText Markup Language (HTML), jeśli użytkownik chce połączyć XML i HTML.
Prolog XML będzie zawsze występował w pierwszej części pliku. Nigdy nie będzie podążał za inną sekcją. Jedynym wyjątkiem jest to, że znacznik kolejności bajtów może poprzedzać prolog XML, gdy używane są pewne typy kodowania znaków. W takim przypadku znacznik kolejności bajtów deklaruje typ kodowania znaków, który został użyty w systemie XML, zwykle z formatem transformacji Unicode (UTF). Dostępnych jest wiele rodzajów kodowań znaków, ale UTF-8 i UTF-16 są najbardziej powszechnymi i zalecanymi kodowaniami; jeśli nie zostanie określony żaden znacznik kolejności bajtów, komputery będą odczytywać system jako UTF-8 lub UTF-16, domyślne kodowanie.
Instrukcje przetwarzania określają, w jaki sposób aplikacja będzie przetwarzać informacje w prologu i systemie XML. Instrukcje przetwarzania mogą pojawić się w dowolnym miejscu w systemie XML. Tylko instrukcje przetwarzania w prologu XML będą uważane za część deklaracji XML.
Komentarze, podobnie jak informacje o przetwarzaniu, można znaleźć w dowolnym miejscu w systemie XML, a tylko komentarze w prologu są uważane za część prologu XML. Komentarze są dowolnymi tekstowymi zestawami danych, które nie mają wpływu na skrypty w systemie i zwykle mają pomóc programiście coś zapamiętać lub przekazać coś innym programistom. Często zawierają informacje o autorze, numerze wersji lub inne informacje, które autor chce przekazać innym redaktorom skryptów. Wreszcie niektórzy autorzy dołączą doctype. Jest to zalecane, ale wciąż nie powszechna praktyka wśród autorów.