קיבלתי רשות מג’ף אטווד, בעל הבלוג Coding Horror לתרגם את הפוסט המצוין שלו HTML Validation: Does It Matter?
אבל זה לא חייב להיות ככה. יש אמצעים ומנגנונים לתקף (validate) את ה-HTML דרך הולידטור הרשמי של W3C. השתעשעות עם הוולידטור מדגישה עד כמה מדיניות סלחנות ברירת המחדל הזאת חדרה לכלל הרשת. דניס פורבס הריץ כמה אתרים לאחרונה -כולל זה של coding horror – בולידטור , וכצפוי התוצאות גרועות:
FAIL – http://www.reddit.com – 36 errors as XHTML 1.0 Transitional. EDIT: Rechecked Reddit, and now it’s a PASS
FAIL – http://www.slashdot.org – 167 errors as HTML 4.01 Strict
FAIL – http://www.digg.com – 32 errors as XHTML 1.0 Transitional
FAIL – http://www.cnn.com – 40 errors as HTML 4.01 Transitional (inferred as no doctype was specified)
FAIL – http://www.microsoft.com – 193 errors as XHTML 1.0 Transitional
FAIL – http://www.google.com – 58 errors as HTML 4.01 Transitional
FAIL – http://www.flickr.com – 34 errors as HTML 4.01 Transitional
FAIL – http://ca.yahoo.com – 276 errors as HTML 4.01 Strict
FAIL – http://www.sourceforge.net – 65 errors as XHTML 1.0 Transitional
FAIL – http://www.joelonsoftware.com – 33 errors as XHTML 1.0 Strict
FAIL – http://www.stackoverflow.com – 58 errors as HTML 4.01 Strict
FAIL – http://www.dzone.com – 165 errors as XHTML 1.0 Transitional
FAIL – http://www.codinghorror.com/blog/ – 51 errors as HTML 4.01 Transitional
PASS – http://www.w3c.org – no errors as XHTML 1.0 Strict
PASS – http://www.linux.com – no errors as XHTML 1.0 Strict
PASS – http://www.wordpress.com – no errors as XHTML 1.0 Transitional
בקיצור, אנחנו חיים בעולם בלתי תקני. עד כדי כך שאתה מתחיל לשאול את עצמך אם ולידציה היא בכלל חשובה. כשאתם רואים את הלוגו הזה באתר, מה זה אומר לכם? איך זה ישפיע על החוויה שלכם באתר? כמפתחחים? כמשתמשים?
לאחרונה עברנו תהליך ולידציה של ה-HTML של StackOverflow. כמעט מיד פסלתי את הרעיון לעשות ולידציה כ-XHTML, כי אני מסכים לחלוטין עם James Bennett:
הסיבה הקצרה והפשוטה היא זו: XHTML לא מציע– לי — שום יתרון משכנע על פני HTML, אבל גם לו הציע, הוא היה מביא איתו גם מורכבות מוגברת וחוסר ודאות הגורמים לו להיות בלתי מושך בעיני.
כל העניין של ולידציית HTML מוטל בספק, אבל הולידציה כ-XHTML היא פשוט מזוכיזם. מומלצת רק לאנשים הנהנים מסבל. או מתכנתים. אני לא תמיד מצליח להבדיל.
בכל מקרה, עשינו ולידציה בפורמט השפוי יותר של HTML 4.01 strict, וגם אז אני לא בטוח שהזמן שהוצאנו על זה היה שווה. יש תחושה לגבי כל כך הרבה מחוקי הולידציה האלה שהם שרירותיים וחסרי משמעות. ומה שיותר גרוע, חלק מהם מזיקים ממש. למשל, זה אסור ב-HTML strict:
<a href="http://www.example.com/" target="_blank">foo</a>
כן, target, מאפיין בלתי מזיק לחלוטין של קישורים שתרצו לפתוח בחלון/חלונית חדש/ה, הוא איכשהו אסור ב-HTML 4.01 strict. ישנו מעקף מאושר רשמית, אבל הוא מיושם רק ע”י אופרה, כך שבפועל… אין מעקף.
כדי לציית לולידטור של HTML 4.01 strict, צריך למחוק את מאפיין ה-target ולהחליף אותו ב-JavaScript שעושה אותו דבר. אז מיד התחלתי לתהות: האם מישהו עושה ולידציה ל-JavaScript שלנו? מה עם ה-CSS? האם מישהו עשוה ולידציה למניפולציות ה-DOM שה- JavaScript מבצע ב-HTML של שלנו? מי עושה ולידציה לולידטור? למה אני מצליח להפסיק לחשוב על זברות?
האם זה באמת משנה אם נגיש את הדברים שלנו ככה…
<td width="80"> <br/>
… או ככה?
<td style="width:80px"> <br>
כלומר, מי ממציא את החוקים האלה? ולשם מה?
לא יכולתי להמנע מההרגשה שולידציה כ-HTML 4.01 strict, לפחות במקרה שלנו, היא תרגיל ענק בסמנטיקה, בתיבול שינויים מעצבנים שהוכרחנו לעשות בלי כל רווח מעשי (מה גם, שאם יש לך טונות של תוכן מיוצר ע”י משתמשים – כמו שלנו יש – אתה די יכול לזרוק את כל הפנטזיות על 100% ולידציה ישר דרך החלון).
עם זאת, יש לולידציה החן שלה. היו כמה דברים שתהליך הולידציה חשף בקוד ה-HTML שלנו שהיו באופן ברור מוטעים — תגית יתומה פה, וקצת חוסר עקביות באופן שיישמנו תגיות שם. מרק פילגרים מגן על הולידציה:
אני לא טוען שהדף שלך, ברגע שעובר ולידציה, יוגש ללא דופי בכל דפדפן; יתכן שלא. אני גם לא טוען שאין מעצבים מוכשרים היכולים ליצור דפי “מרק תגיות” בסגנון הישן שיעבדו ללא דופי בכל דפדפן; בהחלט ישנם. אבל הולידטור הוא כלי אוטומטי היכול להדגיש טעויות קטנות אך חשובות שקשה לעלות עליהן באופן ידני. אם אתם יוצרים קוד ולידי רוב הזמן, אתם יכולים לנצל את האוטומציה הזאת כדי לתפוס את הטעויות המקריות. אבל אם הקוד שלכם אפילו לא מתקרב להיות ולידי, אתם תטוסו בחשכה כשמשהו ישתבש. הולידטור ישפריץ עשרות או אפילו מאות שגיאות בדף שלכם, ולמצוא את זו שהיא הגורם לבעיה זה כמו למצוא מחת בערמה של שחת.
יש בזה מן האמת. לימוד של חוקי הולידציה, אפילו אם אתם לא מסכימים איתם, מלמד אתכם מהי ההגדרה הרשמית של “תקפות”. זה יבסס את הקוד שלכם במציאות. זה קצת כמו להעביר את קוד המקור שלכם דרך תוכנת ולידציה סופר-קפדנית כמו lint, או לאפיין את הקומפיילר שלכם לרמה המחמירה ביותר. ידיעת החוקים והגבולות מסייעת לכם להגדיר מה אתם עושים, ונותנת לכם תחמושת לגיטימית להסכמה או אי-הסכמה. אתם יכולים לבצע בחירה מושכלת, במקום הבחירה השרירותית של “אני פשוט עושה את זה וזה עובד”.
אחרי אקרובטיקת הולידציה של HTML שעשינו, הנה העצה שלי:
- בצעו ולידציה ל-HTML שלכם. דעו מה המשמעות של HTML ולידי. הבינו את הכלים. יותר אינפורמציה תמיד עדיפה על פחות. למה לעופף בחשכה?
- לאף אחד לא אכפת אם ה-HTML שלכם ולידי. מלבדכם. אם אתם רוצים. אל תחשבו לרגע שייצור HTML ולידי הוא יותר חשוב מאשר ניהול האתר שלכם, הגשת פיצ’רים המשמחים את המשתמשים, או ביצוע העבודה.
אבל השאלה בעינה עומדת: האם ולידציית HTML היא באמת חשובה? כן. לא. אולי. זה תלוי. אני אגיד לכם את אותו דבר שאבי נהג לומר לי: הקשיבו לעצתי, ועשו מה שבא לכם.
ברור שאני מתכוון להגיב פה 🙂
גם אני מודע לכך שאפשר להריץ את הולידאטור על כל מיני אתרים ולקבל שגיאות. מאוד שיטחי לדעתי. (הניסוי הזה שהו ביצע)
השאלה אילו שגיאות מקבילים. האם האתר אמור להציג רכיב משמעותי לשמישות של האתר שכאשר הוא כתוב באופן לא תקין… אז הוא לא מוצג. וזה עצוב ובעייתי מאוד.
אם רואים את המסגרת של טבלה בעובי 2 פיקסלים ולא 3 או מקווקו עם מרווחים או לא… נראה פחות חשוב. (בלי לזלזל)
בעיות משמעותיות בכתיבה תקנית אפשר למצוא:
בתפריט פה : http://www.ort.org.il/
או כמו הצגה של רכיבי פלאש (שהם מהות האתר) פה:http://ofek.cet.ac.il/
אין תצוגה של מולטימדיה ברוב אתרי החדשות של ישראל (ללא התערבות בקוד)
ואתרי בנקים (מסויימים) ואתרי ממשלה (שאני בטוח שאם הם היו תקניים כולם היו רואים אותם באופן חזותי שמיש לא רק משתמשי IE6 )
או אתר רשות שדות התעופה לא מראה טיסות יוצאות ונכנסות (נו באמת, הוספת שלוש שורות קוד, אותן אני מעלה עם הגרייזמונקי של שועל האש וזה עובד תקין. כל כך קשה? להוסיף את זה במקור ועוד אחרי מספר שנים שהם מודעים לנושא)
כתיבה תיקנית, בטווח הרחוק יכולה לחסוך המון באלאגן של כתיבה יעודית לכל מצב של חומרה/דפדפן/מערכת הפעלה. שזה בדיוק ההווה בו אנו חיים ורק מתקדמים לעבר עתיד יותר ויותר בעייתי מהבחינה הזו.
כאשר התוכניתנים סומכים על הדפדפן והדפדפן סומך על התוכניתנים שישנן מספר פקודות שהם כותבים אותן באופן ברור ותקני הן מייצרות את התצוגה החזותית המוסכמת… זה ממש נראה לי המהות של המחשב ושל תחום המדע בכלל. יראה לי יותר מוזר לחשוב שאני כותב פקודת html ולא ממש ברור לי איך היא תוצג בסופו של דבר.
וזה מייד מזכיר לי את השפה בה אנו מדברים. כדי לתקשר ולחיות ביחד בחברה יש לבסס מספר מילים עם משמעות ברורה (נקראה להם תקן השפה) ובילעדיהן לא נוכל לחיות ביחד. ואם לא מקפידים… החברה לאט לאט מתפרקת וגם האינטרנט יתפרק. יהיו משתמשי IE שרואים את האינטרנט שלהם ויהיו שאר המשתמשים שרואים את האינטרנט שלהם.
בכלל, תקנים זה בסיס לחברה. למי שרוצה להיות בחברה כמובן. אי הקפדה על תקים באופן קבוע ברמה סבירה (לא ברור לי אם אפשר מאה אחוז) תפרק את החברה/קבוצה/אינטרנט…
למזלינו, אנו משתמשים יותר ויותר בכלים אשר נכתבו על פי תקנים וגם IE9 הכריז זה עתה על יישור קו יותר משמעותי עם CSS3 ו HTML5 לקראת השקת גירסת הניסוי הקרובה שלו
מאוד מעודד 🙂
אגב, מעבד התמלילים המובנה הזה בו אני כותב את השורות הללו, אם הייתי משאיר את המלל שכתבתי עם כל המילים באנגלית מיושר כפי שהמעבד מאפשר בבררת המחדל שלו, כל התוכן לא היה ברור וקריא. ואף היה יכול להוביל לבילבול הקורא. אך לאחר ששיניתי את ה TAG P כך שיציג את הפסקאות עם עיצוב DIRECTION:rtl כל המלל הפך קריא ומובן. יכול להיות שב IE זה לא קורה. לא יודע?
🙂
בודאי שסטנדרטים הם חשובים
נראה לי שהבנת מהפוסט שכתיבה בסטנדרטים היא לא חשובה, אבל לדעתי זה בכלל לא המסר של הפוסט.
מה שאני לקחתי מהפוסט הוא שכדאי לכתוב HTML ולידי (ולו כדי שאפשר יהיה בעזרת הולידטור למצוא את אותן שגיאות קטנות אך משמעותיות שקורות לכולנו) אבל לא להשתעבד למולך (בחולם) של הולידטור.
לגבי אותם אתרים שתיארת – שלא ניתן לגלוש בהם בדפדפנים סטנדרטיים – יתכן שהמדיניות שם אינה מעודדת כתיבה סטנדרטית. הלא הם בודאי אינם זקוקים לולידטור כדי לדעת שיש להם בעיה…
טים אוריילי – סטנדרטים של שרותיי רשת
http://blogs.voxeo.com/speakingofstandards/2009/11/20/must-see-video-tim-oreillys-web-2-0-keynote-on-the-war-for-the-web/