Erlang 21

xmerl_sax_parser




erlang

xmerl_sax_parser

मॉड्यूल

xmerl_sax_parser

मॉड्यूल सारांश

XML SAX पार्सर एपीआई

विवरण

XML के लिए एक SAX पार्सर जो कॉलबैक इंटरफ़ेस के माध्यम से घटनाओं को भेजता है। एसएएक्स एक्सएमएल के लिए सरल एपीआई है , मूल रूप से एक जावा-केवल एपीआई है। SAX XML में XML के लिए पहला व्यापक रूप से अपनाया गया एपीआई था, और एक वास्तविक मानक है जहां जावा के अलावा कई प्रोग्रामिंग भाषा वातावरण के लिए संस्करण हैं।

जानकारी का प्रकार

option()

पार्सर के व्यवहार को अनुकूलित करने के लिए उपयोग किए जाने वाले विकल्प। संभावित विकल्प हैं:

{continuation_fun, ContinuationFun}
ContinuationFun एक कॉल बैक फ़ंक्शन है जो यह तय करता है कि दस्तावेज़ पूरा होने से पहले Parser EOF में चलता है या नहीं।
{continuation_state, term()}
राज्य जो निरंतरता कॉल बैक फ़ंक्शन में सुलभ है।
{event_fun, EventFun}
EventFun पार्सर घटनाओं के लिए कॉल बैक फ़ंक्शन है।
{event_state, term()}
स्टेट जो कि ईवेंट कॉल बैक फ़ंक्शन में पहुंच योग्य है।
{file_type, FileType}
यदि यह DTD या एक सामान्य XML फ़ाइल (डिफ़ॉल्ट सामान्य) पार्स कर रहा है, तो ध्वज जो पार्सर को बताता है।
  • FileType = normal | dtd
{encoding, Encoding}
सेट डिफ़ॉल्ट चरित्र सेट का उपयोग (डिफ़ॉल्ट UTF-8)। यह वर्ण सेट केवल तब उपयोग किया जाता है जब XML दस्तावेज़ द्वारा स्पष्ट रूप से नहीं दिया गया हो।
  • Encoding = utf8 | {utf16,big} | {utf16,little} | latin1 | list
skip_external_dtd
पार्सिंग के दौरान बाहरी डीटीडी को छोड़ देता है।
event()

SAX ईवेंट जो कॉलबैक के माध्यम से उपयोगकर्ता को भेजे जाते हैं।

