נספח זה הוא נורמטיבי.
נספח זה מסכם את הנחיות העיצוב לכותבים המבקשים שמסמכי ה- XHTML שלהם ייוצגו על מפעילי-משתמשים קיימים מסוג HTML.
שימו לב שהוראות עיבוד מוצגות ע"י מפעילי-משתמשים מסוימים.
אך, יש גם לשים לב שכאשר הצהרת ה- XML אינה כלולה במסמך, מותר למסמך להשתמש רק בקידוד תווים מסוג ברירת מחדל: UTF-8 או UTF-16.
יש לכלול רווח לפני / ו- < באלמנטים ריקים למשל </ br>.
כמו כן, יש להשתמש בתחביר המינימלי של תגים עבור אלמנטים ריקים ( </ br> ) כי התחביר החלופי המותר על פי XML
( <br></br >) מניב תוצאות לא צפויות אצל מפעילי-משתשמים רבים.
צמצום אלמנטים ותוכן אלמנטים ריקים
בהינתן מופע ריק של אלמנט אשר מודל התוכן שלו הוא אינו EMPTY (למשל כותר או פסקה ריקים), אין להשתמש בצורה המצומצמת (למשל, השתמש ב- <p> </p> ולא </p>).
יש להשתמש בדפי סגנון וכתב חיצוניים, אם דף הסגנון שלך משתמש ב- > או & או <[[
או - -.
השתמש בכתב חיצוני אם הכתב שלך משתמש ב- > או & או <[[ או - -.
שים לב כי מותר לניתוח (XML( parsing להסיר את תוכן ההערות ללא כל הודעה.
לכן המנהג ההיסטורי של "הסתרת" דפי סגנון וכתב בתוך הערות על מנת ליצור תאימות לאחור, עלול לא להצליח ביישומים מבוססי XML.
מעברי שורה ( line breaks ) בתוך ערכי מאפיינים
הימנע ממעברי שורה ותווי רווח-לבן מרובים בתוך ערכי מאפיינים.
מפעילי-משתמשים מטפלים בהם בצורה לא עקבית.
אין לכלול יותר מאלמנט isindex אחד ב- head של המסמך.
אלמנט ה- isindex נחות יחסית לאלמנט ה- input ( כלומר יש עדיפות לאלמנט ה-input ).
השתמש בשני סוגי מאפיינים אלה כדי לפרט את שפת האלמנט.
יש עדיפות לערך של מאפיין xml:lang.
ב- XML, URI שמסתיים במזהה-מקטע בעל צורת "foo#", אינו מתייחס לאלמנטים בעלי מאפיין "foo"=name , אלא לאלמנטים בעלי מאפיין המוגדר כסוג ID, דהיינו מאפיין id שב- 4 HTML.
קליינטים רבים של HTML אינם תומכים בשימוש במאפיינים מסוג ID באופן זה, ולכן על מנת להבטיח תאימות מקסימלית קדימה ואחורה, ניתן להעניק ערכים זהים לשני מאפיינים אלה.
יתרה מכך, כיון שקבוצת הערכים החוקיים של המאפיינים מסוג ID קטנה בהרבה מזו עבור סוג CDATA, סוג המאפיין name שונה ל- NMTOKEN.
מאפיין זה מוגבל בכך שהוא יכול לקבל רק את אותם הערכים כמו סוג ID או כמו פרודוקצית Name ב- XML1.0.
למרבה הצער, לא ניתן להביע אילוץ זה ב- DTD של 1.0 XHTML.
בגלל השינוי הזה, יש לנקוט במשנה זהירות בעת המרת מסמכי HTML קיימים. הערכים של מאפיינים אלו חייבים להיות ערכים ייחודיים בתוך המסמך וכן להיות תקפים, וכל התייחסות למזהי-מקטעים אלו (הן פנימית והן חיצונית) חייבת להתעדכן, אם הערכים ישתנו במהלך ההמרה.
לבסוף, שימו לב ש- 1.0 XHTML הפך את מאפיין ה- name של a, applet, form, frame iframe, img, map לנחות, והוא יוסר מ- XHTML בגרסאות הבאות.
כדי לציין קידוד תווים במסמך, השתמש גם במפרט המאפיין המקודד בהצהרת xml ,למשל
<?"xml version="1.0" encoding="EUC-JP?> וגם בקביעה http-equi.
יש עדיפות לערך של המאפיין המקודד בהוראת עיבוד xml.
ישנם מפעילי HTML אשר אינם מסוגלים לפרש מאפיינים בוליאניים כשהם מופיעים בצורתם המלאה (הלא מצומצמת), כנדרש ע"י 1.0 XML.
שימו לב שבעיה זו אינה משפיעה על מפעילים העומדים בדרישות 4 HTML. מדובר במאפיינים הבאים:
campact, nowrap, ismap, declare, noshade, checked, disabled, readonly, multiple, selected, nonsize, defer.
מודל המסמך כאובייקט ( DOM ) ו- XHTML
המלצה רמה 1 של מודל המסמך כאובייקט ( DOM ) מגדיר ממשקים של מודל מסמכים כאובייקטים עבור XML ו- 4 HTML.
מודל המסמך כאובייקט ב- 4 HTML מגדיר כי שמות האלמנטים והמאפיינים של HTML יוחזרו באותיות גדולות. המודל ב- XML קובע ששמות האלמנטים והמאפיינים מוחזרים באותה אות (גדולה/קטנה) כפי שנכתבו.
ב- 1.0 XHTML, מאפיינים ואלמנטים מוגדרים באותיות קטנות.
ניתן לטפל בהבדל זה בשתי דרכים:
1. אפליקציות בהם הגישה למסמכי XHTML , המוגשים כסוג מדיה אינטרנט text/html , היא דרך ה- DOM, יכולות להשתמש ב- DOM של HTML ויכולות לסמוך על כך ששמות האלמנטים והמאפיינים יוחזרו, מממשקים אלו, באותיות גדולות.
2. גם אפליקצית שיכולות לגשת למסמכי XHTML המוגשים כסוגי מדיה אינטרנט text/xml או application/xml, יכולות להשתמש ב- DOM של XML.
האלמנטים והמאפיינים יוחזרו באותיות קטנות.
כמו כן, יתכן וישנם כמה אלמנטים של XHTML העשויים להופיע או לא להופיע בעץ האובייקטים כיוון שהם אופציונליים במודל התוכן (למשל אלמנט tbody בתוך table).
דבר זה קורה כי ב- 4 HTML, היו כמה אלמנטים שהיו מותרים לצמצום כך שאין להם תגי התחלה וסיום (תכונה של SGML). זה אינו אפשרי ב- XML.
XHTML אינה מחייבת כותבים להכניס אלמנטים חיצוניים, אלא היא הפכה את האלמנטים לאופציונליים. האפליקציות חייבות להתאים את עצמן לכך.
השימוש בסימן & בערכי מאפיינים
כאשר ערך של מאפיין מכיל &, הוא חייב להיות מבוטא כהתייחסות לישות תווית (למשל "&" ).
כאשר מאפיין href באלמנט a מתייחס לכתב CGI , המוכן לקבל פרמטרים, הרי שחייבים לבטא אותו כ- http://my.site.dom/cgi-bin/myscript.pl?class=guest &amp;name=user
ולא כ-
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.
דפי סגנון מדורגים (CSS) ו- XHTML
המלצה רמה 2 ל- CSS מגדירה תכונות סגנון החלות על עץ הניתוח ( parse tree ) של מסמך ה- HTML או XHTML.
הבדלים בניתוח יניבו תוצאות חזותיות או קוליות שונות, תלוי בסלקטורים שנבחרו לשימוש.
ההצעות הבאות יצמצמו תוצאה זו אצל מסמכים המוגשים, ללא שינוי, כשני סוגי מדיה:
1. דפי סגנון CSS ל- XHTML צריכים להשתמש בשמות אלמנטים ומאפיינים באותיות קטנות.
2. בטבלאות, מנתח של מפעיל HTML יקיש את אלמנט ה- tbody , אך מנתח של מפעיל XML לא יעשה זאת.
לכן יש להוסיף תמיד אלמנט tbody באופן מפורש, אם סלקטור ה- CSS מזכיר אותו.
3. במרחב השמות ב- XHTML, מפעילי-משתמשים אמורים לזהות מאפיין "id" כמאפיין מסוג ID.
לכן דפי סגנון אמורים להיות מסוגלים להמשיך להשתמש בתחביר סלקטור מקוצר "#" אפילו אם המפעיל אינו קורא את ה- DTD.
4. במרחב השמות ב- XHTML, מפעילים אמורים לזהות את מאפיין ה- "class".
לכן דפי סגנון אמורים להיות מסוגלים להמשיך להשתמש בתחביר הסלקטור המקוצר ".".
5. CSS מגדיר כללים שונים למסמכי HTML ו- XML.
יש לשים לב שכללי HTML חלים על מסמכי XHTML המוגשים כ- HTML.
כללי XML חלים על מסמכי XHTML המוגשים כ- XML.