
यह Expat है, एक C लाइब्रेरी जो XML को पार्स करने के लिए है, जिसे 1997 में James Clark ने शुरू किया था। Expat एक स्ट्रीम-ओरिएंटेड XML पार्सर है। इसका मतलब है कि आप पार्स शुरू करने से पहले पार्सर के साथ हैंडलर पंजीकृत करते हैं। ये हैंडलर तब कॉल किए जाते हैं जब पार्सर दस्तावेज़ में संबंधित संरचनाओं को खोज लेता है। एक प्रारंभ टैग उन संरचनाओं का एक उदाहरण है जिसके लिए आप हैंडलर पंजीकृत कर सकते हैं।
विंडोज उपयोगकर्ताओं को expat_win32 पैकेज का उपयोग करना चाहिए, जिसमें पूर्व-संकलित लाइब्रेरीज़ और निष्पादन योग्य, और डेवलपर्स के लिए स्रोत कोड दोनों शामिल हैं।
Expat मुक्त सॉफ्टवेयर है। आप इसे इस पैकेज के साथ वितरित फ़ाइल COPYING में निहित लाइसेंस की शर्तों के तहत कॉपी, वितरित और संशोधित कर सकते हैं। यह लाइसेंस MIT/X Consortium लाइसेंस के समान है।
यदि आप Git रिपॉजिटरी से चेक-आउट से Expat बना रहे हैं, तो आपको एक स्क्रिप्ट चलाने की आवश्यकता है जो GNU autoconf और libtool टूल का उपयोग करके कॉन्फ़िगर स्क्रिप्ट उत्पन्न करती है। ऐसा करने के लिए, आपके पास autoconf 2.58 या नया होना चाहिए। स्क्रिप्ट इस प्रकार चलाएँ:
./buildconf.sh
एक बार यह हो जाने के बाद, स्रोत वितरण से बनाने के समान निर्देशों का पालन करें।
स्रोत वितरण से Expat बनाने के लिए, आप पहले शीर्ष स्तर के वितरण निर्देशिका में कॉन्फ़िगरेशन शेल स्क्रिप्ट चलाएँ:
./configure
कई विकल्प हैं जिन्हें आप कॉन्फ़िगर (जिन्हें आप --help विकल्प के साथ कॉन्फ़िगर चलाकर खोज सकते हैं) को प्रदान कर सकते हैं। लेकिन सबसे अधिक रुचि का वह है जो इंस्टॉलेशन निर्देशिका सेट करता है। डिफ़ॉल्ट रूप से, कॉन्फ़िगर स्क्रिप्ट चीजों को सेट करेगी ताकि libexpat को /usr/local/lib, expat.h को /usr/local/include, और xmlwf को /usr/local/bin में स्थापित किया जा सके। यदि, उदाहरण के लिए, आप /home/me/mystuff/lib, /home/me/mystuff/include, और /home/me/mystuff/bin में स्थापित करना पसंद करते हैं, तो आप configure को इसके बारे में बता सकते हैं:
./configure --prefix=/home/me/mystuff
एक अन्य रोचक विकल्प लाइन और कॉलम नंबरों और समग्र बाइट इंडेक्स के लिए 64-बिट पूर्णांक समर्थन सक्षम करना है:
./configure CPPFLAGS=-DXML_LARGE_SIZE
हालांकि, ऐसा संशोधन ABI में एक ब्रेकिंग चेंज होगा और इसलिए सामान्य उपयोग के लिए अनुशंसित नहीं है — जैसे कि लिनक्स वितरण के भाग के रूप में — बल्कि विशेष आवश्यकताओं वाले बिल्ड के लिए है।
कॉन्फ़िगर स्क्रिप्ट चलाने के बाद, make कमांड चीजों का निर्माण करेगा और make install उन्हें उनके उचित स्थान पर स्थापित करेगा। अतिरिक्त make विकल्पों के बारे में जानने के लिए Makefile पर एक नज़र डालें। ध्यान दें कि आपके पास उन निर्देशिकाओं में लिखने की अनुमति होनी चाहिए जहाँ चीजें स्थापित होंगी।
यदि आप डिफ़ॉल्ट UTF-8 के बजाय UTF-16 एन्कोडिंग में दस्तावेज़ जानकारी प्रदान करने के लिए Expat बनाने में रुचि रखते हैं, तो इन निर्देशों का पालन करें (make distclean चलाने के बाद)। कृपया ध्यान दें कि हम --without-xmlwf के साथ कॉन्फ़िगर करते हैं क्योंकि xmlwf संकलन के इस मोड का समर्थन नहीं करता (अभी तक):
लाइब्रेरी नाम के लिए libexpatw.la का उपयोग करने के लिए Makefile.am फ़ाइलों को बल्क-पैच करें:
find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +
Makefile.in फ़ाइलों को फिर से लिखने के लिए automake चलाएँ:
automake
UTF-16 आउटपुट के लिए unsigned short (और संस्करण/त्रुटि स्ट्रिंग्स char के रूप में), चलाएँ:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
UTF-16 आउटपुट के लिए wchar_t (संस्करण/त्रुटि स्ट्रिंग्स सहित), चलाएँ:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
नोट: बाद वाले को -fshort-wchar के साथ संकलित libc की आवश्यकता है।
make चलाएँ (जो xmlwf को बाहर करता है)।
DESTDIR का उपयोग समर्थित है। यह इस प्रकार काम करता है:
make install DESTDIR=/path/to/image
मेकफ़ाइल में सेट DESTDIR को ओवरराइड करता है, क्योंकि वेरिएबल-सेटिंग प्राथमिकता है
नोट: यह केवल Expat लाइब्रेरी पर ही लागू होता है, xmlwf और परीक्षणों के UTF-16 संस्करण बनाना वर्तमान में समर्थित नहीं है।
जब आप कॉन्फ़िगरेशन के लिए autoconf का उपयोग करने वाले प्रोजेक्ट के साथ Expat का उपयोग कर रहे हैं, तो आप यह निर्धारित करने के लिए conftools/expat.m4 में प्रोबिंग मैक्रो का उपयोग कर सकते हैं कि Expat को कैसे शामिल किया जाए। अधिक जानकारी के लिए उस फ़ाइल के शीर्ष पर टिप्पणियाँ देखें।
एक संदर्भ मैनुअल इस वितरण में फ़ाइल doc/reference.html में उपलब्ध है।
make install चलाएँ (फिर से, xmlwf को बाहर करता है)।