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

«
«
«
«
«
«
«
«
«
«

ראשי  » XHTML »  הגדרה נורמטיבית

הגדרה נורמטיבית של XHTML

3.1 DTD:

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

3.1.1 DTD של XHTML

1.0 XHTML מגדיר שלושה סוגי מסמכי XML המתאימים לשלושת ה- DTD של 4.01 HTML:
1. קפדני (STRICT).
2. ביניים (TRANSITIONAL)
3. מסגרת (FRAMESET).
הגדרות DTD אלה דומות להגדרת DTD של 4.01 HTML, אך DTD של 1.0 XHTML מגביל יותר מ- DTDל-HTML, כי XML היא שפה מגבילה יותר מ- SGML.
STRICT:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

השימוש: כשרוצים שהתיוג המוצג יהיה נפרד ממבנה המסמך. אשר להשתמש ב- CSS
(Cascading Style Sheets - דפי סגנון מדורגים) למטרת ההצגה.

TRANSITIONAL:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
השימוש: כשרוצים שהתיוג ישובץ בתוך המסמך (למשל, לתמוך בדפדפנים שאינם עומדים בדרישות CSS).

FRAMESET:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
השימוש: כשמעוניינים במסמך המבוסס על מסגרות HTML.

פרטים נוספים אודות ה-DTD : נספח 1

 

3.2 מרחב השמות ( namespaces ב- XML)

יתכנו מקרים בהם יש אותם שמות אלמנטים למסמכי XML שונים.
הבעיה נוצרת כשמשלבים שמות אלמנטים ממסמכים שונים למסמך אחד.
למשל: אלמנט <title> עשוי להתייחס לכותר של ספר במסמך אחד, ולאדם, במסמך אחר. הבעיה תיווצר בהאחדת המידע משני המסמכים לתוך מסמך אחד.

XML NAMESPACES ( מרחב השמות של XML ) היא שיטה המאפשרת לאפיין שמות של אלמנטים ומאפיינים המופיעים במסמכי XML, ע"י שיוכם למרחבי השמות המזוהים ע"י כתובות URI. כך ניתן לשלב שמות אלמנטים ממסמכים שונים למסמך אחד ועדיין למנוע קונפליקט במקרים שהשמות זהים.
השיטה משתמשת בשמות מאופינים כדי למנוע קונפליקטים אפשריים בין אלמנטי XML בעלי שמות זהים, על ידי שיוך תחילית המזהה מרחב שמות מיועד עם - URI.

מרחב השמות של XHTML הוא http://www.w3.org/1999/xhtml

3.2.1 מסמכי XHTML עם מרחב השמות של XHTML

1.0 XHTML מפרטת שלושה מרחבי שמות של XML המתאימים לשלושת ה- DTD של 4.01 HTML:

עבור סוג המסמך הקפדני ( STRICT ) של XHTML 1.0 :
http://www.w3.org/TR/xhtml1/strict
עבור סוג מסמך הביניים ( TRANSITIONAL ) של XHTML 1.0 :
http://www.w3.org/TR/xhtml1/transitional
עבור סוג מסמך המסגרת ( FRAMESET ) של XHTML 1.0 :
http://www.w3.org/TR/xhtml1/frameset

מסמך 1.0 XHTML העשוי בקפדנות הוא מסמך המוגבל לתגים ומאפיינים ממרחב השמות של 1.0 XHTML.
מסמך העשוי בקפדנות הוא מסמך שזקוק רק לאפשרויות המתוארות במפרט זה כאפשרויות חובה.

מסמך כזה צריך לעמוד בכל הקריטריונים הבאים:
1. המסמך יתאים לאחד משלושת הגדרות ה- DTD, המופיעות נספח 1.
2. אלמנט השורש של המסמך חייב להיות < html>.
3. אלמנט השורש של המסמך חייב לציין מרחב שמות של 1.0 XHTML באמצעות מאפיין ה- xmlns.
4. חייבת להיות הצהרת DOCTYPE במסמך, לפני אלמנט השורש. אם קיימת הצהרה כזו, מספר הזיהוי הפומבי בהצהרה צריך להתייחס לאחד משלושת סוגי ה- DTD, המופיעים נספח 1, באמצעות ה- FPI המתאים.
ניתן לשנות את ה-FPI כדי שישקף מוסכמות של המערכת המקומית.

להלן דוגמא של מסמך XHTML 1.0 מינימלי :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
 <title>The Minimal XHTML 1.0 Document</title>
</head>
<body>
  <p>This is a minimal XHTML 1.0 document.</p>
</body>
</html>

