18

Google वेव प्रोटोकॉल के एफएक्यू का कहना है कि [एचटीएमएल] "वांछनीय गुण नहीं है" और "एचटीएमएल ओटी (ऑपरेशनल ट्रांसफॉर्म) को असंभव नहीं होने पर मुश्किल बनाता है" [1]। ऐसा क्यों है? अगर एचटीएमएल का सादा पाठ के रूप में व्यवहार किया जाता है और फिर ओटी लागू होता है तो क्या समस्याएं उत्पन्न होती हैं?क्या एचटीएमएल जैसे संरचित दस्तावेजों पर परिचालन परिवर्तन कार्य करता है यदि इसे सादे पाठ के रूप में माना जाता है?

  1. http://www.waveprotocol.org/faq#TOC-What-s-the-XML-schema-for-waves-Why

उत्तर

5

मैं एक पूरा जवाब नहीं है, लेकिन मैं अधिक काम मौजूदा खुला स्रोत परिचालन परिवर्तन पुस्तकालयों रिच टेक्स्ट के साथ काम कर रही है पर किया देखने में रुचि हूँ, इसलिए मैं योगदान करेंगे कि कौन- मुझे पता है।

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

(b) This is bold (i) while this range is both bold and italic (/b) and this last bit is just italic (/i)

संबंधित, यहाँ ShareJS परियोजना में relevant issue है। शायद वे वेव एक्सएमएल स्कीमा का हिस्सा अपनाने से समृद्ध टेक्स्ट समर्थन को कार्यान्वित कर सकते हैं।

+1

+1! – mb21

16

मुझे लगता है कि आप ओटी की मूल बातें समझते हैं। एचटीएमएल पर सादे पाठ के रूप में ओटी करने के साथ मुख्य समस्या एचटीएमएल टैग विलय करने की है। एक साधारण उदाहरण के रूप में, कहते हैं कि हम एक दस्तावेज़ था इस प्रकार है:

Hello world 

ऐलिस तो यह है कि दुनिया बोल्ड में होना चाहिए का फैसला करता है:

Hello <b>world</b> 

इस ओटी में एक डबल डालने संचालन के साथ किया जा सकता है, रेखाचित्र के रूप में :

Edit A: Keep 6 : Insert "<b>" : Keep 5 : Insert "</b>" 

तो बॉब फैसला किया है कि 'दुनिया' इटैलिक इससे पहले कि वह ऐलिस संपादित देखा जाना चाहिए, वह आपरेशन जोड़ना होगा

Edit B: Keep 6 : Insert "<i>" : Keep 5 : Insert "</i>" 

यदि सर्वर को एलिस के बाद बॉब का संपादन प्राप्त हुआ, तो उसे बी के खिलाफ बी को बदलने के लिए बी को बदलने की आवश्यकता होगी।

रखें कथन कथन परिवर्तन के माध्यम से अपरिवर्तित हैं, लेकिन सम्मिलित करें "" सम्मिलित करें "" या तो रखें 3: हो सकता है "" डालें या "" डालें: "रखें 3. आमतौर पर सर्वर बाद में संपादन करने के लिए कॉन्फ़िगर किया जाएगा पहला संपादन।

Edit B': Keep 6 : Keep 3 : Insert "<i>" : Keep 5 : Keep 3 : Insert "</i>" 

यहां समस्या स्पष्ट हो गई है। मूल स्ट्रिंग के लिए आवेदन एक तो बी 'अवैध एचटीएमएल देता है:

Hello <b><i>world</b></i> 

सैद्धांतिक रूप से यह पहले और बाद आवेषण में परिवर्तन करके हल किया जा सकता है, लेकिन यह अधिक जटिल उदाहरण के लिए बालों मिलेगा, संभवतः के लिए एक पूर्ण दस्तावेज स्कैन से जुड़े हर परिवर्तन।

जैसा कि दूसरे उत्तर में कहा गया है, बैंड के एनोटेशन + सादा पाठ का उपयोग करके इस गड़बड़ी से बचा जा सकता है।एक और दृष्टिकोण मैं केवल शैक्षिक पेपर में अब तक देखा है नोड इसके अलावा, विलोपन, उदाहरण के लिए ओटी संचालन के साथ एक पेड़ के रूप XML संरचना के इलाज के लिए है:

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.100.74

