DOMDocument->saveHTML()
आपके एक्सएमएल डोम इंफोसेट लेता है और इसे पुराने स्कूल HTML के रूप में लिखता है, एक्सएमएल नहीं। आपको saveHTML()
का उपयोग एक्सएचटीएमएल डक्ट टाइप के साथ नहीं करना चाहिए, क्योंकि इसका आउटपुट अच्छी तरह से एक्सएमएल नहीं होगा।
यदि आप इसके बजाय saveXML()
का उपयोग करते हैं, तो आपको उचित एक्सएचटीएमएल मिलेगा। यदि आप इसे Content-Type: application/xhtml+xml
शीर्षलेख देते हैं तो यह XML आउटपुट मानकों-अनुरूप ब्राउज़र पर सेवा करना ठीक है। लेकिन दुर्भाग्य से आईई 6-8 इसे पढ़ने में सक्षम नहीं होगा, क्योंकि वे अभी भी text/html
मीडिया प्रकार के तहत पुराने स्कूल HTML को संभाल सकते हैं।
सामान्य समझौता समाधान text/html
की सेवा करना है और एक्सएचटीएमएल 1.0 spec के परिशिष्ट सी में उल्लिखित 'एचटीएमएल-संगत एक्सएचटीएमएल' का उपयोग करना है। लेकिन दुख की बात है कि इसके लिए सही आउटपुट उत्पन्न करने के लिए कोई PHP DOMDocument->saveXHTML()
विधि नहीं है।
कुछ सामान्य मामलों के लिए HTML- संगत आउटपुट बनाने के लिए saveXML()
को मनाने के लिए कुछ चीजें हैं जो आप कर सकते हैं। मुख्य बात यह है कि आपको यह सुनिश्चित करना होगा कि HTML4 द्वारा EMPTY
सामग्री मॉडल (<img>
, <br>
आदि) के रूप में परिभाषित केवल तत्वों में वास्तव में खाली सामग्री हो, जिससे स्वयं-समापन वाक्यविन्यास (<img/>
) का उपयोग किया जा सके। अन्य तत्वों, स्वयं बंद होने सिंटैक्स का उपयोग नहीं होना चाहिए, इसलिए यदि वे खाली कर रहे हैं आप अपने पाठ्य सामग्री में एक अंतरिक्ष डाल उन्हें ऐसा किया जा रहा रोकने के लिए चाहिए: एक दूसरे के लिए की हैंडलिंग है बाहर देखने के लिए
<script src="x.js"/> <-- no good, confuses HTML parser and breaks page
<script src="x.js"> </script> <-- fine
इनलाइन <script>
और <style>
तत्व, जो एक्सएचटीएमएल में सामान्य तत्व हैं लेकिन विशेष CDATA
- HTML में सामग्री तत्व। कुछ /*<![CDATA[*/.../*]]>*/
रैपिंग को <
या &
उनके अंदर वर्णों को अधिकतर लगातार व्यवहार करने की आवश्यकता है, हालांकि ध्यान दें कि आपको अभी भी ]]>
और </
अनुक्रमों से बचना है।
यदि आप वास्तव में इसे सही तरीके से करना चाहते हैं तो आपको अपना स्वयं का HTML- संगत-एक्सएचटीएमएल धारावाहिक लिखना होगा। दीर्घकालिक जो शायद एक बेहतर विकल्प होगा। लेकिन छोटे साधारण मामलों के लिए, अपने इनपुट को हैक करना ताकि इसमें कुछ भी शामिल न हो जो एक्सएमएल सीरियलिसर के दूसरे छोर से बाहर आ जाए क्योंकि एचटीएमएल के साथ असंगत शायद त्वरित समाधान है।
यह या बस इसे चूसो और पुराने स्कूल गैर-एक्सएमएल एचटीएमएल के साथ रहें, जाहिर है।
क्या आपने यह देखने के लिए एक डॉक्टरेट जोड़ने की कोशिश की है कि क्या होता है? – ceejayoz
मैं हमेशा एक एक्सएचटीएमएल डॉक्ट टाइप का उपयोग कर रहा हूं, सोचा कि यह प्रासंगिक नहीं था क्योंकि मैं थक गया हूं-_- – peterjwest