2010-06-24 12 views
7

मैं अपने मौजूदा HTML5 दस्तावेज़ों को पॉलीग्लोट HTML5 वाले लोगों में परिवर्तित करने पर विचार कर रहा हूं। मुझे लगता है कि भले ही वे कभी भी text/html के रूप में कार्यरत हों, फिर भी इसे एक्सएमएल लिखने के अतिरिक्त चेक मेरी कोडिंग आदतों को साफ और वैध रखने में मदद करेंगे।क्या मुझे पॉलीग्लोट एचटीएमएल 5 दस्तावेज़ लिखना चाहिए?

क्या एचटीएमएल 5-केवल अंतरिक्ष में विशेष रूप से रोमांचकारी कुछ भी है जो इसे मूर्खतापूर्ण पसंद करेगा?

दूसरा, चश्मा पॉलीग्लोट दस्तावेज़ को सत्यापित करने के तरीके पर थोड़ा आलसी हैं। मुझे लगता है मूल बातें कर रहे हैं:

  1. कोई त्रुटि नहीं जब एचटीएमएल 5
  2. कोई त्रुटि नहीं के रूप में W3C Validator के माध्यम से चलाने के लिए जब एक XML पार्सर

के माध्यम से चलाने लेकिन वहाँ भी अन्य नियम मैं याद कर रहा हूँ कर रहे हैं?

तीसरे, देखकर के रूप में यह एक बहुभाषी है, किसी को भी समर्थन ब्राउज़रों के लिए application/xhtml+xml और text/html गैर समर्थन वालों के लिए के रूप में यह सेवा करने के लिए किसी भी चेतावनियां पता है?

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

+0

यह सवाल एक अद्यतन की जरूरत है ... भी http://stackoverflow.com/q/28419046/ देखें 287948 –

उत्तर

5

एचटीएमएल 5 पॉलीग्लोट दस्तावेज़ बनाने के तरीके को परिभाषित करने पर कार्य वर्तमान में चल रहा है, लेकिन शुरुआती मसौदे के लिए http://dev.w3.org/html5/html-xhtml-author-guide/html-xhtml-authoring-guide.html देखें। यह निश्चित रूप से करना संभव है, लेकिन इसे कोडिंग अनुशासन का एक अच्छा सौदा करने की आवश्यकता है, और आपको यह तय करने की आवश्यकता होगी कि यह प्रयास के लायक है या नहीं। हालांकि मैं HTML4.01/XHTML1.0 पॉलीग्लोट दस्तावेज़ बना रहा हूं, लेकिन मैं उन्हें एक XML टूल श्रृंखला का उपयोग करके बना देता हूं जो एक्सएमएल अच्छी तरह से गठितता की गारंटी देता है और HTML गैर-शून्य तत्वों और वैध XML वर्णों के साथ संगतता सुनिश्चित करने के लिए विशेष कोड है। डायरेक्ट हैंड कोडिंग बहुत मुश्किल होगी।

HTML5 में एक ज्ञात वर्तमान समस्या iframe तत्व पर srcdoc विशेषता है। चूंकि विशेषता के मान में मार्कअप होता है, इसलिए कुछ वर्णों से बचने की आवश्यकता होती है। एचटीएमएल 5 ड्राफ्ट स्पेक एचटीएमएल सीरियलाइजेशन के लिए ऐसा करने का वर्णन करता है, लेकिन नहीं (पिछली बार मैंने देखा) एक्सएचटीएमएल क्रमबद्धता में इसे कैसे किया जाए। http://wiki.whatwg.org/wiki/HTML_vs._XHTML

+4

मार्गदर्शिका के लिए धन्यवाद पर विचार करें! मुझे आईफ़्रेम पसंद नहीं आया है। वे हमेशा "यो दाग की तरह लगते थे, मैंने आपको वेब पेजों की तरह सुना, इसलिए मैंने आपके वेब पेज में एक वेब पेज रखा ताकि आप सर्फ करते समय सर्फ कर सकें"। – Tim

0

ऐसा करना बहुत मुश्किल काम है। एक्सएचटीएमएल के डाउनफॉल में से एक यह था कि एक्सएमएल और विंटेज एचटीएमएल की प्रतिस्पर्धी मांगों के बीच सफलतापूर्वक संचालन करना संभव नहीं था।

मुझे लगता है कि अगर आप एचटीएमएल 5 लिखते हैं और इसे सफलतापूर्वक मान्य करते हैं, तो आपको किसी भी व्यक्ति की आवश्यकता के अनुसार एक साफ और वैध दस्तावेज होगा।

+0

किसी भी व्यक्ति को भाग लेने की आवश्यकता के रूप में साफ और मान्य के बारे में निश्चित नहीं है। http://www.xmlplease.com/xhtml/xhtml5polyglot/#s1 – cboettig

0