+1

मुझे लगता है कि यहां मौलिक मुद्दा यह है कि एक साथ आवेषण के साथ, अंतिम परिणाम हमेशा अर्थात् गलत हो सकता है - लेकिन एक्सएमएल/एचटीएमएल के मामले में, अंतिम परिणाम वाक्य रचनात्मक रूप से गलत हो सकता है। एनोटेशन का उपयोग अर्थपूर्ण असंगतता को कम करने के लिए कुछ भी नहीं करता है, लेकिन यह सुनिश्चित करता है कि परिवर्तन वैध एक्सएमएल/एचटीएमएल का उत्पादन करेगा और इस तरह हमेशा अच्छी तरह से प्रस्तुत किया जा सकता है। धन्यवाद। – Nakedible

+0

बिल्कुल सही – jazmit

1

वहाँ approaches in OT कि समर्थन SGML (के सुपरसेट हैं एक्सएमएल), लेकिन कोई कार्यान्वयन नहीं है। इसलिए, यह असंभव नहीं है! हालांकि, मैं मानता हूं, ओटी एक्सएमएल को सक्षम करने का सबसे अच्छा तरीका नहीं है। ऐसा इसलिए है क्योंकि ओटी रैखिक डेटा संरचनाओं के लिए डिज़ाइन किया गया था। लेकिन एचटीएमएल/एक्सएमएल बहुत जटिल है: इसमें गुण हैं, और यह एक पेड़ की तरह बनाया गया है। तथ्य यह है कि यह एक पेड़ हल करने योग्य है, लेकिन गुण - जिसे एक आदेशित सहयोगी सरणी के रूप में महसूस किया जाता है - ओटी द्वारा समर्थित नहीं है। सिर्फ इसलिए कि सहयोगी सरणी ओटी (फिलहाल) द्वारा समर्थित नहीं हैं। उपरोक्त दृष्टिकोण वास्तव में गुणों को एक स्ट्रिंग के रूप में पेश करने की सिफारिश करता है: उदा। "id = 'myid' value = 'mystuff'" लेकिन जब आप एक उपयोगकर्ता सभी विशेषताओं को हटा देता है, तो आप आसानी से अपने 'विशेषताओं-स्ट्रिंग' के पूरे वाक्यविन्यास को तोड़ सकते हैं, और दूसरा कोई "mystuff के बाद सीधे" वर्ण डालता है। । कुछ div टैग है कि इस <div "> की तरह लग रहा है, जो मान्य सिंटैक्स नहीं है में हल कर सकता है

हो सकता है कि यह अपनी रुचि:

CEFX एक परियोजना XML का समर्थन करने के उद्देश्य से है कि है - यह मेरी जानकारी के लिए मर चुका है लेकिन यह उपयोग करता है। एक ओटी दृष्टिकोण। किसी कारण से स्ट्रिंग को संपादित करना संभव नहीं है - केवल xml तत्व।

Google की ड्राइव एसडीके ग्राफ-जैसी डेटा संरचनाओं का समर्थन करता है। हालांकि, मालिकाना और नोबॉड वाई जानता है कि यह कैसे काम करता है।

मैं एक ढांचा विकसित कर रहा हूं जो मनमानी डेटा संरचनाओं का समर्थन करता है। वर्तमान में, टेक्स्ट, जेसन, एक्सएमएल, और एचटीएमएल समर्थित हैं। इसका एक अलग दृष्टिकोण है: इसे जांचें: Yatta!

बीटीडब्ल्यू: वेव प्रोटोकॉल क्या है, और एरिक ड्रेस्सेल का वर्णन ओटी में एनोटेशन के रूप में जाना जाता है। यह आमतौर पर समृद्ध पाठ का समर्थन करने के लिए लीवरेज किया जाता है। [शेयरजेएस चर्चा] (https://github.com/josephg/ShareJS/issues/1) के लिए

संबंधित मुद्दे