एस-एक्सप्रेशंस (-ish) नोटेशन पर XML के क्या फायदे हैं?


11

मैं XML और S- एक्सप्रेशन (-ish) नोटेशन के बारे में एक सवाल पूछना चाहूंगा। एस-एक्सप्रेशन बहुत पुराने हैं; वे वास्तव में सरल भी हैं। हम दो रूपों पर विचार कर सकते हैं जो अर्थ में समान हैं, वाक्य रचना में अलग हैं:

( पोलिश विकिपीडिया से लिया गया xml कोड )

<?xml version="1.0" encoding="UTF-8"?>
<ksiazka-telefoniczna kategoria="bohaterowie książek">
 <!-- komentarz -->
  <osoba charakter="dobry">
    <imie>Ambroży</imie>
    <nazwisko>Kleks</nazwisko>
    <telefon>123-456-789</telefon>
  </osoba>
  <osoba charakter="zły">
    <imie>Alojzy</imie>
    <nazwisko>Bąbel</nazwisko>
    <telefon/>
  </osoba>
</ksiazka-telefoniczna>

एस-अभिव्यक्ति (-ish) संस्करण:

(:version "1.0" :encoding "utf-8")
(ksiazka-telefoniczna :category "bohaterowie książek"
  ; komentarz(a comment)
  (osoba :charakter "dobry"
    (imie Ambroży)
    (nazwisko Kleks)
    (telefon 123-456-789))
  (osoba :charakter "zły"
    (imie Alojzy)
    (nazwisko Bąbel)
    (telefon)))

एस-एक्सप्रेशन संस्करण अधिक संक्षिप्त है। हम साधारण सूची संकेतन का उपयोग करके अतिरेक से बचते हैं, फिर भी हम अभी भी उन चीजों को शामिल करने के लिए वाक्यविन्यास को परिभाषित कर सकते हैं जो हम चाहते हैं (जैसे गुण)। बेशक, यह सिर्फ एक उदाहरण है, और वास्तविक मानक बेहतर या बस अलग हो सकता है; हालाँकि, यह छोटा है और पार्स करना आसान है। एक्सएमएल क्यों जीता?



5
डाउनवोटर्स के लिए: यदि आप सवाल से असहमत हैं तो निराश न करें, लेकिन अगर आपको लगता है कि यह खराब गुणवत्ता का है (और फिर, गुणवत्ता में सुधार के लिए बदलाव प्रस्तावित करें)। @RobertHarvey अगर आपको लगता है कि यह एक जवाब है, तो कृपया एक टिप्पणी छोड़ने के बजाय मेरे प्रश्न का उत्तर दें।
मैथ्यू रॉक

1
डाउनवोट बटन पर टूलटिप में वाक्यांश शामिल है "यह प्रश्न किसी भी शोध प्रयास को प्रदर्शित नहीं करता है।"
रॉबर्ट हार्वे

1
याद रखने की कोशिश करें कि यह चर्चा मंच नहीं है। वास्तविक प्रश्न के उत्तर हैं, और समुदाय के सदस्यों से जवाब देने की अपेक्षा की जाती है, राय नहीं।
रॉबर्ट हार्वे

1
एक्सएमएल के लिए अतिरेक तर्क (जैसे कि कोष्ठक को खोलने वाले ब्रैकेट के नाम से बंद करना) को आसानी से एस-भाव द्वारा अनुकरण किया जा सकता है। सरलता से लिखिए (para "This is a paragraph " (footnote "(better than the one under there)" "." /footnote) /para)
एंड्रयू

जवाबों:


13

हम जानते हैं कि एक्सएमएल के डिजाइनर एस-एक्सप्रेशन से परिचित थे, क्योंकि एक्सएमएल एसजीएमएल पर आधारित है, और एसजीएमएल की एक स्टाइल शीट भाषा है, डीएसएसएसएल है, जो एस-एक्सप्रेशन सिंटैक्स (और एम्बेडेड स्क्रिप्टिंग भाषा के रूप में योजना) का उपयोग करता है।