דוגמא נוספת:
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html  
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
  <head> 
    <title>Virtual Library</title>
  </head>
  <body> 
    <p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p> 
  </body> 
</html>

שים לב כי בדוגמא זו, הצהרת XML כלולה. הצהרת XML כדוגמת זו אינה הכרחית בכל מסמכי XML.
אנו ממליצים לכל כותבי מסמכי XHTML לכלול הצהרות XML בכל המסמכים שלהם.
הצהרה כזו הכרחית רק כשקידוד התווים במסמך שונה מברירות המחדל UTF-8 או UTF-16.

3.2.2 מסמכי XHTML עם מרחבי שמות שאינם מ- XHTML

מרחב השמות של 1.0 XHTML ניתן לשימוש יחד עם מרחבי שמות אחרים של XML, למרות שמסמכים כאלה לא יהיו מסמכי 1.0 XHTML העשויים בקפדנות, כמו שהגדרנו לעיל.
בעתיד, W3C תיתן דגש לאופן הגדרת תאימות של מסמכים הכוללים מרחבי שמות מרובים.

להלן דוגמא של מסמך XHTML 1.0 עם מרחב שמות שאינו מ-XHTML.
הדוגמא מראה כיצד ניתן להשתמש ב- 1.0 XHTML יחד עם 1.01 MathML:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
  <title>A MathML Example</title>
</head> 
<body> 
  <p>The following is an example of MathML Content markup:</p>
  <math xmlns="http://www.w3.org/1998/Math/MathML">
    <apply><root/><ci>x</ci></apply>
  </math> 
</body> 
</html>
הנושא של מרחב השמות של XML עבור MathML טרם נהיה רשמי - מרחב השמות המוזכר לעיל הוא אחת מההצעות שהוצעו ע"י אנשי W3C.

דוגמא נוספת למסמך XHTML 1.0 עם מרחב שמות שאינו מ-XHTML:
SVG מאפשר הרחבות ע"י קליטת אלמנטים ממרחבי שמות זרים.
הדוגמא מראה כיצד ניתן לשבץ מסמך 1.0 XHTML בתוך מסמך SVG.

<?xml version="1.0" standalone="yes"?> 
<svg width="500" height="400" 
xmlns="http://www.w3.org/Graphics/SVG/SVG-20000802.dtd"> 
<defs>  
  <html:html
    xmlns:html="http://www.w3.org/Profiles/xhtml1-transitional">  
  <html:head> 
    <html:title>Sales By Department</html:title> 
  </html:head> 
  <html:body> 
    <html:table align="center" cellpadding="5" border="1"> 
    <html:tr><html:th>Department</html:th><html:h>
	Revenue</html:th><html:th>Profit</html:th></html:tr> 
    <html:tr><html:td>A</html:td><html:td>100</html:td>
	<html:td>5</html:td></html:tr>
    <html:tr><html:td>B</html:td><html:td>200</html:td>
	<html:td>15</html:td></html:tr> 
    </html:table>
    </html:body> 
  </html:html>
</defs> 
<desc>Sales By Department</desc>  
<g style="stroke: #000000">
  <line x1="10" x2="150" y1="150" y2="150" style="stroke: #000080"/> 
  <line x1="10" x2="10" y1="10" y2="150" style="stroke: #000080"/> 
  <text x="10" y="10" style="font-size:14;
    font-family: Tahoma">Profit</text> 
  <text x="10" y="165" style="font-size:14;
    font-family: Tahoma">0</text>
  <text x="150" y="165" style="font-size:14; font-family:
   Tahoma">Department</text>
  <rect style="fill: blue; stroke: red" x="40"
    y="125" width="20" height="25"/> 
  <text x="40" y="165" style="font-size:12; 
    font-family: Tahoma">Products</text> 
  <text x="40" y="120" style="font-size:12;
    font-family: Tahoma">5</text>
  <rect style="fill: blue; stroke: red"
    x="90" y="75" width="20" height="75"/> 
  <text x="90" y="165" style="font-size:12;
    font-family: Tahoma">Services</text> 
  <text x="90" y="70" style="font-size:12;
    font-family: Tahoma">15</text> 
</g> 
</svg> 
ועוד דוגמא אחת, ע"מ שתבין…

<?xml version="1.0" encoding="UTF-8"?> 
<!-- initially, the default namespace is "books" -->
<book xmlns='urn:loc.gov:books' 
    xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en"> 
  <title>Cheaper by the Dozen</title>
  <isbn:number>1568491379</isbn:number> 
  <notes> 
    <!-- make HTML the default namespace for a hypertext commentary --> 
    <p xmlns='http://www.w3.org/1999/xhtml'> 
        This is also available <a href="http://www.w3.org/">online</a>.
    </p> 
  </notes> 
