
Libreria C per il parsing XML orientato ai flussi, che fornisce handler per l'analisi di strutture nei documenti. Include lo strumento xmlwf e supporta la codifica UTF-16.
Questo è Expat, una libreria C per il parsing di XML, iniziata da James Clark nel 1997. Expat è un parser XML orientato ai flussi. Ciò significa che si registrano i gestori (handler) con il parser prima di avviare il parsing. Questi gestori vengono chiamati quando il parser scopre le strutture associate nel documento in fase di parsing. Un tag di apertura è un esempio del tipo di strutture per cui è possibile registrare gestori.
Gli utenti Windows dovrebbero usare il pacchetto
expat_win32,
che include sia librerie precompilate che eseguibili, e il codice sorgente per
gli sviluppatori.
Expat è software libero.
Puoi copiare, distribuire 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 stai compilando Expat partendo da un checkout del repository Git, devi eseguire uno script che genera lo script configure utilizzando gli strumenti GNU autoconf e libtool. Per farlo, devi disporre di autoconf 2.58 o successivo. Esegui lo script in questo modo:
./buildconf.sh
Una volta fatto, segui le stesse istruzioni per la compilazione da una distribuzione sorgente.
Per compilare Expat da una distribuzione sorgente, esegui prima lo script di configurazione della shell nella directory di distribuzione di primo livello:
./configure
Ci sono molte opzioni che puoi fornire a configure (che puoi scoprire
eseguendo configure con l'opzione --help). Ma quella di maggiore
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, preferisci installare
in /home/me/mystuff/lib, /home/me/mystuff/include, e
/home/me/mystuff/bin, puoi 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 di byte:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Tuttavia, una tale modifica sarebbe un cambiamento di rottura per l'ABI e quindi 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.
Dai un'occhiata al Makefile per conoscere ulteriori opzioni di make.
Nota che devi avere il permesso di scrittura nelle directory in cui
verranno installate le cose.
Se sei interessato a compilare Expat per fornire informazioni sul documento
in codifica UTF-16 anziché UTF-8 predefinita, segui queste istruzioni (dopo
aver eseguito make distclean). Si prega di notare che configuriamo con
--without-xmlwf perché xmlwf non supporta ancora questa modalità di
compilazione:
Applica massivamente patch ai file Makefile.am per utilizzare 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 {} +
Esegui automake per riscrivere i file Makefile.in:
automake
Per output UTF-16 come unsigned short (e stringhe di versione/errore come char),
esegui:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Per output UTF-16 come wchar_t (incluse le stringhe di versione/errore), esegui:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Nota: Quest'ultimo richiede anche libc compilata con -fshort-wchar.
Esegui make (che esclude xmlwf).
Esegui make install (ancora, esclude xmlwf).
L'uso di DESTDIR è supportato. Funziona come segue:
make install DESTDIR=/path/to/image
sovrascrive il DESTDIR impostato nel makefile, perché la priorità di impostazione 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, è possibile utilizzare la macro di rilevamento in conftools/expat.m4 per determinare come includere Expat. Vedi i commenti all'inizio di quel file per maggiori informazioni.
Un manuale di riferimento è disponibile nel file doc/reference.html in questa distribuzione.