फिर भी उन्होंने एक्सएमएल के उपयोग के मामलों के कारण एस-भावों की तुलना में एक अलग वाक्यविन्यास चुना। XML को शुरुआत में HTML जैसी मशीन-जनरेटेड स्ट्रक्चर्ड डेटा और मार्कअप लैंग्वेज दोनों का समर्थन करने के लिए डिज़ाइन किया गया था, जो मैन्युअल रूप से लिखे गए हैं और इसमें मिश्रित सामग्री (मेटाडेटा के साथ तत्वों के साथ मिलाया गया पाठ) शामिल है।

फालतूपन

मार्कअप पाठ दस्तावेज़ अक्सर एक स्क्रीनफुल से अधिक लंबे होते हैं। यदि आप देखते हैं )और आप संरचना की शुरुआत नहीं देख सकते हैं, तो आप बहुत खो गए हैं; यदि आप एक अध्याय या एक साइडबार था जो अभी-अभी समाप्त हुआ है, तो आप नहीं जानते। एक्सएमएल जैसे एंडटैग में टैग्नैम को दोहराने की अतिरेक </sidebar>मानव लेखक के लिए यह बहुत आसान बनाता है। यह इसे और अधिक मजबूत बनाता है: यदि आप गलती से एक अंत टैग हटाते हैं, तो आप अक्सर अनुमान लगा सकते हैं कि कौन सा अंत-टैग गायब है।

एसजीएमएल (एक्सएमएल के पूर्ववर्ती) ने आपको वैकल्पिक रूप से एकल वर्ण के लिए अंत-टैग को छोटा करने की अनुमति दी, लेकिन यह सुविधा सरलता के लिए एक्सएमएल से बाहर रह गई थी।

तो संक्षेप में, XML डिजाइन द्वारा अधिक क्रिया है, क्योंकि यह मानव-संपादन योग्य दस्तावेज़ का समर्थन करने के लिए डिज़ाइन किया गया है। आज एक्सएमएल का उपयोग विभिन्न प्रकार के उद्देश्यों के लिए किया जाता है, शुद्ध मशीन-टू-मशीन संचार के लिए भी, जहां इस अतिरेक की आवश्यकता नहीं है।

मिश्रित सामग्री

आपका सुझाव दिया वाक्यविन्यास मिश्रित सामग्री का बहुत अच्छा समर्थन नहीं करेगा। इस उदाहरण को HTML में लें:

<p>Hi! <a href="example.com">Click here</a>!</p>

आप इसे अपने सिंटैक्स में कैसे व्यक्त करेंगे? विशेषताओं और पाठ सामग्री के बीच अंतर करने के लिए आपको किसी प्रकार के अतिरिक्त सीमांकक की आवश्यकता होगी। अचानक यह अब इतना संक्षिप्त नहीं है।

विशेष वर्ण

कोण कोष्ठक कोष्ठक और बृहदान्त्र की तुलना में साधारण पाठ में बहुत दुर्लभ हैं।

अनुकूलता

XML के डिजाइन किए जाने के समय HTML पहले से ही बेतहाशा सफल था, और उसने समान सिंटैक्स चुनने के लिए समझदारी दिखाई।

एक्सएमएल क्यों जीता?

एस-एक्सप्रेशन एक्सएमएल का विकल्प नहीं थे। एक्सएमएल कल्पना कोण कोष्ठक की तुलना में बहुत अधिक है; यह तत्वों और विशेषताओं और मिश्रित सामग्री, भागने, चरित्र एन्कोडिंग, डीटीडी-सिंटैक्स और सत्यापन और इतने पर के लिए एक सिंटैक्स को परिभाषित करता है। एस-एक्सप्रेशंस के लिए ऐसा कुछ भी मौजूद नहीं था। बेशक आप एक समान मानक को परिभाषित कर सकते हैं, जैसा कि आप यहाँ प्रस्तावित करते हैं, लेकिन उस समय किसी ने भी ऐसा नहीं किया था। XML को W3C से आशीर्वाद मिला और इसलिए इसे प्रमुख खिलाड़ियों द्वारा अपनाया गया और डेटा एक्सचेंज के लिए डिफैक्टो मानक बन गया।


