2009-09-15 16 views
6

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

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

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

लिंक/आग के साथ आग लगाना।

उत्तर

5

मुझे लगता है कि अनुभाग 9.1 White space in the HTML 4 specification वह है जिसे आप ढूंढ रहे हैं।

+0

मुझे लगता है कि पढ़ सकते हैं और यह विस्तार मैं जरूरत नहीं थी। वर्तमान में एचटीएमएल 5 पार्सर प्रलेखन को देखकर यह देखने के लिए कि यह तत्वों के चारों ओर व्हाइटस्पेस को कैसे कवर करता है। – fret

3

यदि आप अपना स्वयं का HTML पार्सर लिख रहे हैं, तो मैं दृढ़ता से अनुशंसा करता हूं कि आप HTML 5 spec में पार्सिंग एल्गोरिदम का उपयोग करें। http://www.whatwg.org/html5 इसमें बड़ी संख्या में एज और कोने के मामले और सामान्य ब्राउज़र अजीबता शामिल है। ब्राउज़र एसजीएमएल नियमों का पालन नहीं करते हैं, लेकिन वे सभी एचटीएमएल 5 स्पेक कहता है, या इसके कार्यात्मक समकक्ष पर काम कर रहे हैं। कई ओपन सोर्स पार्सर्स उपलब्ध हैं जो एल्गोरिदम लागू करते हैं, इसलिए इसमें आपकी हर चीज होनी चाहिए।

+0

अब मेरे पास एचटीएमएल 5 spec के माध्यम से पढ़ने के लिए कुछ समय है, अच्छी तरह से पार्सिंग से निपटने वाले हिस्सों में, मैं काम करने के करीब नहीं हूं कि व्हाइटस्पेस वर्णों को प्रस्तुत किया जा रहा है और जो गायब हो गया है। – fret

+0

दाएं। आपके द्वारा पूछे जाने वाले एक सफेद स्थान को एक अलग प्रश्न दिया गया है, जो पार्स चरण में सफेद जगह को फेंक दिया जा सकता था। याद रखें कि श्वेत-स्थान की तरह सीएसएस: पूर्व में पार्स चरण के बाद जावास्क्रिप्ट द्वारा पूर्व लागू किया जा सकता है, इसलिए पार्स चरण किसी भी सफेद-स्थान को फेंक नहीं सकता है जो बाद में इस तरह के एप्लिकेशन के अधीन हो सकता है। – Alohci

+0

संयोग से, ब्राउज़रों को वास्तव में यह देखने के लिए एक अच्छा टूल है, हिक्सी के लाइव डोम व्यूअर (http://software.hixie.ch/utilities/js/live-dom-viewer/) का उपयोग करना है। आप देखेंगे कि जब आप "परीक्षण करने के लिए चिह्नित करें" बॉक्स में सफेद स्थान बनाते हैं, तो "#text:" डोड में नोड्स बनते हैं जो दिखाते हैं कि सफेद स्थान पार्स चरण में नहीं फेंक दिया गया है। ध्यान दें कि वर्तमान/हालिया ब्राउज़र बिल्कुल वही व्यवहार नहीं करते हैं, लेकिन अगर आप एक gecko, webkit या presto आधारित ब्राउज़र का उपयोग कर रहे हैं तो प्रभाव पर्याप्त स्पष्ट होना चाहिए। – Alohci

3

तो मुझे लगता है सबसे करीब मैं इस पर एक जवाब के लिए प्राप्त करने के लिए जा रहा हूँ यहाँ है: http://www.w3.org/TR/CSS2/text.html#white-space-model

+0

यह एक और हालिया और थोड़ा अधिक सहायक संस्करण है: http://www.w3.org/TR/css3-text/#white-space-processing – Max

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