</book>
 

3.3 תאימות של מפעילי משתמשים

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

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

3. כשמפעיל-משתמש מעבד מסמך XHTML כ- XML כללי, הוא יזהה רק את המאפיינים מסוג ID כמזהי-מקטעים (הכוונה למאפיין id ברוב האלמנטים של XHTML).

4. אם מפעיל-משתמש נתקל באלמנט לא מוכר, עליו להציג את תוכן האלמנט.

5. אם מפעיל-משתמש נתקל באלמנט לא מוכר, עליו להתעלם מכל מפרט האלמנט (ז"א המאפיין וערכו).

6. אם מפעיל-משתמש נתקל בערך מאפיין לא מוכר, עליו להשתמש בברירת המחדל של ערך המאפיין.

7. אם המפעיל-משתמש נתקל בהתייחסות לישות (שאינה אחת מהישויות שהוגדרו מראש), אשר המפעיל-משתמש לא עיבד שום הצהרה עבורה (מה שעשוי לקרות אם ההצהרה מצויה בתת-קבוצה חיצונית שהמפעיל-משתמש טרם קרא), יש להציג את ההתייחסות לישות כתווים אשר מרכיבים את ההתייחסות (החל ב- & ובסיום יש לרשום ;).

8. כאשר המפעיל-משתמש מציג תוכן: אם המפעיל-משתמש נתקל בתווים או בהתייחסויות לישויות שהן תווים, אשר מוכרים לו אך אינם ניתנים להצגה, על המפעיל-משתמש להציג את המסמך באופן שיהיה ברור למשתמש שהצגה רגילה לא התבצעה.

9. התווים להלן מוגדרים ב- XML כתווים בעלי "רווח לבן":
רווח (;0020X#&)
טאב (;0009X#&)
D000X#&;) enter)
A000X#&;) Line feed)
מעבד ה- XML מנרמל קודים שונים של סופי השורה לתו line-feed יחיד, אשר מועבר לאפליקציה.
בנוסף, מפעיל-משתמש XHTML חייב להתייחס גם לתווים הבאים כתווי רווח לבן :
C000X#&;) Form feed)
B000X#&;) Zero width space)
באותם אלמנטים בהם מאפיין 'xml:space' נקבע כ'preserve', על המפעיל-משתמש להשאיר את כל תווי הרווח הלבן כפי שהם (מלבד תווי רווח לבן אשר מתחילים ומסיימים, אותם יש להסיר).
במקרים אחרים, יש לטפל ברווח לבן לפי הכללים הבאים:
* יש להסיר את כל הרווחים הלבנים מסביב ל- block elements.
* יש להסיר הערות ואלה אינם משפיעים על הטיפול ברווחים לבנים.
יש להתייחס לתו רווח-לבן אחד משני צידי הערה כשני תווים של רווח לבן.
* יש להסיר את הרווח הלבן המוביל והמסיים בתוך block element.
* יש להפוך את תווי line- feed בתוך block element לרווח (אלא במקרים שבהם מאפיין xml:space מכוון
ל- 'preserve' ).
* יש לצמצם סדרה של רווחים לבנים לתו רווח לבן יחיד (אלא במקרים שבהם מאפיין xml:space מכוון ל- 'preserve' ).
* ביחס להצגה: המפעיל-משתמש חייב להציג את התוכן באופן שמתאים לשפה בה
נכתב התוכן.
בשפות אשר הכתב העיקרי הוא לטיני, משתמשים בדר"כ בתו הרווח של ASCII כדי לקודד גבולות דקדוקיים של מילים ורווחים לבנים טיפוגרפיים.
בשפות אשר הכתב הוא מסוג סנסקריט, תאילנדי וכו', ניתן לקודד גבולות דקדוקיים באמצעות תו 'ZW 'space אך אלה לא יוצגו בפלט כרווח לבן טיפוגרפי.
שפות הדומות לערבית יכולות לקודד רווח לבן טיפוגרפי באמצעות תו רווח, אך הן גם יכולות להשתמש בתו רווח ZW כדי להגדיר גבולות דקדוקיים (פנימיים) (מה שנראה לעין האנגלית, כמילים בערבית הן בעצם מספר מלים למשל kitAbuhum'=kitAbu-hum' - their book' ).
השפות בכתב סיני אינן מקודדות גבולות באופן הזה ואינן משתמשות ברווח לבן טיפוגרפי באופן כזה.

רווח לבן בערכי מאפיינים יעובד לפי XML.

3.3.1 נושאים של תאימות

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