3
उनके उदाहरण में, विशेषता के लिए उपयोग किए जाने वाले कॉलोन नहीं हैं? ई। जी। (पी हाय! (a: href "example.com" यहाँ क्लिक करें)!)। (या क्या उसने सिर्फ यह संपादित किया कि आपके उत्तर पोस्ट किए जाने के बाद?)
हेडक्रैब

यद्यपि यह आपके (उत्कृष्ट) उत्तर से कुछ भी दूर नहीं ले जाता है, जो अपने दाहिने दिमाग में मैन्युअल रूप से XML दस्तावेज़ बनाता है?
जारेड स्मिथ

हे जाक, इस उत्कृष्ट उत्तर के लिए धन्यवाद! मैं हेडक्रैब से सहमत हूं कि मिश्रित सामग्री कोई समस्या नहीं है। मैं जेरेड से भी सहमत हूं, हालांकि मुझे लगता है कि XML वैसे भी कभी-कभी मैन्युअल रूप से पढ़ा / लिखा जाता है।
मैथ्यूॉक जूल

@ हेडक्राब: यह कहना मुश्किल है क्योंकि कोई वास्तविक कल्पना नहीं है, सिर्फ एक काल्पनिक उदाहरण है। लेकिन मुझे लगता है कि एक उद्धृत स्ट्रिंग के बजाय प्रतीकों के रूप में पाठ का प्रतिनिधित्व करना व्हॉट्सएप के साथ अस्पष्टता का कारण होगा। एस-एक्सप्रेशंस AFAIK के बीच महत्वपूर्ण व्हाट्सएप का समर्थन नहीं करते हैं, लेकिन आपको <PRE>HTML में एलिमेंट का समर्थन करने के लिए इसकी आवश्यकता है । इसलिए मुझे लगा कि उद्धरणों की आवश्यकता होगी।
जैक्सबी जु

2
तो यह वास्तव में ऐसा लगता है कि एक्सएमएल इन सभी घंटियों और सीटी के साथ बनाया गया था और परिचित एचटीएमएल जैसे सिंटैक्स ने इसे उस समय एस-एक्सप्रेशन पर जीतने में मदद की। जब तक कई डेवलपर्स ने फैसला किया कि, उनके उपयोग के मामलों में, ये सभी विशेषताएं मशीन-टू-मशीन संचार के लिए वास्तव में आवश्यक नहीं हैं, JSON के रूप में एक अलग हल्का विकल्प था।
kamilk

9

व्यक्तिगत रूप से, मुझे लगता है कि XML के बारे में सबसे अच्छा हिस्सा सिंटैक्स के बजाय अच्छी तरह से परिभाषित स्कीमा क्षमताओं है। स्कीमा तंत्र उपयोगकर्ताओं को अपने दस्तावेज़ प्रारूप को प्रकाशित करने की अनुमति देता है, जिसे वे एक वैध दस्तावेज़ मानते हैं। स्वचालित सत्यापनकर्ता भी हैं। साथ ही, एक उपयोगकर्ता द्वारा बनाए गए प्रकार और स्कीमा अन्य उपयोगकर्ताओं द्वारा बढ़ाए जा सकते हैं।

जहां तक ​​मुझे पता है कि एसआईएस-अभिव्यक्ति के लिए एक सामान्य उद्देश्य स्कीमा तंत्र को मानकीकृत करने के प्रयास के पास कहीं भी किसी ने भी नहीं किया है, केवल एलआईएसपी भाषा को छोड़कर (जो ओपी के प्रश्न में नमूना का उपयोग नहीं कर रहा है)।


1
हालाँकि मैं XML की वर्बोसिटी को नापसंद करता हूं, स्कीमा क्षमताओं का उल्लेख करने के लिए +1 जो इसे इसके लायक बनाता है। :-)
user949300


1

यहाँ दो कारण बताए गए हैं कि मैं XML को "एस-एक्सप्रेशन-ईश" पर चुनूंगा:

