[The article "HTML5, XHTML2, and the Future of the Web" by David "liorean" Andersson was published with the permission ofDigital Web Magazine]
מבוא
כמי שעובדים בתחום האינטרנט, אנו עוסקים בטכנולוגיות רבות שהן יציבות מזה זמן ממושך.
טכנולוגית HTML 4.01 הפכה להמלצה בשנת 1999, XHTML 1.0 המהווה ניסוח של HTML 4.01 ב – XML, הוכרזה רשמית בשנת 2000, ונערכה מחדש ב- 2002. ניתן לומר איפוא, כי בבסיס הפיתוח של הווב המודרני עומדות טכניקות בנות שמונה שנים בקירוב.
HTML 4.01 יכול להוות בסיס מצוין ויציב למפתחים, אולם הוא יכול להיות טוב יותר. תמורות לא מעטות חלו באופן השימוש באינטרנט ובצורה בה הוא נתפס בשמונה השנים האחרונות, אולם התובנה החשובה במיוחד מגיעה מצד המפתחים המעידים על נקודות הכשל של HTML 4.01 והיכן ניתן לשפרן. במאמר נתמקד בדור חדש של טכנולוגיות הראויות למעקב לאור השפעתן הצפויה על העיסוק בתחום.
המתחרים
איגוד ה-W3C שילב מזמן בעבודתו את XHTML2, טכנולוגיה שמטרתה לבצע אותו תפקיד כמו HTML 4.01 ו- XHTML 1.0, תוך שדרוג והחלפה הכוללת שיפורים ושינויים רבים למשמעות הסמנטית של האלמנטים הקיימים.
ישן לציין, כי שפת XHTML2 איננה אלא XML, בדיוק כמו XHTML 1.0, ואין לה תאימות ל- HTML 4.01. ניתן לראות בה, למעשה, שפה חדשה בשל העובדה שיש לה namespace שונה. HTML5 (שזוכה בנוסף לכינוי אפליקציות ווב 1.0) היא טכנולוגיה שפותחה ע"י ה- WHATWG, קהילה פתוחה שנוצרה ע"י שלוש מתוך ארבעת החברות המרכזיות בתחום הדפדפנים: Mozilla, Opera ו- Apple. HTML5 איננה צריכה להיחשב כתחליף עבור HTML 4.01 או XHTML 1.0 , אלא יותר כשדרוג או אבולוציה.
ב- HTML5 נשמרה תאימות לאחור תוך ניסיון לבטל התנהגות בלתי מוגדרת ב- HTML 4.01 ע"י הוספת הגדרות חסרות. שפת HTML5 בוחנת את אופני הפיענוח (parsing) של "ספגטי" התגיות (tag-soup) הקיימים בדפדפנים בכדי לנסות להגדיר את הפיתרון האופטימלי מבלי לגרום לסכנת קריסה. בד בבד, השפה משלבת אלמנטים חיוניים ביותר מבחינה סמנטית בתחומים כגון אימות משופר בטפסים, אלמנטים אינטראקטיביים ויכולת לאפשר לצד הלקוח לאחסן בו זמנית נתוני טרנזאקציות מעמודים שונים של אותו דומיין (persistent storage).
HTML כיום
HTML 4.01 הינה, באופן רשמי, תבנית מסמך מבוססת SGML אולם רק ה- validators, (מאמתי תקנים) מתייחסים לטכנולוגיה זו כך. בדפדפנים, מאידך, הגישה למסמכי HTML היא כאל tag soup, שיש לפענח ולהציג בצורה מיטבית גם אם המסמכים ערוכים בצורה לקויה ביותר.
מסתבר שמעט מאוד מהתוכן באינטרנט יכול להחשב כתקף לפי תקן HTML 4.01 ורובו אף לקוי במבנהו. הבעיה היא שמרבית אתרי האינטרנט נכתבו בצורה זו ולכן לדפדפנים אין ברירה אלא לתמוך בשיטה, אחרת יזנחו ע"י המשתמשים.
הטיפול ב- tag soup, במטרה לתקן שגיאות בדפים הינו ללא ספק חיוני. כל דפדפן מבצע זאת בצורה מעט שונה. אולם אפילו כשתוכן לקוי מוצג בצורה זהה בדפדפנים שונים, אין זה אומר בהכרח שהם מבצעים את תיקון השגיאות באותה שיטה, אלא רק בשיטה שהיא הכי פרקטית עבור אותו דפדפן. HTML5 מנסה להגדיר בצורה מדויקת כיצד יש לתקן שגיאות. התקן לא רק מגדיר כיצד לפרש מסמכים תקפים, אלא גם מגדיר כיצד ה- parsing צריך לעבוד כאשר מסמכים הם בלתי תקפים, או ערוכים בצורה לקויה, כך שתתאפשר תאימות מלאה בין הדפדפנים השונים.
XML כיום
מרבית השימוש ב- XHTML מאופיין ב- "text/html", דבר המעיד על כך שהתגיות מפורשות ע"י הדפדפנים כ-tag soup ולא כ-XML . אחת הסיבות לכך, היא השיטה הדרקונית של XML לטיפול בשגיאות הגורמת לכך שהניתוח (parsing) של מסמך XML יפסק כליל בשגיאה הראשונה המופיעה במסמך, ומשתמע מכך שכל שגיאה תהפוך את העמוד לבלתי נגיש. מסמך XML המכיל שגיאה מבנית (well formedness) יציג פרטים לגבי השגיאה בלבד, ללא תוכן. קיים תמיד סיכון של שגיאות בעמודים בהם חלק מהתוכן הינו ממקור חיצוני כגון trackback, מודעות פרסומת, או widgets. דפדפנים המבצעים ניתוח של tag-soup ינסו להציג את הדף טוב ככל יכולתם, על אף שגיאות כלשהן, אך כאשר XML מבצע parsing, כל שגיאה, זעירה ככל שתהיה, עלולה להפוך את המסמך לבלתי שמיש.
הבעיה הגדולה ביותר בעיבוד מסמכים באינטרנט כ- XML היא שדפדפן האקספלורר איננו תומך בטיפוס תוכן מסוג ("application/xhtml+xml"). האקספלורר אמנם תומך ב- XML גנרי, אך ללא שום מידע על ה-namespace של ה- XHTML אין לדפדפן שום ידע על הסמנטיקה של אלמנטים כלשהם של XHTML ולא יציג אפילו את גליון העיצוב שהוא ברירת המחדל של הדפדפן. ניתן להשתמש ב- XSLT להמרת המסמך ל- HTML, אולם מכיוון שמודל האוביקטים של מסמכים (DOM) שונה כאשר הוא בשיטת XML לעומת המצב בו הוא בשיטת ה- tag-soup ה- html ית התוצאה תהיה שסקריפטים שעובדים בשיטה אחת לא יעבדו בשיטה אחרת.
XHTML 1.0 אמנם מאפשר לעבוד עם מסמכים בתצורת "text/html" אם הם עומדים בתקן Appendix C של מפרטי HTML, אולם המשמעות הנגזרת מכך היא שהדפדפנים יטפלו במסמכים בשיטת tag-soup וזה אינו XML. (קיימת אפשרות להפריד את הטיפול במסמך כך שיטופל כ- tag-soup רק ע"י דפדפנים שאינם מזהים XHTML כ- XML. לפעולה זו מתלווה אותה בעיה הקיימת בהמרתם באמצעות XSLT וכן בעיות הנובעות מהבדלים בקידוד תווים).
מהעובדה שדפדפן האקספלורר איננו תומך ב-XHTML כ- XML בשום דרך ומהבעיתיות ש- XML יכול לגרום כאשר לא כל הכלים בשרשרת היצירה של המסמך הינם כלי XML, ניתן ללמוד כי למעשה לא היה תמריץ להשתמש ב- XML באינטרנט. הבעיה נעשית מורכבת יותר בשל קשיים נוספים: מנועי חיפוש שאינם יוצרים אינדקסציה של XHTML כ- XML, מעט מדי כלי יצירה ל- XML, מעט כלים ליצירת בלוגים ולניהול תכנים התומכים ב- XML בצורה נכונה החל משלב הקלט דרך בסיסי הנתונים ואל יצירת האפליקציה, וכן מעט ספקי מודעות פרסומת התומכים ב- XML. אמנם קיים תמריץ מסויים לאפשר ל- MathML, SVG ואפליקציות אחרות של XML להיות מופצות און-ליין בפורמט XHTML, אך לשימושים אלו של XHTML כ- XML קיים קהל יעד מאוד מצומצם.
XHTML2 הוא XML
בדיון עד כה טרם הזכרנו את הבעיה המרכזית, והיא שמבחינת המפתחים XHTML2 מוסיף שכבה נוספת של סיבוכיות, כיוון שלא מדובר בניסוח מחדש של HTML 4.01 כ- XML, אלא זוהי שפה דומה אך עם שינויים סמנטיים רבים.
במקרים רבים, השינויים הם צעדים בכיוון הנכון אולם מכיוון שהתפתחות ה- XHTML2 לא לקחה בחשבון את צרכי המפתחים ניתן למצוא ליקויים רבים. לדוגמא, חסרונות של HTML 4.01 ו- XHTML 1.0 בכל הנוגע לאינטראקטיביות, אחסון מקומי, ואינטרקאציות בין סקריפטים.
יש לתת את הדעת לכך ש- XHTML2 הוא כרגע טיוטה (working draft). בעוד שחלקים גדולים יציבים כבר במשך שנים, השיטה בכללותה אינה מספקת קרקע יציבה לעריכת מסמכים בפורמט זה, אינה מוכנה דיה ליישום, וחסרה את התמיכה מארבעה אספקטים קריטיים: דפדפנים, מנועי חיפוש, מערכות ניהול תוכן וכלי יצירה. בהקשר זה, יש לציין כי אף אחת מהחברות הגדולות של הדפדפנים אינה תומכת ב- XHTML2 ו- Maciej Stachowiak מחברת Apple אף הרחיק לכת בהצהרה שהחברה גמרה אומר לסגת מלקיחת חלק בקבוצות הפיתוח של XHTML2 בנימוק שזוהי טכנולוגיה שאיננה מתאימה לרשת האינטרנט.
טכנולוגית ווב 1.0 היא יותר מ- HTML5
הספיספיקציות של אפליקציות ווב 1.0 (WA1) מביאות לכך שלא רק HTML יעודכן, אלא גם XHTML 1.0 (תחת השם המבלבל XHTML5) וכן שפת HTML DOM תחת השם DOM5 HTML. בעוד שמבחינה פורמלית HTML 4.01 מבוסס מודל SGML, טכנולוגיית HTML5 מתמודדת עם המצב הקיים בדפדפדנים ע"י שימוש ב- parsers המסוגלים להתגבר על שגיאות של tag-soup ומתארת מודל parsing שאיננו מבוסס SGML והכולל מודל לתיקון שגיאות (XHTML5 עדיין פועל עם parser של XML וע"פ כללי XML ולא ע"פ כללי HTML5).
ווב 1.0 מגדיר מספר ממשקי תכנות לאפליקציות (APIs) שהפכו במרוצת הזמן לתקנים דה פקטו ומוסיף להם עוד ועוד תקנים חדשים. בעוד ש- XHTML2, מעצים את XHTML כשפה לתיאור מסמכים עם סמנטיקה משופרת, WA1 תורם להעצמת הסמנטיקה של מסמכים, אך גם משפר את היכולות להשתמש באינטרנט כפלטפורמה לאפליקציות על-ידי הוספת רכיבים כגון אחסון ה- state של מסמך בהיסטוריית הדפדפן, אחסון מקומי, שימוש בדפדפן במצב offline, העתקה והדבקה, העברת מסרים בין מסמכים ועוד.
שלא כמו XHTML2 שאין לו תמיכה מחברות הדפדפנים, HTML5 נהנה מתמיכת כל חברות הדפדפנים הגדולות, להוציא מיקרוסופט. תהליך הגדרת המפרטים טרם הסתיים, אבל חלקי השפה נמצאים ברמת בגרות שונה. חלקים רבים כבר מיושמים בדפדפנים, לדוגמא, אלמנט הקאנבאס,canvas, הנתמך ע"י הדפדפנים של Mozilla, Safari ו- Opera , יושם בהצלחה באתרים רבים המציגים פונקנציונליות מתקדמות.
W3C ו- HTML
איגוד ה- W3C אישרר קבוצת עבודה חדשה HTML Working Group, נפרדת מקבוצת העבודה עבור XHTML2. קבוצת העבודה העוסקת ב- HTML פתוחה לציבור באמצעות המכניזם של זימון מומחה. קשה בשלב זה לעמוד על טיבה של הסינרגיה בין קבוצת העבודה הזו עם שאר קבוצות העבודה של האיגוד, או עם ה- WHATWG. מנהלי הקבוצה החדשה הם Chris Wilson, ארכיטקט פלטפורמה המשתתף בקבוצת פיתוח של מיקרוסופט העוסקת באינטרנט אקפלורר, ו- Dan Connolly מאיגוד W3C.
ה- W3C כבר אימץ הרבה טכנולוגיות WAHTWG דרך ה- Rich Web Clients Activity המיועד לשפר את חווית צד הלקוח באינטרנט. קבוצת העבודה החדשה העוסקת ב- HTML תלויה בלפחות קבוצה אחת אחרת והיא WebAPI Working Group. בשל יחסי הגומלין עם הקבוצות האחרות, סביר להניח, שהמפרט בו ישתמשו כבסיס ל- HTML ול- XHTML יהיה HTML5, או לכל הפחות חלק ניכר מהעבודה שהשקיעו אנשי ה-WHATWG ב- HTML5.
תאימות XHTML2 למפתחים באינטרנט
בעיה קריטית בנושא היא העדר תמיכה בדפדפנים. דפדפן האקפלורר אינו מספק כלל תמיכה ראויה ל- XHTML וצצות בו בעיות חמורות כאשר XHTML מועבר כ- XML: קידוד שגוי של תווים, הכרה בתכנים חיצוניים, טיפול בתוכן כמחרוזות במקום כ- XML. במקרים רבים, המרת מסמך מפורמט HTML 4.01 או XHTML 1.0 ל- XHTML2 איננה ישירה: נדרשים שינויים במבנה המסמך, וכמובן, אף אחת מחברות הדפדפנים הגדולות אינה תומכת ב- XHTML2.
תאימות HTML5 למפתחים באינטרנט
המרת מסמך HTML 4.01 ל- HTML5, מאידך, הינה, ברוב המקרים, רק עניין של החלפת ה- DOCTYPE. במידה והמסמך אינו עושה שימוש באלמנטים חדשים, או ב- APIs המוצעים ע"י HTML5, אזי הדפדפן פשוט שולח את עיבוד המסמך אל ה- parser של ה- tag-soup.
עבור מרבית מערכות ניהול התוכן וכלי העריכה הקיימים, השינוי הנדרש בכדי ליצור מסמך ב- HTML5 , במקום HTML 4.01, הינו פשוט ולמעשה כל האלמנטים האופייניים של HTML5 ניתנים להוספה בנקל. יתרה מזאת, אף בדפדפנים שאינם תומכים HTML5, ניתן לבצע אמולציה ב- JavaScript למרבית התכונות החדשות, כך שאכן ניתן לבצע שינוי הדרגתי מ- HTML 4.01 ל- HTML5.
מסקנות
בעוד ש-XHTML2 הוא שיפור בסמנטיקה יחסית ל- XHTML 1.0. לא נראה סביר שתהיה לכך השפעה על מפתחי הווב לזמן ממושך, בפרט כאשר מתחשבים בכך שדפדפן האקפלורר עדיין לא תומך ב- XHTML 1.0. יעבור זמן ממושך, עד שתצא גרסה חדשה שאולי תתמוך גם ב- XHTML2, ואין כל אינדיקציה שהגרסה הבאה תעשה זאת.
מאידך, חלקים רבים של HTML5 מוצאים דרכם לדפדפנים. באם חברת מיקרוסופט תקח חלק פעיל בפיתוח HTML5, נוכל להנות מתמיכה ב- HTML5 בין דפדפנית (cross-browser) בזמן קצר יחסית. העובדה ש-HTML5 כולל תחומים מסוימים שכבר מוכנים ליישום בעוד שתחומים אחרים עדיין בשלבי פיתוח הופכת טכנולוגיה זו קלה לאימוץ הדרגתי, תוך שילוב תכונות חדשות בהתאם להתקדמות האפיון.
HTML5 יהיה עתיד רשת האינטרנט. עצתי: עקבו אחריו!
קריאה נוספת
- Tim Berners-Lee: Reinventing HTML, on the decision to create a new HTML WG
- Surfin' Safari: HTML Standards Process Returning from the Grave, some comments from Apple on the chartering of a new HTML WG
- Public archives of the [email protected] mailing list, the main method of communication in and with the HTML WG
- The WHATWG Mailing List, to contribute to the development of HTML5
- Issues for the HTML Working Group on the ESW Wiki
- XHTML.com: X/HTML 5 Versus XHTML 2
- XHTML.com: Conversation With X/HTML 5 Team
- XHTML.com: Conversation With XHTML 2 Team