
Libreria C per l'analisi XML orientata ai flussi, che fornisce un parser veloce e configurabile con supporto per gestori personalizzati e opzioni di codifica.
Questa è Expat, una libreria C per il parsing di XML, iniziata da James Clark nel 1997. Expat è un parser XML orientato al flusso. Ciò significa che è possibile registrare gestori (handler) con il parser prima di iniziare l'analisi. Questi gestori vengono chiamati quando il parser rileva le strutture associate nel documento in fase di analisi. Un tag di apertura è un esempio del tipo di strutture per le quali è possibile registrare gestori.
Gli utenti Windows dovrebbero utilizzare il
expat_win32 package,
che include sia librerie precompilate ed eseguibili, sia il codice sorgente per
sviluppatori.
Expat è software libero.
È possibile copiarlo, distribuirlo e modificarlo secondo i termini della Licenza
contenuta nel file
COPYING
distribuito con questo pacchetto.
Questa licenza è la stessa della licenza MIT/X Consortium.
Se si sta compilando Expat a partire da un checkout del repository Git, è necessario eseguire uno script che genera lo script configure utilizzando gli strumenti GNU autoconf e libtool. Per farlo, è necessario avere autoconf 2.58 o successivo. Eseguire lo script in questo modo:
./buildconf.sh
Una volta fatto ciò, seguire le stesse istruzioni della compilazione da una distribuzione sorgente.
Per compilare Expat da una distribuzione sorgente, eseguire prima lo script di configurazione shell nella directory principale della distribuzione:
./configure
Ci sono molte opzioni che si possono fornire a configure (che si possono
scoprire eseguendo configure con l'opzione --help). Ma quella di
maggior interesse è quella che imposta la directory di installazione.
Di default, lo script configure imposterà le cose per installare
libexpat in /usr/local/lib, expat.h in /usr/local/include, e
xmlwf in /usr/local/bin. Se, ad esempio, si preferisce installare
in /home/me/mystuff/lib, /home/me/mystuff/include, e
/home/me/mystuff/bin, si può comunicarlo a configure con:
./configure --prefix=/home/me/mystuff
Un'altra opzione interessante è abilitare il supporto per interi a 64 bit per i numeri di riga e colonna e l'indice complessivo dei byte:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Tuttavia, una tale modifica costituirebbe un cambiamento di rottura dell'ABI e pertanto non è raccomandata per uso generale — ad esempio come parte di una distribuzione Linux — ma piuttosto per compilazioni con requisiti speciali.
Dopo aver eseguito lo script configure, il comando make compilerà
le cose e make install le installerà nella loro posizione
appropriata. Dare un'occhiata al Makefile per conoscere ulteriori
opzioni di make. Notare che è necessario avere il permesso di scrittura
nelle directory in cui verranno installati i file.
Se si è interessati a compilare Expat per fornire informazioni sul
documento in codifica UTF-16 anziché nel default UTF-8, seguire
queste istruzioni (dopo aver eseguito make distclean).
Si prega di notare che configuriamo con --without-xmlwf poiché xmlwf non
supporta ancora questa modalità di compilazione:
Applicare una patch massiva ai file Makefile.am per usare libexpatw.la come nome della libreria:
find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +
Eseguire automake per riscrivere i file Makefile.in:
automake
Per output UTF-16 come unsigned short (e stringhe di versione/errore come char),
eseguire:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Per output UTF-16 come wchar_t (incluse stringhe di versione/errore), eseguire:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Nota: Quest'ultimo richiede la libc compilata con -fshort-wchar, così come.
Eseguire make (che esclude xmlwf).
Eseguire make install (ancora, esclude xmlwf).
È supportato l'uso di DESTDIR. Funziona come segue:
make install DESTDIR=/path/to/image
sovrascrive il DESTDIR impostato nel makefile, poiché la priorità di assegnazione delle variabili è
Nota: Questo si applica solo alla libreria Expat stessa; la compilazione di versioni UTF-16 di xmlwf e dei test non è attualmente supportata.
Quando si utilizza Expat con un progetto che usa autoconf per la configurazione, si
può usare la macro di rilevamento in conftools/expat.m4 per determinare come
includere Expat. Vedere i commenti all'inizio di quel file per maggiori
informazioni.
Un manuale di riferimento è disponibile nel file doc/reference.html in questa
distribuzione.