यह देखते हुए कि एचटीएमएल और एक्सएचटीएमएल के बीच मतभेदों पर डब्ल्यू 3 सी का दस्तावेज भी समाप्त नहीं हुआ है, शायद पॉलीग्लो करने की कोशिश करने के लिए आपके समय के लायक नहीं है। अभी तक नहीं ... इसे कुछ और साल दें।

किसी भी घटना में, केवल अत्यंत संकीर्ण परिस्थितियों में जहां आप कुछ विशिष्ट उद्देश्यों के लिए अपने एचटीएमएल को एक्सएमएल के रूप में पार्स करने पर सक्रिय रूप से योजना बना रहे हैं, क्या आपको एक्सएमएल-अनुपालन में अतिरिक्त समय निवेश करना चाहिए। वेब ब्राउजर द्वारा खपत के लिए इसे पूरी तरह से करने का कोई फायदा नहीं है - केवल दोष।

0

इस विकि कुछ जानकारी W3C दस्तावेज़ में मौजूद नहीं है। एक तरफ मेरे सभी टैग बंद करने से मुझे दृढ़ता से अपील की जाती है। महान न्याय के लिए, इसे पढ़ने के लिए, आसान संपादन के लिए। ओटीओएच, पॉलीग्लोट स्पेक के गोररी विवरण को देखते हुए - http://www.sitepoint.com/have-you-considered-polyglot-markup/ के अंत में एक सुविधाजनक सारांश है - यह मुझे स्पष्ट है कि मैं इसे सभी प्राप्त नहीं कर सकता।

https://developer.mozilla.org/en/docs/Writing_JavaScript_for_XHTML भी क्यों एक्सएचटीएमएल में विफल रहा है पर दिलचस्प प्रकाश डालता है: एक्सएमएल माइम प्रकार रन टाइम पर विभिन्न दुष्प्रभाव उपयोग करने के लिए बहुत पसंद है। अब तक इन्हें संभालने के लिए अच्छे जेएस कोड के लिए नियमित होना चाहिए (उदाहरण के लिए हमेशा तुलना करने से पहले हमेशा लोअरकेस टैग नाम) लेकिन मुझे वह सब नहीं चाहिए। जैसा कि धन्यवाद है, परीक्षण करने के लिए पर्याप्त क्रॉस-ब्राउज़र समस्याएं हैं।

तो मुझे लगता है कि एक उपयोगी मध्यम मार्ग है:

  1. अभी के लिए केवल text/html के रूप में सेवा करते हैं। चिंता करना बंद करें कि यह वास्तव में एचटीएमएल और एक्सएमएल मोड दोनों में समान रनटाइम व्यवहार के साथ एक ही डोम के रूप में विश्लेषण करेगा।

  2. केवल प्रयास करते हैं कि यह के रूप में कुछ अच्छी तरह से गठित XML पार्स करता है। यह पाठकों की मदद करता है, यह संपादकों की सहायता करता है, यह मुझे अपने दस्तावेज़ों पर एक्सएमएल पार्सर का उपयोग करने देता है।

    दुर्भाग्य से, बहुभाषी उपकरण गैर existant लिए दुर्लभ हैं - यह भी एक तरह से भी एचटीएमएल आवश्यकताओं गुजरता है कि में XML वापस क्रमानुसार करने मुश्किल है ...

    • नहीं brainer: हमेशा स्वयं शून्य टैग बंद (<hr/>) और अलग-अलग गैर-शून्य टैग बंद करें (<script ...></script>)।

    • नहीं brainers:,, हमेशा बोली विशेषता मान (कुछ एसवीजी लेकिन विदेशी सामग्री एक्सएमएल नियमों वैसे भी उपयोग करता है को छोड़कर) लोअरकेस टैग और attr का उपयोग हमेशा विशेषता मान प्रदान करते हैं (selected="selected" की तुलना में अधिक वर्बोज़ है stanalone selected लेकिन मैं उस के साथ रह सकते हैं) ।

    • इनलाइन <script> और <style> सबसे कष्टप्रद हैं। मैं XML पार्सिंग को तोड़ने के बिना & या < का उपयोग नहीं कर सकता। मैं की जरूरत है:

      <script>/*<![CDATA[*/ 
          foo < bar && bar < baz; 
      /*]]>*/</script> 
      

    ... और कहा कि इसके बारे में है! एक्सएमएल नेमस्पेस के बारे में परवाह नहीं करते हैं या एचटीएमएल के निहित डीओएम से मिलान करने के लिए नियमों के बारे में आधे नियमों में गिरावट आती है :-)

  3. कुछ भविष्य का इंतजार करें जब मैं सीधे एक्सएचटीएमएल को संलेखित कर सकता हूं, पॉलीग्लोटनेस छोड़ सकता हूं। लाभ यह है कि मैं टैग-क्लोजिंग सीमाओं को भूलने में सक्षम हूं, सीधे का उपभोग करने में सक्षम होगा और एक्सएमएल टूल्स के साथ का उत्पादन कर पाऊंगा। निश्चित रूप से, एक्सएमएल नेमस्पेस और अन्य चीजों की उपेक्षा करने से अब स्विच कठिन हो जाएगा, लेकिन मुझे लगता है कि मैं मौजूदा भविष्य में कनवर्ट करने के लिए इस भविष्य में नए दस्तावेज़ बनाउंगा।

    वास्तव में मुझे पूरी तरह से यकीन नहीं है कि मुझे उस भविष्य में रहने से क्या रोक रहा है। क्या यह केवल आईई 8 है? मैं सब कुछ या कुछ भी त्रुटि प्रबंधन के बारे में चिंतित नहीं हूं। मैं उम्मीद कर रहा हूं कि एक भविष्य के एचटीएमएल स्पेक को एचटीएमएल बनाम एक्सएमएल अंतराल को कम करने का एक तरीका मिलेगा, उदा। ब्राउज़र को <hr></hr> और <script .../> HTML में स्वीकार करते हैं- जबकि अभी भी HTML त्रुटि हैंडलिंग को बनाए रखते हैं।

    इसके अलावा, उपकरण।पॉलीग्लोट मार्कअप को क्रमबद्ध करने वाली कई भाषाओं में पुस्तकालय होने से कार्यक्रमों को उत्पन्न करने के लिए यह संभव हो जाएगा। HTML5 < -> पॉलीग्लोट < -> XHTML5 को सत्यापित करने और परिवर्तित करने के लिए टूल होने से। अन्यथा, यह बहुत ज्यादा बर्बाद हो गया है।

