এক্সএসএলটি দিয়ে এইচটিএমএল 5 ডক্টিপ সেট করুন


134

আমি কীভাবে পরিষ্কারভাবে<!DOCTYPE html> এক্সএসএলটি এর মাধ্যমে এইচটিএমএল 5 এ কোনও ফাইলের ডক্টাইপ সেট করব (এই ক্ষেত্রে কালেক্টিভ.এক্সডিভি সহ )

নিম্নলিখিতটি, যা আমার গুগল ফু সবচেয়ে ভাল তা খুঁজে পেতে সক্ষম হয়েছে:

<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">

7
ঘটনাক্রমে, পাবলিক "এক্সএসএলটি-কম্প্যাট" ব্যবহারের মেয়াদ শেষ। এক্সএসএলটি সামঞ্জস্যপূর্ণ এইচটিএমএল 5 ডক্টাইপ এখন <! ডক্টইপিএইচটিএমএল এইচটিএমএল সিস্টেম "সম্পর্কে: লিগ্যাসি-কম্প্যাট">। Dev.w3.org/html5/spec/syntax.html#doctype-legacy-string
অ্যালোচি

1
শেষ সম্পাদক ডাব্লুডি থেকে দেখে মনে হচ্ছে যে প্রায় কোনও ডক্টাইপ অনুমোদিত: সংক্ষিপ্ত <!DOCTYPE html>, উত্তরাধিকার <!DOCTYPE HTML SYSTEM "about:legacy-compat">এবং অপ্রচলিত ("উচিত নয়") এইচটিএমএল 4, এইচটিএমএল 4.01, এক্সএইচটিএমএল 1.0 এবং এক্সএইচটিএমএল 1.1 (সিস্টেমে থাকা সমস্ত কঠোর ডিটিডি)।

1
দয়া করে এইচটিএমএল 5-এর কিছু উত্তর আপডেট করুন (আজকাল) ডাব্লু 3 সি সুপারিশ হিসাবে।
পিটার ক্রাউস

উত্তর:


147

আমি মনে করি এটি বর্তমানে কেবলমাত্র ডক্টাইপটিকে পাঠ্য হিসাবে লেখার দ্বারা সমর্থিত:

<?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>

এটি একমাত্র স্ট্যান্ডার্ড রাস্তা। তবে, এমএসএক্সএসএল-এর সাথে একটি স্ট্যান্ডার্ড উপায় নেই: খালি এক্সএসএল ব্যবহার করুন: আউটপুট / @ ডক্টাইপ-পাবলিক এবং এক্সএসএল: আউটপুট / @ ডক্টাইপ-সিস্টেম।

4
disable-output-escapingকেসি দ্বারা বোঝানো হয়েছিল
ইয়েগার 256

আমি এই প্রকল্পে আর কাজ করছি না, তাই পরীক্ষা করতে পারছি না - তবে আপ-ভোটের ভিত্তিতে এটিকে সেরা উত্তর হিসাবে চিহ্নিত করছি।
জন হ্যাডলি

আমি এই সব সময় ব্যবহার। ধন্যবাদ।
jgroenen


66

সহজ এইচটিএমএল DOCTYPE ব্যবহার করার জন্য <!DOCTYPE html>, আপনি ব্যবহার করতে হবে disable-output-escapingবৈশিষ্ট্য: <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;</xsl:text>। তবে, এক্সএসএলটিতে disable-output-escapingএকটি alচ্ছিক বৈশিষ্ট্য , তাই আপনার এক্সএসএলটি ইঞ্জিন বা সিরিয়ালাইজেশন পাইপলাইন এটি সমর্থন নাও করতে পারে।

এই কারণে, এইচটিএমএল 5 টি এইচটিএমএল-অজানা এক্সএসএলটি সংস্করণগুলির সাথে সামঞ্জস্য করার জন্য একটি বিকল্প ডক্টাইপ সরবরাহ করে (যেমন এক্সএসএলটির বর্তমান বিদ্যমান সমস্ত সংস্করণ) এবং একই সিস্টেম রয়েছে এমন অন্যান্য সিস্টেমগুলির সাথে। বিকল্প ডকটাইপটি হ'ল <!DOCTYPE html SYSTEM "about:legacy-compat">। এই DOCTYPE আউটপুট করতে, বৈশিষ্ট্য ব্যবহার doctype-system="about:legacy-compat"উপর xsl:outputউপাদান ছাড়া একটি ব্যবহার doctype-publicএ সব বৈশিষ্ট্য।

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html" doctype-system="about:legacy-compat"/>
   ...
   <html>
   </html>
