ssi apache מפת האתר דף ראשי

«
«
«
«
«
«
«
«
«
«

ראשי  » XHTML  » תחביר XHTML לעומת HTML

תחביר XHTML לעומת תחביר HTML

יחידה זו מתארת את ההבדלים בין תחביר ה-HTML ותחביר ה-XHTML 1.0.
רוב ההבדלים נובעים מהעובדה ש- 1.0 XHTML היא אפליקציה של XML, וע"כ יש צורך לשנות יישומיים מסוימים, שחוקיים ב- 4.01 HTML, המבוסס על SGML.
בכל מקום שהדבר רלוונטי, נוסיף הצעות בהתאם להנחיות HTML לתאימות, בנושא הבטחת תאימות.

4.1 מסמכים חייבים להיות מעוצבים היטב

"מעוצב-היטב" הינו מושג חדש שהוכנס לשימוש ע"י XML.
מסמך ייחשב מעוצב היטב כשהוא נבנה על פי הכללים המוגדרים במפרט 1.0 XML.
מסמך 1.0 XHTML חייב להיות מעוצב היטב.
באופן בסיסי, האלמנטים, המוגדרים על פי תגי ההתחלה והסיום שלהם, צריכים להיות מקוננים אחד בתוך השני היטב.
למרות שהחפיפה ( אי קינון ) היא לא חוקית ב-SGML, רוב הדפדפנים הקיימים מוכנים לקבלה.

CORRECT: nested elements.
<p>here is an emphasized <em>paragraph</em>.</p>

INCORRECT: overlapping elements
<p>here is an emphasized <em>paragraph.</p<>/em>
דוגמא נוספת:

ב- HTML נכתוב כך :
<p>This is <b>bold.</p></b> 
ב- XHTML נכתוב כך :
 <p>This is <b>bold.</b></p>

 

4.2 שמות של אלמנטים ומאפיינים חייבים להיכתב באותיות קטנות

כיוון ש- XML רגיש לאותיות קטנות/ גדולות (CASE-SENSITIVE), ז"א <li> ו- <LI> הם תגים שונים, כל שמות המאפיינים והאלמנטים חייבים להיות באותיות קטנות.

לדוגמא:

ב- HTML נכתוב כך :
<BODY BGCOLOR="#ffffff">
ב- XHTML נכתוב כך :
<body bgcolor="#ffffff">

אך ערכים של מאפיינים שהוגדרו ע"י המשתמש יכולים להופיע באותיות קטנות או גדולות. למשל "ffffff#" יכול להיכתב גם כ "FFFFFF#".

במטרה להעביר מסמכים קיימים ב- HTML ל- 1.0 XHTML, ניתן להשתמש
ב- Kit- HTML כדי לשנות את האותיות ( מקטנות לגדולות, ולהיפך ) של שמות המאפיינים והאלמנטים במסמך.

להלן מסמך דוגמא -לפני ו ואחרי המרת האותיות מ-HTML ל-XHTML.

כמו כן ניתן להשתמש ביכולות של התאמת תבניות ( pattern matching ) של Perl כדי לשנות את האותיות. היתרון בפתרון זה הוא שהפעולה תתבצע על קבוצה שלמה של מסמכי HTML וניתן יהיה להעבירה על פני פלטפורמות אשר עליהן מותקנת Perl.
אך, יתכן שהפתרון הכללי אשר משנה את אותיות שמות המאפיינים והאלמנטים תוך התעלמות מערכי המאפיינים, עלול להיות לא-טריוויאלי.

 

4.3 דרושים תגי סיום לאלמנטים לא-ריקים

לאלמנט לא ריק אין EMPTY במודל התוכן שלו.
ב- 4 HTML, היה מותר שאלמנטים מסוימים יופיעו ללא תג התחלה ותג סיום.
לדוגמא - לאלמנט "head" תגי ההתחלה והסיום אופציונליים. לעומת זאת לאלמנט "'p" תג הסיום הוא אופציונלי ולאלמנט
"title" תגי ההתחלה והסיום נדרשים.
דבר זה אסור ב- XML.
ב-XML תגי ההתחלה והסיום נדרשים עבור כל אלמנט לא ריק.
ב-XHTML לכל האלמנטים, מלבד אלה המוגדרים כריקים (EMPTY) ב- DTD, חייב להיות תג סיום.

CORRECT: terminated elements
<p>here is a paragraph.</p><p>here is another paragraph.</p>
INCORRECT: unterminated elements
<p>here is a paragraph.<p>here is another paragraph.

יש להציג אלמנטים לא-ריקים בעלי תוכן ריק, לדוגמא, פסקה ריקה ( בלי תוכן ) תוצג כ- <p&t;</p> ולא כ- <p /> .

 

4.4 ערכי מאפיינים

