سؤال

يبدو أن HTML 5 سيتم دعمه (جزئيًا) بواسطة Firefox 3.1 ومتصفحات أخرى. إنه يضيف دعمًا للفيديو والصوت كعلامات ، ولكن هذه علامات جديدة لا يتعرف عليها XHTML 1.0 Transitional. ما هو السلوك المفترض أن يكون إذا استخدمت علامة HTML 5 جديدة في إصدار مستقبلي من Firefox ولكن استخدم DTD لـ XHTML؟ وماذا لو قمت بخلط HTML 5 Markup مع XHTML 1.0 Trans؟

هذا يربك. لماذا لم يضيفوا هذه العلامات إلى XHTML فقط؟ كيف ندعم كل من XHTML و HTML 5؟

فيديو على HTML 5: http://www.youtube.com/watch؟v=xixdjof7xxq

هل كانت مفيدة؟

المحلول

حسنًا ، يتم التعبير عن HTML بشكل عام SGML ويتم التعبير عن XHTML في XML. ولهذا السبب ، يرتبط إنشاء XHTML بمزيد من القيود (في شكل ترميز) من HTML. ((المستند إلى SGML مقابل HTML المستندة إلى XML)

كما ذكر في ويكيبيديا, ، سيكون HTML 5 أيضًا متغير XHTML (XHTML 5).

قاعدة الإبهام: يجب عليك دائمًا استخدام ترميز صالح. هذا يعني أيضًا أنه يجب ألا تستخدم المذكورة <video> أو <audio> العلامات في XHTML 1.0 الانتقالية ، لأن تلك ليست عنصر في تلك المواصفات. اذا أنت حقا بحاجة لاستخدام هذه العلامات (التي أشك بشدة) ، يجب عليك التأكد من استخدام HTML 5/XHTML 5 DTD من أجل تحديد أن المستند الخاص بك في هذا doctype.

باستخدام HTML 5 أو XHTML 5 في الحالة المحددة للتنفيذ (AFAIK ، فإن المعيار لم يتم تسويته ، حتى الآن ، صحيح؟) يمكن أن يكون نتائج عكسية ، لأن جميع المستخدمين تقريبًا قد لا يرون موقع الويب الذي يتم تقديمه على أي حال.

تحرير 2013: نظرًا لوجود Downvotes الأخيرة ، وبما أنه لا يمكن حذف هذه الإجابة المقبولة (من قبلي) ، أود أن أضيف أن عملية الدعم والتوحيد لـ HTML5 تختلف في الوقت الحاضر تمامًا عن ما كان عليه عندما كتبت هذه الإجابة منذ خمس سنوات . نظرًا لأن معظم المتصفحات الرئيسية تدعم معظم أجزاء مسودة HTML5 ولأن الكثير من الأشياء يمكن إصلاحها مع Polyfills في المتصفحات القديمة ، فأنا أستخدم HTML5 الآن بشكل أساسي.

نصائح أخرى

HTML5 أسهل بكثير في الكتابة من XHTML 1.0.

  1. ليس عليك أن تعلن يدويًا "http://www.w3.org/1999/xhtml"مساحة الاسم.

  2. ليس عليك إضافة سمات نوع إلى عناصر البرنامج النصي والأناقة (فهي افتراضية للنص/javaScript و Text/CSS).

  3. ليس عليك استخدام Doctype طويل حيث يتجاهل المتصفح معظمه. عليك أن تستعملu003C!DOCTYPE html> ، وهو من السهل تذكره.

  4. ليس لديك خيار لتضمين أو عدم تضمين DTD URI في Doctype وليس لديك خيار بين الانتقالية والصارمة. لديك فقط doctype صارمة التي تستدعي وضع المعايير الكاملة. وبهذه الطريقة ، لا داعي للقلق بشأن أن تكون في وضع المعايير تقريبًا أو وضع المراوغات.

  5. إعلان charset أبسط بكثير. انه فقطu003Cmeta charset="utf-8"> .

  6. إذا وجدت أنه من المربك أن تكتب عناصر باطلةu003Cname> ، يمكنك استخدامu003Cname/> ، إن أردت.

  7. HTML5 لديه مدقق جيد حقا في http://validator.nu/. المدقق غير ملزم بـ DTD Crappy لا يمكنه التعبير عن جميع القواعد.

  8. ليس عليك إضافة //

  9. يمكنك استخدام التضمين إذا لزم الأمر.

فقط بناء الجملة ، عند استخدام HTML5 ، ينتهي بك الأمر إلى أنظف ، وأسهل قراءة الترميز الذي يستدعي دائمًا وضع المعايير. عند استخدام XHTML 1.0 (يتم تقديمه كنص/HTML) ، فأنت تحدد مجموعة من crud (من أجل التحقق من صحة ضد DTD crappy) بأن المتصفح سيفعله تلقائيًا.

الأساطير والمفاهيم الخاطئة كثيرة في هذا الموضوع.

  1. XHTML 1.0 أقدم من HTML 5. لا يمكنه استخدام أي مفردات جديدة. في الواقع ، كانت نقطة البيع الرئيسية هي أنها تستخدم نفس المفردات تمامًا مثل HTML 4.01.

  2. لن يكون هناك XHTML 1.2 - على الأرجح. وليس هناك حاجة. XHTML 5 هو تسلسل XML لـ HTML 5. المفردات المتطابقة ، قواعد تحليل مختلفة.

  3. لم يتم التعامل مع HTML على أنها SGML الحقيقية في المتصفحات. لم ينفذ أي متصفح محللًا متوافقًا مع SGML. ستجعل HTML 5 هذه الحقيقة في قاعدة وسيتبع تسلسل HTML اليوم المعيار الفعلي. يمكن للمرء أن يقول أنه "SGML-ish".

  4. كما ذكر ، يقدم DTD غرضًا واحدًا تمامًا في المتصفحات ، وهذا هو التمييز بين وضع الامتثال المعايير ووضع المراوغات. وبالتالي فإنه يؤثر فقط على التصميم والبرمجة النصية. إذا كنت تستخدم إطارات على صفحة ذات Doctype Astrict ، فسيصبحون على ما يرام. كما سوفu003Cembed> وحتىu003Cmarquee> - على الرغم من أن الأخير هو رجس والأولى ليس في أي معيار حالي. إنه جزء من HTML 5 ، على الرغم من.

  5. يمكن استخدام الفيديو والصوت بغض النظر عن التسلسل ، XML أو HTML. إنها جزء من كل من HTML 5 و XHTML 5. بمجرد أن تكون مرحلة التحليل فوق المتصفح ، ستنشئ DOM داخليًا من المستند. سيكون هذا DOM لجميع الأغراض العملية نفس الشيء بغض النظر عن التسلسل. ونعم ، لا يزال XHTML المرسل مع Text/HTML طبيعيًا HTML ، بغض النظر عن Doctype.

قد تنظر إلى المشكلة بطريقة خاطئة لأن العلاقة مع XHTML 1.x القسم ، HTML 5 حالات:

"تهدف هذه المواصفات إلى استبدال XHTML 1.0 باعتبارها التعريف المعياري للتسلسل XML لمفردات HTML."

الآن هذه اللغة مثيرة للجدل (لقد خلصت XHTML 2 WG إلى ذلك ، وتحاول HTML WG حل الاختلافات ...) ولكن هذا هو المكان الذي نقف فيه الآن.

بضع ملاحظات:

ضع في اعتبارك أن Doctypes تخدم غرضًا واحدًا فقط في المتصفحات: التبديل بين المراوغات والمعايير والمعايير تقريبًا. لذلك ، باستخدام <video> و <audio> سيعمل مع أي إعلان Doctype. IMO ، باستخدام Doctype XHTML لا فائدة منه ، حيث أن كل صفحة ترسلها text/html يتم تحليل نوع MIME كـ (TAG-SUB) HTML على أي حال. أقترح استخدام HTML5 Doctype (<!doctype html>) ، لأنه من الأسهل تذكر ولا تجبرك في بناء جملة XML دون سبب.

لماذا لم يضيفوا هذه العلامات إلى XHTML فقط؟

لقد فعلوا بالفعل ، هناك تسلسل XML لـ HTML 5 (XHTML5). لاستخدام هذا ، يجب عليك إرسال صفحاتك بنوع MIME XML ، مثل application/xhtml+xml. هذا ليس (بعد) مدعوم من IE ، على الرغم من.

ما هو السلوك المفترض أن يكون إذا استخدمت علامة HTML 5 جديدة في إصدار مستقبلي من Firefox ولكن استخدم DTD لـ XHTML؟

وماذا لو قمت بخلط HTML 5 Markup مع XHTML 1.0 Trans؟

إذا لم يتم تنفيذ ترميزك كجزء من DTD الذي اخترته - ثم من الناحية المنطقية ، لا ينبغي اتباع هذا الترميز. لكن تطبيقات المتصفح ليست دائمًا منطقية تمامًا.

لماذا لم يضيفوا هذه العلامات إلى XHTML فقط؟ كيف ندعم كل من XHTML و HTML 5؟

XHTML ليس أفضل من HTML ، لكنه أكثر ملاءمة لبعض التطبيقات. واحدة من الفوائد الرئيسية لـ XHTML هي أنه يمكن تحويلها إلى تنسيقات مختلفة باستخدام XSLT. على سبيل المثال ، يمكنك استخدام XSLT لتحويل XHTML تلقائيًا إلى خلاصة RSS أو تنسيق XML آخر.

لا تحتاج إلى دعم كلا التنسيقين - قم بتكوين الفوائد/العيوب لكل منها مع متطلبات مشروعك. HTML 5 ربما لن يكون قياسيًا لبعض الوقت.

(X) HTML5 هو مجرد الإصدار التالي. يجب أن تستخدم XHTML1.1 حتى يتم دعم XHTML5 بشكل جيد.

ربما يجب ألا تستخدم ملف تعريف SGML للتوافق مع HTML5. إنه يجعل الأمور أكثر صعوبة بالنسبة للكاشطات والحلويات الصغيرة.

لك Doctype سيخبر المستعرض ما إذا كنت تستخدم HTML5 أو XHTML. لا يمكنك فقط دفع علامة من Doctype إلى مستند من Doctype آخر وتتوقع أن تعمل. بدون doctype ، كل شيء مجرد حساء علامة على أي حال.

لا تستخدم أشياء مثل علامات الفيديو/الصوت عندما لن يتمكن 99 ٪ من الأشخاص من مشاهدتها بشكل صحيح على متصفحهم. لأي من هذين المثالين أقترح استخدام FLV.

بقدر ما لا يضيفونه إلى XHTML ... أولاً ، 1.0 ليس أحدث إصدار ، تم إصدار 1.1 منذ فترة.

في نهاية المطاف ، تصبح الأمور موحدة وسنرى هذه الأنواع من العلامات في كلا المعيارين ، ولكن في الوقت الحالي ، فقط افعل ما تستطيع لضمان أكبر عدد من الأشخاص الذين يمكنهم عرض المحتوى الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top