
Libreria C per l'analisi XML orientata ai flussi con registrazione di handler, supporto per codifica UTF-8/UTF-16 e sistema di build basato su autoconf. Include lo strumento xmlwf e il manuale di riferimento.
Expat è una libreria C per il parsing di XML, iniziata da James Clark nel 1997. Expat è un parser XML orientato allo stream. Questo significa che si registrano handler con il parser prima di iniziare il parsing. Questi handler 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 cui si possono registrare handler.
Gli utenti Windows dovrebbero usare il pacchetto expat_win32, che include sia librerie ed eseguibili precompilati, sia il codice sorgente per gli sviluppatori.
Expat è software libero. Puoi 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 stai compilando Expat da un checkout del repository Git, devi eseguire uno script che genera lo script configure utilizzando gli strumenti GNU autoconf e libtool. Per fare ciò, devi avere autoconf 2.58 o successivo. Esegui lo script in questo modo:
./buildconf.sh
Una volta fatto ciò, segui le stesse istruzioni previste per la compilazione da una distribuzione dei sorgenti.
Per compilare Expat da una distribuzione dei sorgenti, devi prima eseguire lo script di shell di configurazione nella directory principale della distribuzione:
./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 agli interi a 64 bit per i numeri di riga e di colonna e per l'indice complessivo dei byte:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Tuttavia, una tale modifica rappresenterebbe una modifica non retrocompatibile (breaking change) all'ABI e pertanto non è consigliata per l'uso generale — ad esempio come parte di una distribuzione Linux — ma piuttosto per build con requisiti speciali.
Dopo aver eseguito lo script configure, il comando make compilerà i file e make install li installerà nella 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 installati i file.
Se sei interessato a compilare Expat per fornire le informazioni del documento nella codifica UTF-16 invece della UTF-8 predefinita, segui queste istruzioni (dopo aver eseguito make distclean). Nota che configuriamo con --without-xmlwf poiché xmlwf non supporta (ancora) questa modalità di compilazione:
Applica 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 {} +
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'ultima richiede anche una libc compilata con -fshort-wchar.
Esegui make (che esclude xmlwf).
Esegui make install (anche questo 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 impostazione delle variabili è
Nota: questo vale solo per la 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, puoi usare 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.