יש לשים במרכאות את כל ערכי המאפיינים, כולל ערכים נומריים (במרכאות רגילות או כפולות).
CORRECT: quoted attribute values
<table rows="3">
INCORRECT: unquoted attribute values
<table rows=3>
דוגמא נוספת:

ב- HTML נכתוב כך :
<table border=1>
ב- XTML נכתוב כך :
<table border="1">

כלל זה דורש התאמות מסוימות בנהלי יצירה דינמית של HTML.
אם משתמשים במרכאות כפולות, למשל במקרה של Perl, נצטרך לשנות את:
"print "<table border = 1>\n ל:
"print "<table border = \"1\">\n


 

4.5 צמצום מאפיינים

אנו אומרים שמאפיין מצומצם אם קיים עבורו ערך אחד בלבד.
למשל, באלמנט הצורה <input type = "checkbox"...checked>, המאפיין שנבדק צומצם.
XML אינו תומך בצמצום מאפיינים.
ב- 1.0 XHTML, אי אפשר לצמצם זוגות של ערך-מאפיין וחייבים לכתוב אותם בצורה מלאה (כאילו היו להם ערכים).

שמות של מאפיינים כגון compact ו- checked אינם יכולים להופיע באלמנטים מבלי שערכם מפורט.

CORRECT: unminimized attributes
<dl compact="compact"<
INCORRECT: minimized attributes
<dl compact>

דוגמא נוספת:

ב- HTML נכתוב כך :
<input type="checkbox" ... checked>
ב- XHTML נכתוב כך :
<input type="checkbox" ... checked="checked" />

 

4.6 אלמנטים ריקים

אלמנטים ריקים חייבים לכלול תג סיום, או שתג ההתחלה שלהם יסתיים ב- </. (מה שלעיתים מכונה אלמנט המסתיים מעצמו).

לדוגמא :

CORRECT: terminated empty tags
<br/><hr/>
INCORRECT: unterminated empty tags
<br><hr>

דוגמא נוספת:

ב- HTML נכתוב כך :
<hr>
ב- XHTML נכתוב כך :
<hr /> or <hr></hr>

יש צורך לשים לב לרווח בין טקסט האלמנט לבין ה- </.
יש העדפה ל- </ hr> על פני <hr/><hr> , כי האחרון מניב תוצאות לא צפויות במפעילי משתמשים מסוימים.
התג </ hr> מכונה גם תחביר תג ממוזער.

בדוק "הנחיות תאימות של HTML" - נספח 3 , כדי לראות שתוספת זו אינה פוגעת בתאימות-לאחור עם מפעילי-משתמשים ב- HTML4.

 

4.7 טפול ברווח-לבן בערכי מאפיינים

תווים היוצרים רווח לבן, כגון מעבר לשורה הבאה, זוכים לטיפול שונה ע"י מפעילי משתמשים שונים.
כשרווח לבן מופיע בערכי מאפיינים, כלי המשתמש מסירים את הרווח הלבן הראשון והאחרון, והם ימפו קבוצות של תווי רווח-לבן (כולל line breaks) לרווח בין-מילים יחיד (תו רווח ASCII אחד, בכתבים מערביים).

ע"כ, יש להימנע מכל פעולה של מעבר לשורה הבאה או ריבוי תווים לבנים בתוך ערכי מאפיינים.

 

4.8 אלמנטים של כתב וסגנון