</xsl:stylesheet>

আমি প্রশংসা করি এটি সম্ভবত সঠিক, মানসম্পন্ন উপায় যা আমি চাই তা অর্জন করার জন্য (আমি এটিকে উন্নত করেছি)। তবে পূর্ববর্তীটি সমর্থিত নয় (আমার প্রসেসরটি পড়ে যায়) এবং পরবর্তীটি এখনও "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"আমার ডক্টাইপে ফলাফল করে । @ জিরকা কোসেকের পরামর্শ অনুসারে, আমি মনে করি আমার এক্সএসএলটি প্রসেসরটি নষ্ট হয়ে গেছে।
জন হ্যাডলি

1
ডেলিভারেন্স (এক্সএসএলটি প্রসেসর আমি ব্যবহার করছি) এই সমস্যা সম্পর্কিত মেলিং তালিকার আলোচনাটি এখানে রয়েছে: coactivate.org/projects/deliverance/lists/…
জন হ্যাডলি

1
W3C যাচাইকারী সেবা একটি সতর্কবার্তা প্রকাশ যখন দস্তাবেজ শুরু<!DOCTYPE html SYSTEM "about:legacy-compat">
আদ্রিয়ান ডব্লিউ

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

এই ফলাফল

<!DOCTYPE html SYSTEM "about:legacy-compat">

এটি http://ukchill.com/technology/generating-html5- using-xslt/ এ আমার ফিক্স হিসাবে পরিবর্তিত হয়েছে


1
W3C যাচাইকারী সেবা একটি সতর্কবার্তা প্রকাশ যখন দস্তাবেজ শুরু<!DOCTYPE html SYSTEM "about:legacy-compat">
আদ্রিয়ান ডব্লিউ

20

স্যাক্সন 9.4 এর সাহায্যে আপনি ব্যবহার করতে পারেন:

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

এটি উত্পন্ন করে:

<!DOCTYPE HTML>

2
দুর্ভাগ্যক্রমে, এটি স্যাকসনের কাছে নির্দিষ্ট। অন্যদিকে, এটি কেবল প্রশ্নটির সর্বাধিক সংক্ষিপ্ত উত্তর, আমি আশ্চর্য হয়েছি যে এটি অন্যান্য এক্সএসএলটি ২.০ প্রসেসরের সাথে কাজ করে?
পলব

এটি এখন কেবল স্যাকসনের ক্ষেত্রে নির্দিষ্ট নয় তবে এটি libxslt / xsltproc উত্সগুলিতে সমর্থিত। স্ট্যাকওভারফ্লো
html5-

10

ডক্টাইপ-পাবলিকের পরিবর্তে ডকটাইপ-সিস্টেম ব্যবহার করুন


এটি এখনও "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"ডক্টাইপ ছেড়ে যায়।
জন হ্যাডলি

5
যদি <xsl: আউটপুট ডক্টাইপ-সিস্টেম = "সম্পর্কে: লিগ্যাসি-কম্প্যাট" পদ্ধতি = "এইচটিএমএল" /> আপনি যা বলছেন তা উত্পন্ন করে, তবে আপনার এক্সএসএলটি প্রসেসরের মধ্যে অবশ্যই বাগ আছে।
জিরকা কোসেক

কোথায় এই আচরণ নির্দিষ্ট করা হয়? এটি অবশ্যই JAXP XSLT তে কাজ করে না।
rustx

xml.apache.org/xalan-j এইটি আপনার প্রত্যাশা কাছাকাছি কোথাও দেয় না - সম্ভবত সবেমাত্র বয়স।
পান্ডাওয়ুড

9

