2010-11-09 14 views
5

मैं स्पष्ट रूप से यह निर्धारित नहीं कर सकता कि एचटीएमएल का एक टुकड़ा यह जानने के बिना वैध है कि शेष दस्तावेज़ कैसा दिखता है (कम से कम, मुझे यह जानने के लिए एक डॉक्टरेट की आवश्यकता होगी कि मैं किस नियम के खिलाफ सत्यापन कर रहा हूं)। लेकिन यह देखते हुए निम्नलिखित एचटीएमएल 5 टुकड़ा:क्या एक वैध HTML5 खंड के रूप में ऐसी कोई चीज है?

<article><header></article>My header</header><p>My text</p></article> 

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

क्या निम्नलिखित छद्म कोड से इसकी तुलना में अधिक है?

def is_valid_fragment(fragment): 
tmp = "<!doctype html><html><head><title></title></head><body>" + fragment + "</body></html>" 
return my_HTML5_validator.is_valid_html5_document(tmp) 
+1

आपका छद्म कोड '

  • आइटम
  • 'के साथ काम नहीं करता है क्योंकि यह सीधे शरीर में दिखाई नहीं दे सकता है। इसके अलावा आप DOM spec में DocumentFragment की परिभाषा से रूचि रख सकते हैं। यह एक दस्तावेज़ पेड़ के एक हिस्से का प्रतिनिधित्व करता है और इसे अच्छी तरह से गठित करने की आवश्यकता है ताकि 'abc' और'

    'मान्य टुकड़े हैं लेकिन' <'नहीं है। मुझे एक्सएमएल या एचटीएमएल स्पेक –

    उत्तर

    3

    आप निश्चित रूप से XML दस्तावेज़ well-formed पर काम कर रहे दस्तावेज़ के बारे में बात कर सकते हैं, और आप किसी एकल तत्व और उसके बच्चों से दस्तावेज़ बना सकते हैं। इस प्रकार आप अच्छी तरह से गठित अकेले जड़ वाले एक्सएचटीएमएल 5 टुकड़ों के बारे में बात कर सकते हैं। दस्तावेजों के अनुक्रम के रूप में इसे निपटाने या इसे कुछ सिंथेटिक कंटेनर तत्व में लपेटकर आप एक गुणा-रूट वाले खंड (जैसे <img/><img/>) से निपट सकते हैं - क्योंकि हम केवल अच्छी तरह से गठबंधन के बारे में बात कर रहे हैं, यह ठीक रहेगा।

    हालांकि, एचटीएमएल 5 अभी भी एसजीएमएल स्व-समापन टैग की अनुमति देता है, जैसे <hr> और इसी तरह, जिनकी आत्म-समापन केवल कार्यप्रणाली के लिए अपील द्वारा निर्धारित की जा सकती है। उदाहरण के लिए, <div><hr></div> ठीक है, लेकिन <div><tr></div> नहीं है। यदि आप इनपुट के रूप में टेक्स्ट की बजाय डोम नोड्स से निपट रहे थे, तो यह एक अनिश्चित होगा, लेकिन यदि आपके पास टेक्स्ट है, तो आपको एक पार्सर की आवश्यकता होगी जो HTML के बारे में उन तत्वों से निपटने में सक्षम होने के बारे में पर्याप्त जानता है। इसके अलावा, हालांकि, एक्सएमएल से सीधे उठाए गए कुछ बहुत ही सरल नियम अच्छी तरह से गठबंधन को संभालने के लिए पर्याप्त होंगे।

    यदि आप अच्छी तरह से गठबंधन से परे जाना चाहते हैं और validity के कुछ पहलुओं को देखना चाहते हैं, तो मुझे लगता है कि आप अभी भी एक्सएमएल के साथ सिंगल रूट वाले खंड स्तर पर ऐसा कर सकते हैं। जैसा कि स्पेक कहता है:

    एक XML दस्तावेज़ मान्य है यदि उसके पास एक संबंधित दस्तावेज़ प्रकार की घोषणा है और यदि दस्तावेज़ इसमें व्यक्त की गई बाधाओं का अनुपालन करता है।

    एक DTD रूट के रूप में किसी भी तत्व नाम कर सकते हैं, और यांत्रिकी तो उस तत्व और उसके बच्चों के बीच संबंधों की जाँच की देखभाल, और अपने बच्चों को और इतने पर, और विभिन्न अन्य बाधाओं कि वैधता बना ले।

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

    -3

    आप यह जांच सकते हैं कि यह अच्छी तरह से गठित है या नहीं।

    +1

    में खंड की परिभाषा नहीं मिल रही है, यह समझाने के द्वारा आप इस जवाब को बेहतर बना सकते हैं। –

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