एक अच्छी तरह से परिभाषित वाक्य रचना और अर्थ मॉडल

एक्सएमएल केवल नोड्स का पेड़ नहीं है, बल्कि वर्गीकृत नोड्स का एक पेड़ है जिसमें अलग-अलग सिंटैक्टिक प्रतिनिधित्व और अलग व्यवहार है। उदाहरण के लिए, दिए गए नाम के साथ एक विशेषता केवल दिए गए नोड के लिए एक बार दिखाई दे सकती है, जबकि बच्चे के नोड्स कई बार दिखाई दे सकते हैं।

आप ऐसे मॉडल को जेनेरिक एस-एक्सप्रेशन के शीर्ष पर परिभाषित कर सकते हैं । आपके उदाहरण विशेषताओं और बाल तत्वों को वर्गीकृत करने के लिए एक योजना दिखाते हैं। पाठ, टिप्पणियों और प्रसंस्करण निर्देशों के लिए शब्दार्थ में जोड़ें, और आपके पास कुछ ऐसा होगा जो XML के साथ आइसोमॉर्फिक है।

टूलींग

मानक वाक्य रचना और अर्थ मॉडल से, आप उपकरण बना सकते हैं - और बहुत सारे लोग हैं। आप हर आम भाषा / प्लेटफ़ॉर्म के लिए XML पार्सर / धारावाहिक, XPath, और XSLT प्रोसेसर के कुछ रूप पा सकते हैं। और आप जानते हैं कि वे सभी हर मंच पर एक ही तरह से व्यवहार करेंगे।


और यहाँ कुछ अन्य बातों पर विचार किया गया है:

भव्य योजना में, XML वह क्रिया नहीं है

आपके उदाहरण में, आपने वास्तव में क्या खत्म कर दिया है? जैसा कि मैंने इसे पढ़ा, आपने:

  • प्रत्येक अभिव्यक्ति के लिए समापन टैग को हटा दिया।
  • यह समाप्त हो गया >कि सामान्य रूप से अपने बच्चों से शुरुआती टैग अलग हो जाएंगे।
  • बदला गया =है कि अलग विशेषता नाम है और एक साथ मूल्य :संकेत मिलता है कि बच्चे को एक विशेषता है; कोई बचत नहीं।

मुझे लगता है कि यह पहचानना भी महत्वपूर्ण है कि XML का आंतरिक और बाहरी प्रतिनिधित्व बहुत अलग है। आंतरिक रूप से, एक XML पेड़ बहुत कॉम्पैक्ट है। और क्योंकि विभिन्न तत्व पहले से ही वर्गीकृत हैं, इसलिए इसमें हेरफेर करना बहुत ही कुशल है। बाहरी रूप से, ठीक है, हाँ, आपको उन सभी समापन टैग मिल जाते हैं, लेकिन वे अच्छी तरह से संपीड़ित करते हैं।

क्या "वाचालता" वास्तविक मुद्दा है?

मुझे लगता है कि असली सवाल यह नहीं है कि क्या XML "वर्बोज़" है, लेकिन क्या किसी दिए गए उद्देश्य के लिए यह अधिक स्पष्ट है। कुछ उदाहरण:

  • किसी तत्व की विशेषताएँ धारण करने की क्षमता, जो शब्दार्थ से बाल तत्वों से भिन्न होती है। आउट-ऑफ-बैंड जानकारी के लिए उपयोगी, जैसे कि मूल डेटा प्रकार, तत्व की सामग्री का वर्णन करना। लेकिन शायद आपको इसकी आवश्यकता नहीं है, क्योंकि आपका बाहरी चश्मा सामग्री को परिभाषित करता है।
  • मिश्रित सामग्री, जिसमें एक तत्व दोनों बाल तत्व और पाठ (साथ ही टिप्पणियां और प्रसंस्करण निर्देश) रख सकते हैं। मार्कअप के लिए उपयोगी है, लेकिन शायद सरल डेटा प्रतिनिधित्व के लिए नहीं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.