startDocument
किसी दस्तावेज़ की शुरुआत की सूचना प्राप्त करें। SAX पार्सर किसी भी अन्य ईवेंट कॉलबैक से पहले केवल एक बार इस घटना को भेजेगा।
endDocument
किसी दस्तावेज़ के अंत की सूचना प्राप्त करें। SAX पार्सर इस घटना को केवल एक बार भेजेगा, और यह पार्स के दौरान अंतिम घटना होगी।
{startPrefixMapping, Prefix, Uri}
एक उपसर्ग-URI नामस्थान मैपिंग के दायरे को प्रारंभ करें। ध्यान दें कि प्रारंभ / एंडप्रेफ़िक्स मैपिंग ईवेंट की गारंटी नहीं है कि वे एक-दूसरे के सापेक्ष ठीक से नेस्टेड हैं: सभी स्टार्टप्रिफ़न मैपिंग ईवेंट्स संबंधित ईवेंटमेंट ईवेंट से ठीक पहले हो जाएंगे, और सभी एंडप्रिफ़िफ़मैपिंग ईवेंट्स संबंधित अंतिम ईवेंटमेंट के तुरंत बाद हो जाएंगे, लेकिन उनका आदेश अन्यथा की गारंटी नहीं है । "Xml" उपसर्ग के लिए स्टार्ट / एंडप्रिफ़िक्समैपिंग इवेंट नहीं होंगे, क्योंकि यह पूर्ववर्ती और अपरिवर्तनीय है।
  • Prefix = string()
  • Uri = string()
{endPrefixMapping, Prefix}
एक उपसर्ग-यूआरआई मानचित्रण का दायरा समाप्त करें।
  • Prefix = string()
{startElement, Uri, LocalName, QualifiedName, Attributes}
किसी तत्व की शुरुआत की सूचना प्राप्त करें। पार्सर एक्सएमएल दस्तावेज़ में हर तत्व की शुरुआत में इस घटना को भेजेगा; प्रत्येक प्रारंभ होने वाले ईवेंट के लिए एक संगत अंतिम ईवेंट होगा (यहां तक ​​कि जब तत्व खाली है)। तत्व की सभी सामग्री को, इसी एंडिमेंट इवेंट से पहले, क्रम में बताया जाएगा।
  • Uri = string()
  • LocalName = string()
  • QualifiedName = {Prefix, LocalName}
  • Prefix = string()
  • Attributes = [{Uri, Prefix, AttributeName, Value}]
  • AttributeName = string()
  • Value = string()
{endElement, Uri, LocalName, QualifiedName}
किसी तत्व के अंत की सूचना प्राप्त करें। SAX पार्सर एक्सएमएल दस्तावेज़ में हर तत्व के अंत में इस घटना को भेजेगा; हर एंडिमेंट ईवेंट (तत्व के खाली होने पर भी) के लिए एक संगत स्टार्टिंग ईवेंट होगा।
  • Uri = string()
  • LocalName = string()
  • QualifiedName = {Prefix, LocalName}
  • Prefix = string()
{characters, string()}
चरित्र डेटा की सूचना प्राप्त करें।
{ignorableWhitespace, string()}
तत्व सामग्री में आग्नेय व्हाट्सएप की सूचना प्राप्त करें।
{processingInstruction, Target, Data}
एक प्रसंस्करण निर्देश की सूचना प्राप्त करें। पार्सर प्रत्येक प्रसंस्करण निर्देश के लिए एक बार इस घटना को भेजेगा: ध्यान दें कि प्रसंस्करण निर्देश मुख्य दस्तावेज़ तत्व से पहले या बाद में हो सकते हैं।
  • Target = string()
  • Data = string()
{comment, string()}
दस्तावेज़ में कहीं भी एक XML टिप्पणी की रिपोर्ट करें (दस्तावेज़ तत्व के अंदर और बाहर दोनों)।
startCDATA
CDATA अनुभाग के प्रारंभ की रिपोर्ट करें। CDATA अनुभाग की सामग्री को नियमित वर्ण घटना के माध्यम से सूचित किया जाएगा।
endCDATA
CDATA अनुभाग के अंत की रिपोर्ट करें।
{startDTD, Name, PublicId, SystemId}
DTD घोषणाओं की शुरुआत की रिपोर्ट करें, यह DOCTYPE घोषणा की शुरुआत की रिपोर्ट कर रहा है। यदि दस्तावेज़ में कोई DOCTYPE घोषणा नहीं है, तो यह ईवेंट नहीं भेजा जाएगा।
  • Name = string()
  • PublicId = string()
  • SystemId = string()
