html5 - एक्सएसएलटी के साथ एचटीएमएल 5 डॉक्टरेट सेट करें




xslt doctype (8)

Doctype-public की बजाय डॉक्ट टाइप सिस्टम का उपयोग करें

मैं एक्सएसएलटी के माध्यम से एचटीएमएल <!DOCTYPE html> पर फ़ाइल के सिद्धांत को कैसे साफ कर दूंगा (इस मामले में collective.xdv साथ)

निम्नलिखित, जो मेरा Google foo सबसे अच्छा है खोजने में सक्षम है:

<xsl:output
    method="html"
    doctype-public="XSLT-compat"
    omit-xml-declaration="yes"
    encoding="UTF-8"
    indent="yes" />

पैदा करता है:

<!DOCTYPE html PUBLIC "XSLT-compat" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

इस टैग का प्रयोग करें

<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="XSLT-compat" indent="yes"/>

मुझे लगता है कि यह वर्तमान में केवल टेक्स्ट के रूप में कार्यप्रणाली लिखकर समर्थित है:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="utf-8" indent="yes" />

  <xsl:template match="/">
    <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html&gt;</xsl:text>
    <html>
    </html>
  </xsl:template>

</xsl:stylesheet>

यह निम्नलिखित आउटपुट का उत्पादन करेगा:

<!DOCTYPE html>
<html>
</html>

मैं एक संगत एचटीएमएल 5 डॉक्टरेट उत्पन्न करने के लिए उपयोग करता हूं (सैक्सन एचटीएमएल 5 प्राप्त कर रहा हूं, अन्यथा विरासत की बात कर रहा हूं)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="http://www.w3.org/TR/REC-html40">

    <xsl:output
        method="html"
        version="5.0"
        doctype-system="about:legacy-compat"
        encoding="UTF-8"
        indent="yes" />

यदि आप एक्सएचटीएमएल आउटपुट को एचटीएमएल 5 के साथ संगत करना चाहते हैं तो आपको एक्सएचटीएमएल 1.0 सख्त का उपयोग करना चाहिए , libxml2 के एक्सएमएल सीरियलाइज़र के पास एक्सएचटीएमएल 1.0 डॉक्टरेट्स द्वारा ट्रिगर किया गया एक विशेष आउटपुट मोड है जो आउटपुट सुनिश्चित करता है कि एक्सएचटीएमएल संगत है, (उदाहरण के लिए <br /> <br/> , <div></div> बजाय <div/> )। doctype-system="about:legacy-compat" इस संगतता मोड को ट्रिगर नहीं करता है

यदि आप एचटीएमएल आउटपुट से खुश हैं, तो <xsl:output method="html"> को सही चीज़ करना चाहिए। इसके बाद आप <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;</xsl:text> साथ कार्यप्रणाली सेट कर सकते हैं, हालांकि इसे उचित जगह पर नलसाजी की आवश्यकता होगी क्योंकि XDV इसका समर्थन नहीं करता है अभी तक।

वास्तव में ऐसा लगता है <xsl:output method="html"/> वास्तव में या तो मदद नहीं करता है - इसका परिणाम <br/> आउटपुट होने के रूप में होगा <br></br>


यह एक टिप्पणी है, लेकिन मेरे पास सही जगह पर रखने के लिए पर्याप्त कर्म बिंदु नहीं हैं। आह।

मैं सराहना करता हूं कि यह संभव है कि मैं जो चाहता हूं उसे पूरा करने के लिए सही, मानक संचालित तरीका है (मैंने इसे इस तरह से ऊपर उठाया है)। लेकिन पूर्व समर्थित नहीं है (मेरा प्रोसेसर खत्म हो गया है) और उत्तरार्द्ध अभी भी मेरे डॉक्टरेट में " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " में परिणाम देता है। जैसा कि @ जिर्का कोसेक ने सुझाव दिया, मुझे लगता है कि मेरा एक्सएसएलटी प्रोसेसर टूटा जा सकता है।

नहीं, आपका एक्सएसएलटी प्रोसेसर टूटा नहीं है, यह सिर्फ एक्सडीवी जोड़ता है:

<xsl:output method="xml" indent="no" omit-xml-declaration="yes" media-type="text/html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>

डिफ़ॉल्ट रूप से, इसलिए जब आप एक दूसरा <xsl:output doctype-system="about:legacy-compat"/> पिछली doctype-public को ओवरराइट नहीं किया जाता है।

ध्यान दें कि एक्सएचटीएमएल 1.0 सख्त एक अप्रचलित अनुमत डॉक्ट टाइप स्ट्रिंग के रूप में सूचीबद्ध है, इसलिए यह इस सिद्धांत का उपयोग करने के लिए पूरी तरह से स्वीकार्य है और अभी भी इसे HTML5 पर कॉल करें।


सैक्सन 9.4 के साथ आप इसका उपयोग कर सकते हैं:

<xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />

यह उत्पन्न करता है:

<!DOCTYPE HTML>

Plone.org पर उन्नत एक्सडीवी थीमिंग के माध्यम से जिर्का कोसेक की सलाह के इस बदलाव को सामूहिक.एक्सडीवी में मेरे लिए काम करना प्रतीत होता है।

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output
      doctype-public="HTML"
      doctype-system=""/>
</xsl:stylesheet>




xdv