המטרה העיקרית של קטעי CDATA היא להתעלם מתווים אשר אחרת יזוהו כתיוג.
התוחם היחיד שמזוהה ב- CDATA הוא המחרוזת " < [ [ " אשר מסיימת את קטע ה- CDATA.
ב- XHTML, מצהירים על אלמנטים של כתב וסגנון כבעלי תוכן PCDATA#.
כתוצאה מכך > ו- & יטופלו כהתחלה של תיוג, וישויות כגון < ו-& יזוהו ע"י מעבד ה- XML כ-.> ו-& בהתאמה.
גם השימוש ב- & וב- < [ [ בתוך דפי סגנון וכתב יגרמו לבלבול. לכן, את תוכן אלמנט הכתב או הסגנון, יש לעטוף בתוך קטע CDATAמסומן, וזאת כדי למנוע פרשנות לא נכונה.
עטיפת תוכן אלמנט הכתב או הסגנון בתוך קטע המסומן CDATA, מונעת את הרחבת הישויות הללו.

<script>
 <![CDATA[
 ... unescaped script content ...
 ]]>
</script>


מעבד ה- XML מזהה קטעי CDATA ואלו מופיעים כ"צמתים" במודל המסמך כאובייקט (Document Object Model). ראה פרק 3.1 בהמלצות DOM

דוגמא נוספת:

ב- HTML נכתוב כך :
<script type="text/javascript">
... script content ...
</script>
ב- XHTML נכתוב כך :
<script type="text/javascript">
<![CDATA[
... script content ...
]]>
</script>

הנ"ל חל רק כאשר מוסיפים קטע קוד בתוך האלמנטים, ואינו חל במקרים של התייחסויות חיצוניות לדפי סגנון וכתב.
למשל: <script language="JavaScript" src="foo.js"></script>
</ "link rel="stylesheet" href="bar.css" type="text/css >

חלופה אחרת לשימוש במעטפת CDATA היא שימוש בדפי כתב וסגנון חיצוניים.

 

4.9 חריגי SGML

SGML מאפשר לכותב DTD לקבוע שאלמנטים ספציפיים לא ייכללו בתוך אלמנט.
חריגים כאלה אינם אפשריים ב- XML.

למשל DTD קפדני של HTML4 אוסר על קינון של אלמנט 'a' בתוך אלמנט 'a' אחר, בכל עומק של הקינון. אי אפשר לפרט איסורים כאלה ב- XML.
אף על פי שאי אפשר להגדיר איסורים אלה ב- DTD, ישנם אלמנטים מסוימים אשר אין לקונן אותם. סיכום של אלמנטים כאלה מופיע בנספח 2 הנורמטיבי.

 

4.10 אלמנטים בעלי מאפיין 'id' ו- 'name':

4.0 HTML הגדיר את מאפיין name לאלמנטים מסוימים ( a ,img, iframe, frame, applet ו- map) וכן הכניס לשימוש את מאפיין ה- id.
שני מאפיינים אלה מיועדים לשמש כמזהי מקטעים.
ב- XML, מזהי מקטעים הם מסוג ID ולכל אלמנט יכול להיות מאפיין אחד מסוג ID.
ולכן ב- 1.0 XHTML, מאפיין id מוגדר כסוג ID.
כדי להבטיח שמסמכי 1.0 XHTMLהם מסמכים הבנויים היטב מבחינת XML,
מסמכי 1.0 XTML חייבים להשתמש במאפיין id בהגדרת מזהי המקטעים, אפילו כשמדובר באלמנטים אשר בעבר היו בעלי מאפיין name.

ראה "הנחיות תאימות HTML" - נספח 3 , על מנת להבטיח תאימות אחורנית כשמסמכי XHTML הם מסוג text/html.
שימו לב שב- 1.0 XHTML, מאפיין ה- name של אלמנטים אלה מצטמצם באופן רשמי, והוא יוסר בגרסה עתידית של XHTML.

 

4.11 סוג המדיה באינטרנט

טרם גובשה המלצה כללית לקביעת תווית MIME לאפליקציות המבוססות על XML.
אך, ניתן לתייג בסוג המדיה האינטרנטי "text/html " את מסמכי XHTML אשר עומדים בהנחיות המפורטות נספח 3 , כיוון שהם מתאימים לרוב הדפדפנים.
אין אנו מציגים כאן שום המלצה בעניין תוויות MIME למסמכי XHTML אחרים.

 

4.12 הוראות עיבוד

כמו שאמרנו לעיל, הצהרת XML כגון < ?"xml version="1.0"encoding= "UTF-8?>
אינה דרושה בכל מסמכי 1.0 XHTML, אך הצהרה זו דרושה כשצורת קידוד המסמך אינה ברירת המחדל UTF-8
או 16-UTF.
ע"כ כדאי להתרגל להשתמש בהצהרות XML כמו זו לעיל, בכל מסמכי 1.0 XHTML.

 

4.13 הצהרת DOCTYPE

מטרת הצהרת DOCTYPE היא להצהיר שהמסמך עומד בהגדרות DTD מסוים.
במסמך 1.0 XHTML, חייבת להופיע הצהרת DOCTYPE לפני תג ה- < html> וחייבת להתייחס לאחד משלושת הגדרות ה- DTD של 1.0 XHTML.

 

4.14 שפת האלמנטים

את שפת האלמנטים מפרטים ע"י שימוש במאפייני lang ו- xml:lang.
הערך של מאפיין xml:lang הוא בעל עדיפות גבוהה יותר.

 

4.15 אלמנט השורש

אלמנט השורש במסמך 1.0 XHTML חייב להיות < html> וחייב להגדיר מרחב שמות של 1.0 XHTML.

 

4.16 אלמנטים נדרשים

1. חובה שיופיע אלמנט <head> ואלמנט <body>.
2. אלמנט ה- <title> חייב להיות האלמנט הראשון באלמנט ה- <head>.

 

4.17 אלמנטים צורניים

אנו נעדיף את אלמנט input על פני אלמנט isindex. אך, אם משתמשים באלמנט isindex, לא ייכלל יותר מאלמנט אחד כזה ב- head של המסמך.

 

4.18 קבוצות ישויות

קבוצות הישויות ב- 1.0 XHTML זהות לקבוצות הישויות ב- 4.01 HTML, אך עברו שינוי כדי שתהיינה הצהרות ישויות תקפות של 1.0 XML.