endDTD
DTD घोषणाओं के अंत की रिपोर्ट करें, यह DOCTYPE घोषणा के अंत की रिपोर्ट कर रहा है।
{startEntity, SysId}
कुछ आंतरिक और बाहरी एक्सएमएल संस्थाओं की शुरुआत की रिपोर्ट करें। ???
{endEntity, SysId}
किसी इकाई के अंत की रिपोर्ट करें। ???
{elementDecl, Name, Model}
एक तत्व प्रकार की घोषणा की रिपोर्ट करें। सामग्री मॉडल में स्ट्रिंग "ईएमपीटीवाई", स्ट्रिंग "एनी", या एक कोष्ठक समूह, वैकल्पिक रूप से एक घटना सूचक शामिल होंगे। मॉडल को सामान्य किया जाएगा ताकि सभी पैरामीटर इकाइयां पूरी तरह से हल हो जाएं और सभी व्हाट्सएप को हटा दिया जाए, और इसमें संलग्न माता-पिता शामिल होंगे। अन्य सामान्यीकरण (जैसे निरर्थक कोष्ठक को हटाने या घटना के संकेतकों को सरल बनाना) पार्सर के विवेक पर है।
  • Name = string()
  • Model = string()
{attributeDecl, ElementName, AttributeName, Type, Mode, Value}
एक विशेषता प्रकार की घोषणा की रिपोर्ट करें।
  • ElementName = string()
  • AttributeName = string()
  • Type = string()
  • Mode = string()
  • Value = string()
{internalEntityDecl, Name, Value}
आंतरिक इकाई घोषणा की रिपोर्ट करें।
  • Name = string()
  • Value = string()
{externalEntityDecl, Name, PublicId, SystemId}
पार्स की गई बाहरी इकाई घोषणा की रिपोर्ट करें।
  • Name = string()
  • PublicId = string()
  • SystemId = string()
{unparsedEntityDecl, Name, PublicId, SystemId, Ndata}
एक अप्रकाशित इकाई घोषणा घटना की सूचना प्राप्त करें।
  • Name = string()
  • PublicId = string()
  • SystemId = string()
  • Ndata = string()
{notationDecl, Name, PublicId, SystemId}
एक अधिसूचना घोषणा घटना की सूचना प्राप्त करें।
  • Name = string()
  • PublicId = string()
  • SystemId = string()
unicode_char()
पूर्णांक यूनिकोड कोडपॉइंट का प्रतिनिधित्व करनेवाला।
unicode_binary()
वर्णों के साथ बाइनरी UTF-8 या UTF-16 में एन्कोड किए गए।
latin1_binary()
पात्रों के साथ बाइनरी आइसो-लैटिन -1 में एन्कोडेड।

निर्यात

फ़ाइल (फ़ाइल नाम, विकल्प) -> परिणाम

प्रकार

XML फ़ाइल वाले पार्स फ़ाइल। यह फ़ंक्शन ब्लॉक में फ़ाइल को पढ़ने के लिए एक डिफ़ॉल्ट निरंतरता फ़ंक्शन का उपयोग करता है।

स्ट्रीम (Xml, विकल्प) -> परिणाम

प्रकार

XML दस्तावेज़ वाले स्ट्रीम को पार्स करें।

कॉलबैक फ़ंक्शन

कॉलबैक इंटरफ़ेस इस पर आधारित है कि उपयोगकर्ता पार्सर को सही हस्ताक्षर के साथ एक मजेदार भेजता है।

निर्यात

ContinuationFun (राज्य) -> {NewBytes, NewState}

प्रकार

जब भी पार्सर इनपुट डेटा से बाहर निकलता है तो इस फ़ंक्शन को कहा जाता है। यदि फ़ंक्शन अधिक इनपुट को पकड़ नहीं पाता है तो एक खाली सूची या बाइनरी (स्ट्रीम में प्रारंभ इनपुट पर निर्भर करता है) वापस आ जाता है। अन्य प्रकार की त्रुटियों को अपवादों के माध्यम से नियंत्रित किया जाता है। यदि निम्न फ़ंक्शन एक घातक त्रुटि का सामना करता है, तो निम्न टपल {टैग = परमाणु (), कारण = स्ट्रिंग ()} भेजने के लिए थ्रो / 1 का उपयोग करें। टैग एक परमाणु है जो कार्यात्मक इकाई की पहचान करता है जो अपवाद भेजता है और कारण एक स्ट्रिंग है जो समस्या का वर्णन करता है।

EventFun (घटना, स्थान, राज्य) -> NewState

प्रकार

यह फ़ंक्शन पार्सर द्वारा भेजे गए प्रत्येक ईवेंट के लिए कहा जाता है। त्रुटि हैंडलिंग अपवादों के माध्यम से की जाती है। निम्न टपल को भेजने के लिए थ्रो / 1 का उपयोग करें {टैग = एटम (), रीज़न = स्ट्रिंग ()} यदि एप्लिकेशन एक घातक त्रुटि का सामना करता है। टैग एक परमाणु है जो कार्यात्मक इकाई की पहचान करता है जो अपवाद भेजता है और कारण एक स्ट्रिंग है जो समस्या का वर्णन करता है।