4

मैं पार्टी के लिए देर हो रही है, लेकिन 5 साल के बाद सवाल अब भी प्रासंगिक है:

1

क्या आपको चाहिए? हाँ। लेकिन पहले कुछ बिंदुओं पर कुछ स्पष्टीकरण।

Content-Type: application/xhtml+xml हेडर भेजना केवल इसका मतलब है कि इसे एक एक्सएमएल पार्सर के माध्यम से जाना चाहिए, अभी तक एचटीएमएल 5 के सभी लाभ हैं जो मैं बता सकता हूं।
लगभग &nbsp;, जिसे एक्सएमएल में परिभाषित नहीं किया गया है, केवल वर्ण इकाई संदर्भ संदर्भ एक्सएमएल परिभाषाएं लेफ्टिनेंट, gt, apos, quot, और amp हैं, आपको किसी और चीज़ के लिए संख्यात्मक चरित्र संदर्भों का उपयोग करने की आवश्यकता होगी। कोड के लिए कोड &#xa0; या &#160; है, मैं व्यक्तिगत रूप से हेक्स पसंद करता हूं क्योंकि यूनिकोड कोड बिंदु उस तरह से प्रदर्शित होते हैं (यू + 00 ए 0)।

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

यह पृष्ठ समझा क्या बहुभाषी मार्कअप है के बारे में बहुत अच्छी है: (! अब एचटीएमएल 5 एक सिफारिश है) https://blog.whatwg.org/xhtml5-in-a-nutshell

+0

वास्तव में, आज मैं अपने प्रश्न का उत्तर "नहीं" के रूप में दूंगा। एक वैध दस्तावेज़ को बनाए रखने का एकमात्र मूर्ख तरीका है (एक्स) एचटीएमएल 5 उत्पन्न करना और कभी भी कच्चे मानव-उत्पन्न डेटा को न भेजें। तो यदि आप पहले से ही * जेनरेटर का उपयोग करने जा रहे हैं, तो आप एचटीएमएल 5 जेनरेट कर सकते हैं और दस्तावेज़ को ब्राउज़र तक पहुंचने से पहले, अपने जेनरेटर को अपने इनपुट या कच्चे डेटा को अनुमानित आउटपुट में मान्य कर सकते हैं। या तो टेम्पलेट इंजन जैसे हैमल या स्लिम-लैंग (एक पार्सर के साथ कुछ) के माध्यम से उत्पन्न किया गया है, या रिएक्ट जैसे दृश्य प्रतिपादन इंजन के साथ उत्पन्न किया गया है। – Tim

+0

मैं कुछ वर्षों के लिए पॉलीग्लोट मार्कअप लिख रहा हूं, मुझे कभी भी 'htmlentities ($ गंदे, ENT_QUOTES | ENT_XML1 | ENT_SUBSTITUTE, "UTF-8", सत्य) से परे कुछ भी चाहिए नहीं है (' मैं इसे सुविधा के लिए फ़ंक्शन में लपेटता हूं) PHP में उपयोगकर्ता द्वारा उत्पन्न सामग्री को संभालने के लिए या मैं JSON के रूप में जावास्क्रिप्ट को फ़ीड करता हूं और 'टेक्स्ट सामग्री' सेट करता हूं (दोहराव वाले मार्कअप के लिए अच्छा)। मैं उत्सुक हूं कि आपको इसके बारे में इतना मुश्किल लगता है। –

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