আপনি আবশ্যক আপনি এক্সএইচটিএমএল আউটপুট HTML5 এর সঙ্গে সামঞ্জস্যপূর্ণ চান তাহলে এক্সএইচটিএমএল 1.0 DOCTYPE যেমন কঠোর ব্যবহার করেন, libxml2 এর XML serializer এক্সএইচটিএমএল 1.0 doctypes নিশ্চিত যে আউটপুট দ্বারা আলোড়ন সৃষ্টি একটি বিশেষ আউটপুট মোড রয়েছে এক্সএইচটিএমএল, সামঞ্জস্যপূর্ণ (যেমন হয় <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>ডকটিপটি সেট করতে পারেন , যদিও এটি যথাযথ জায়গায় নদীর গভীরতানির্ণয়ের প্রয়োজন হবে কারণ এক্সডিভি এটি এখনও সমর্থন করে না।

বাস্তবে এটি <xsl:output method="html"/>সত্যই কোনওভাবেই সহায়তা করে না - এর ফলাফল <br/>আউটপুট হিসাবে আসবে <br></br>


6

এই প্রকরণ Jirka Kosek পরামর্শ মাধ্যমে উন্নত XDV theming উপর Plone.org আমার জন্য কাজ মনে হয় collective.xdv

<?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>

1
হ্যাঁ, তবে আমি 0xA3 উত্তরে মন্তব্য করেছি, খালি @ ডক্টাইপ-সিস্টেম বা @ ডক্টাইপ-পাবলিক স্ট্যান্ডার্ড নয় (এছাড়াও, এটি

5

এটি একটি মন্তব্য, তবে এটিকে সঠিক জায়গায় রাখার মতো পর্যাপ্ত কর্ম বিন্দু আমার নেই। দীর্ঘশ্বাস.

আমি প্রশংসা করি এটি সম্ভবত সঠিক, মানসম্পন্ন উপায় যা আমি চাই তা অর্জন করার জন্য (আমি এটিকে উন্নত করেছি)। তবে পূর্ববর্তীটি সমর্থিত নয় (আমার প্রসেসরটি পড়ে যায়) এবং পরবর্তীটি এখনও আমার ডক্টাইপে " 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 কঠোর হিসাবে তালিকাভুক্ত করা হয়েছে অপ্রচলিত অনুমোদিত ডক্টাইপ স্ট্রিং , সুতরাং এই ডকটিপটি ব্যবহার করা এবং এখনও এটি এইচটিএমএল 5 এ কল করা পুরোপুরি গ্রহণযোগ্য।


যদি আপনার এক্সএসএলটি প্রসেসরটি আপনার স্টাইলশিটে উপাদান যুক্ত করে বা কিছু মানহীন ডিফল্ট মান থাকে তবে তার অর্থ এটি ভেঙে গেছে।

6
@ আলেজান্দ্রো: এক্সডিভি (এখন নামকরণ ডায়াজো) কোনও এক্সএসএলটি প্রসেসর নয়, এটি একটি থিম -> এক্সএসএলটি সংকলক। এটি এক্সডিভি যা সংকলিত এক্সএসএলটি-তে ডিফল্ট মান যুক্ত করে। আমি এটি জানি কারণ আমি এটি লিখেছি;)
লরেন্স রোয়ে

3

শুধুমাত্র লিঙ্ক সরবরাহ করার জন্য দুঃখিত তবে WHATWG গ্রুপের মধ্যে এটি নিয়ে আলোচনা হয়েছিল তবে আমি এর সাথে অনেক মাস পেরিয়েছি। এখানে ইয়ান Hickson এবং কিছু এক্সএমএল বিশেষজ্ঞদের নিয়ে আলোচনা এই:
http://lists.w3.org/Archives/Public/public-html/2009Jan/0640.html
http://markmail.org/message/64aykbbsfzlbidzl
এবং এখানে প্রকৃত ইস্যু নম্বর:
http://www.w3.org/html/wg/tracker/issues/54
এবং এখানে এই আলোচনা
http://www.contentwithstyle.co.uk/content/xslt-and-html-5- সমস্যা



1

নিম্নলিখিত কোডগুলি স্বতন্ত্র টেম্পলেট হিসাবে কাজ করা হিসাবে কাজ করবে html5.xml:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="html5.xml"?>
<xsl:stylesheet version="1.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"
            >
<xsl:output method="xml" encoding="utf-8" version="" indent="yes" standalone="no" media-type="text/html" omit-xml-declaration="no" doctype-system="about:legacy-compat" />

<xsl:template match="xsl:stylesheet">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="/">
  <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    </head>
    <body>
      <xsl:text>hi</xsl:text>
    </body>
  </html>
</xsl:template>

</xsl:stylesheet>

তথ্যসূত্র


1

এটিই আমি একটি সামঞ্জস্যপূর্ণ এইচটিএমএল 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" />
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.