मैं अभी EXI से निपट रहा हूं।
EXI को संसाधित करने के लिए कोई अच्छा सार्वभौमिक उपकरण नहीं है। एक बार जब आप EXI की गड़बड़ी में आ जाएंगे, तो आपको पता चलेगा कि बाइनरी स्ट्रीम में अनावश्यक डिलीमीटरों का एक गुच्छा है जो एक स्कीमा के साथ पूरी तरह से और पूरी तरह से अनावश्यक हैं। इसमें से कुछ विनोदी है।
यदि आप दोनों मान निर्दिष्ट किए गए हैं तो निम्नलिखित को EXI में एन्कोड किया जाएगा?
<xs:complexType name="example">
<xs:sequence>
<xs:element name="bool1" type="xs:boolean" minOccurs="0" />
<xs:element name="bool2" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
क्या आपको लगता है कि यह अधिकतम 4 बिट हो सकता है? इंगित करने के लिए 1 बिट इंगित करता है कि क्या बूल 1 परिभाषित किया गया है, और यह कि बूल 1 का मान, एक और बिट के बाद इंगित करता है कि क्या bool2 परिभाषित किया गया है, तो bool2 का मान?
अच्छा गॉली नहीं!
अच्छी तरह से मैं आपको लड़कों और लड़कियों को बताना चाहता हूं! यह कैसे यह वास्तव में आदेश या तो परिभाषित करने के लिए नहीं में
+---- A value of 0 means this element (bool1) is not specified,
| 1 indicates it is specified
|+--- A value of x means this element is undefined,
|| 0 means the bool is set to false, 1 is set to true
||+-- A value of 0 means this element (bool2) is not specified,
||| 1 indicates it is specified
|||+- A value of x means this element is undefined
|||| 0 means the bool is set to false, 1 is set to true
||||
0x0x 4 0100 # neither bools are specified
0x10 8 00100000 # bool1 is not specified, bool2 is set to false
0x11 8 00101000 # bool1 is not specified, bool2 is set to true
100x 9 000000010 # bool1 is set to false, bool2 is not specified
110x 9 000010010 # bool1 is set to true, bool2 is not specified
1010 13 0000000000000 # bool1 is set to false, bool2 is set to false
1011 13 0000000001000 # bool1 is set to false, bool2 is set to true
1110 13 0000100000000 # bool1 is set to true, bool2 is set to false
1111 13 0000100001000 # bool1 is set to true, bool2 is set to true
^ ^
+-encoding--+
Which can be represented with this tree
0-0-0-0-0-0-0-0-0-0-0-0-0 (1010)
\ \ \ \ \
| | | | 1-0-0-0 (1011)
| | | |
| | | 1-0 (100x)
| | |
| | 1-0-0-0-0-0-0-0-0 (1110)
| | \ \
| | | 1-0-0-0 (1111)
| | |
| | 1-0 (110x)
| |
| 1-0-0-0-0-0 (0x10)
| \
| 1-0-0-0 (0x11)
|
1-0-0 (0x0x)
4 बिट्स की एक न्यूनतम, न्यूनतम एन्कोड किया है। अब मैं थोड़ा अनुचित हूं, क्योंकि मैं delimiters समेत हूँ - delimiters जो पूरी तरह से अनावश्यक हैं।
मैं समझता हूं कि यह अब कैसे काम करता है। यहाँ कल्पना है:
https://www.w3.org/TR/exi/
मज़ा कि पढ़ने! यह मेरे लिए मज़ा का एक बड़ा सौदा था !!!! @@ ##! @
अब यह सिर्फ एक स्कीमा के साथ है, और EXI spec विशेष रूप से कहता है कि आप अभी भी XML को एन्कोड कर सकते हैं जो स्कीमा के अनुरूप नहीं है । जो उल्लसित है क्योंकि यह छोटे छोटे वेब उपकरणों के लिए माना जाता है। अप्रत्याशित डेटा के साथ आप क्या करते हैं कि आपके पास एम्बेडेड डिवाइस में हैंडलिंग के लिए कोई प्रावधान नहीं है?
क्यों, आप बस निश्चित रूप से मर जाते हैं। ऐसी किसी चीज के लिए कोई वसूली नहीं है जिसकी आप अपेक्षा नहीं करते हैं। ऐसा नहीं है कि इन चीजों में एक स्क्रीन है, मैं भाग्यशाली हूं अगर मैं इसे सीरियल पोर्ट के माध्यम से लॉग इन कर सकता हूं।
मैंने 4 अलग-अलग एक्सएसडी जेनरेटर/पार्सर्स/एक्सएमएल जनरेटर का उपयोग किया है। उनमें से 3 स्कीमा पर चकित हैं मुझे उपयोग करना है। सी और सी ++ के लिए डेटा मार्शलिंग (याद रखें कि यह बहुत कम स्मृति और सीपीयू पावर के साथ EMBEDDED सिस्टम के लिए है) भयानक हैं।
एक्सएसडी मूल रूप से एक संरचना या वर्ग वास्तुकला का वर्णन करता है और ऐसा कोई भी उपकरण नहीं है जिसे मैं कक्षाएं बनाउंगा। ऊपर दिए गए एक्सएसडी उदाहरण को 4 बूल के साथ एक संरचना बनाना चाहिए, 2 बूल मूल्य हैं, और 2 बूल इंगित करते हैं कि उन्हें परिभाषित किया गया है।
लेकिन क्या यह अस्तित्व में है? खैर बिल्ली नहीं
मुझे दस्तावेज़ों का वर्णन करने के लिए एक्सएमएल पसंद है। वास्तव में मैं करता हूं - लेकिन यहां मैं एक्सएमएल के बारे में नफरत करता हूं - व्यापक रूप से अपनाए गए मानक के लिए, इसके लिए उपलब्ध टूल्स बिल्कुल भयानक हैं। स्कीमा को पढ़ना मुश्किल है जब यह कई नामस्थानों और दस्तावेजों में फैलता है।
शेख़ी शेख़ी, आवेश HUF
केवल कारण है कि हम इस का उपयोग कर रहे कुछ मानक समिति यह पर जोर दिया है। यह क्या किया गया है उन कंपनियों के एक छोटे समूह के लिए एक एकाधिकार बनाया गया है जो पहले ही इसे लागू कर चुका है, यही एकमात्र उद्देश्य है।
EXI व्यापक रूप से अपनाया जाने वाला मानक नहीं है, एक्सएमएल संख्यात्मक डेटा के लिए एक खराब encapsulator है, और यह इसे लागू करने के लिए एक दर्द है और इसके लिए कोई सभ्य उपकरण नहीं हैं। EXIP संस्करण 5.0 पर है - जो भी काम करता है वह खुला स्रोत है जावा में है - कम से कम मेरे पास यह है।
मेरे काम के क्षेत्र के लिए, EXI सिर्फ एक खराब डिजाइन निर्णय है। मैंने विभिन्न एम्बेडेड सिस्टम पर संचार संचार प्रोटोकॉल पर काम किया है। मैंने डॉक्सिस पर काम किया, जो सभी आधुनिक केबल मोडेम का उपयोग करते हैं - वे एक सरल, और एक्स्टेंसिबल, टाइप/लम्बाई/वैल्यू प्रोटोकॉल का उपयोग अपरिचित प्रकार से निपटने के प्रावधानों के साथ करते हैं - यही कारण है कि लंबाई हमेशा शामिल होती है। यह आसान है, पूरे ढेर को लागू करने में सचमुच दिन लगते हैं।
EXI कोड कोड करना बहुत मुश्किल है, इसके लिए कोई सभ्य प्रोसेसर नहीं है, और सबसे बुरी बात यह है कि सभी प्रोसेसर जो मैंने पाया है कि वास्तव में इसके साथ अच्छी तरह से काम करते हैं, बस इसे EXI < -> XML से बदलें पूरी तरह से बेकार।
मैंने अपना स्वयं का एक्सएसडी पार्सर लिखने का सहारा लिया है, जिसका अर्थ है कि मुझे इस डिजाइन के उन हिस्सों के लिए कम से कम संपूर्ण एक्सएमएल विनिर्देश समझना है जो इसका उपयोग करते हैं - और यह व्यापक है। किसी भी उचित कल्पना के साथ मुझे 2 सप्ताह तक क्या लेना पड़ा, मुझे 10 ले गए। मेरी दुनिया में कोई भी इसका उपयोग नहीं करेगा जब तक कि यह उनके गले को फेंक नहीं देता है और उन्हें नहीं करना चाहिए, यह एक गोल छेद के लिए एक वर्ग चरम है।
यह वास्तव में "राय" प्रश्नों के लिए जगह नहीं है, क्षमा करें। –