איך לאמת xhtml?
כיצד לאמת XHTML פירושו לבדוק שמסמך תואם לשתי שכבות של כללים: תחביר XML וה-DTD או הסכימה המוצהרת שלו. XHTML 1.0 הוא ניסוח מחדש של HTML 4.01 ב-XML, כך שמסמך יכול להיות מעוצב היטב אך לא חוקי, כמו כאשר <a target="_blank"> מופיע ב-XHTML 1.0 Strict.
אימות XHTML הוא בדיקה שמסמך תואם בו-זמנית לשתי שכבות של כללים:
- חוקי תחביר XML: תגיות מקוננות כהלכה, תכונות במרכאות, סגירה חובה של כל האלמנטים (כולל ריקים כמו
<br />), אלמנט שורש בודד, קידוד מוצהר עקבי וכו’. - חוקי DTD או סכמה מוצהרת: אילו אלמנטים ותכונות קיימים, באיזה הקשר הם יכולים להופיע ואילו ערכים מותרים. הנה ה-DTDs הקלאסיים של XHTML 1.0 (Strict, Transitional, Frameset), XHTML 1.1, XHTML Basic ו-XHTML Modularization.
מסמך יכול להיות XML מעוצב היטב ועדיין לא חוקי: לדוגמה, אם אתה משתמש ב-` ב-XHTML 1.0 Strict, התחביר הוא ללא דופי אך תכונת ה-target לא קיימת באותו DTD. ההבחנה הזו בין מעוצב היטב לתקף היא הסיבה מספר אחת לבלבול כשמישהו רואה שגיאה ואינו מבין מדוע.
זה גם נוח לזכור ש-XHTML 1.0 הוא ניסוח מחדש של HTML 4.01 ב-XML, המוגדר על ידי W3C. כיום, הערך המעשי שלו כפול: הוא משמש עבור פרויקטים מדור קודם שעדיין משמשים כ-application/xhtml+xml או text/html, והוא משמש דיסציפלינה מחשבתית לכתיבת סימון נקי. אם אתה רוצה את ההקשר הנורמטיבי המלא כיצד לאמת XHTML, especificación de XHTML 1.0 del W3C הוא המקור העיקרי.
מאמתיות ששווה להשתמש בהן (ומתי להשתמש בכל אחת)
אין מאמת “נכון” אחד. הבחירה תלויה אם אתה מאמת פרגמנט, דף ייצור, אתר שלם או מסמך שהוא כבר XHTML5.
| Herramienta | Qué valida | אידיאלי עבור | מגבלה עיקרית |
|---|---|---|---|
| W3C Markup Validation Service (validator.w3.org) | XHTML 1.0/1.1, HTML4, HTML5 | אימות נקודתי לפי URL, קובץ או הדבקה ישירה | ה-Nu HTML Checker המודרני נותן עדיפות ל-HTML5; DTDs ישנים דורשים בחירה ידנית |
| Nu Html Checker (vnu) | HTML5 ו-XHTML5 | פרויקטים חדשים, אימות מקומי וב-CI | אינו מאמת DTDs קלאסיים של XHTML 1.x |
| מאמתיות מקומיות (vnu.jar, tidy) | בהתאם להגדרה | אוטומטיזציה, התחייבות מראש, צינורות | דורש התקנת Java או קבצי בינאריים; הגדרה ראשונית |
| xmllint | תקינות מבנית (Well-formedness) של XML ואימות מול DTD/XSD | בדיקת שכבת XML טהורה | אינו מכיר כללי HTML ספציפיים מעבר לסכימה |
| תוספי דפדפן / IDE | סימון בזמן אמת | משוב מיידי בזמן הכתיבה | בדרך כלל משתמשים במנועים לא מעודכנים או חלקיים |
El W3C Markup Validation Service
זו נותרה נקודת המוצא עבור אלה שתוהים כיצד לאמת XHTML. הוא תומך בשלושה מצבים: אמת על ידי URI, אמת על ידי העלאת קבצים ואימות על ידי קלט ישיר. עבור XHTML קלאסי, הטריק נמצא בתפריט הנפתח סוג מסמך: אם המסמך שלך מצהיר על DTD משלו באמצעות ‘DOCTYPE’, המאמת מכבד אותו; אם לא, אתה צריך לאלץ אותו ידנית.
קשורים: — עם תוכנית חינם עבור empezar hoy mismo.
פרט שרבים לא מודעים אליו: אימות ה-W3C המודרני מסתמך על Nu Html Checker, שמבין HTML5 ו-XHTML5 אך מתייחס ל-DTDs ישנים בפחות עדיפות. עבור XHTML 1.0 Strict זה עדיין עובד, אבל רצוי לוודא שהתוצאה משקפת את ה-DTD לו אתה מצפה ולא פרשנות רופסת.
Nu Html Checker (vnu)
זהו האימות שבו משתמש ה-W3C עצמו באופן פנימי. הוא קיים כשירות אינטרנט, כקובץ הפעלה של JAR וכתמונת Docker. היתרון הגדול שלו הוא שאתה יכול להפעיל אותו באופן מקומי ובאינטגרציה מתמשכת, דבר חיוני אם אתה מתחזק אתר גדול. עבור XHTML המוגש בתור application/xhtml+xml, vnu מזהה שגיאות קינון ותכונות שמאמת HTML סובלני יאפשר לעבור.
xmllint
אם הדאגה שלך היא שכבת ה-XML הטהורה - למשל, בגלל שאתה יוצר XHTML מתבניות XSLT - אז אין תחליף ל-‘xmllint’. עם --noout --valid documento.xhtml הוא בודק צורה טובה ותקפות מול ה-DTD אליו מתייחסים. זה מהיר, ניתן לתסריט ואינו תלוי ברשת.
שווה להסתכל: — גישה לתנועה: משולבת אוטומטית עם רוויזיון אנושי.
אימות בעורך
הרחבות לקוד VS, תוספים של IDE וכלי שורת פקודה מציעים משוב מיידי. הם נוחים, אבל נוטים לפגר בסטנדרטים. השתמש בהם כקו הגנה ראשון, לעולם לא כאימות הבלעדי.
כיצד לאמת XHTML צעד אחר צעד
1. הצהרה נכונה על ה-DOCTYPE והקידוד
ה-DOCTYPE קובע לפי אילו כללים הוא מאומת. עבור XHTML 1.0 Strict:
<!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="es" lang="es">
<head>
<meta http-equiv="Content-Type"
content="application/xhtml+xml; charset=UTF-8" />
<title>דוגמה תקפה</title>
</head>
שתי שגיאות קלאסיות כאן: שכחת התכונה xmlns (חובה ב-XHTML) והכרזה על קידוד ב-meta שאינו עולה בקנה אחד עם הקובץ בפועל. האימות מזהה את שניהם, אבל השני לפעמים מופיע רק כתווים פגומים.
2. בדיקת תקינות מבנית (well-formedness) לפני התקפות
לפני שנלחם עם ה-DTD, ודא שה-XML מעוצב היטב. xmllint --noout archivo.xhtml יגיד לך תוך שניות. אם זה נכשל כאן, שום מאמת DTD לא יעזור לך: תחילה סגור תגים, תקן את הקינון ובצע בריחה לישויות (&, <, >).
3. אימות מול ה-DTD
עם המסמך המעוצב היטב, העבר אותו דרך ה-W3C Validator או vnu. סקור לא רק כמה שגיאות יש, אלא מאיזה סוג. שגיאת קינון בודדת יכולה ליצור מפל של שגיאות משניות שנעלמות עם תיקון הראשונה.
4. אימות האתר כולו, לא רק דף הבית
טעות נפוצה היא לאמת את העמוד הראשי ולהניח שהשאר טוב. תבניות, רכיבים ודפים שנוצרו באופן דינמי מציגים לעתים קרובות סימון לא חוקי. אוטומציה: חצו את כתובות ה-URL הראשיות עם סקריפט והפעל את vnu על כל תגובה.
קשורים: — La certificación profesional que acredita tu experiencia en accesibilidad.
5. שילוב האימות בתהליך העבודה
אימות ידני אינו ניתן להרחבה (scale). הוסף שלב אימות בצינור שלך (התחייבות מראש, משימת בנייה או עבודת CI) שנכשל אם מופיעה שגיאה חדשה. בדרך זו, סימון לא חוקי לעולם לא מגיע לייצור.
פירוש השגיאות: אלו שתראו שוב ושוב
- “תג סיום עבור X הושמט, אך אין תגי קצה OMITTED מותרים”: אופייני ל-
,או` ללא סגירה. ב-XHTML הכל חייב להיות סגור.- “אין תכונה X”: התכונה לא קיימת ב-DTD שלך. מקרים רגילים:
target,שםבחלק מהאלמנטים, תכונותdata-*ב-XHTML 1.0 (לא ב-DTD הקלאסי). - “element X undefined”: משתמש ברכיב שה-DTD שלך אינו מחשיב, לעתים קרובות מהעתקת סימון HTML5 למסמך XHTML 1.0.
- “נתוני תווים לא מותרים כאן”: תוכן טקסט שבו ה-DTD מצפה רק לאלמנטים, או
&מבלי לברוח. - “הפניה לישות X שעבורה לא ניתן היה ליצור מזהה מערכת”: ישויות HTML בשם שאינן מוגדרות ב-XML (לדוגמה
ללא הצהרת). ב-XHTML טהור השתמש ב-או הכריז על הישות.
כלל הזהב כיצד לאמת xhtml: תקן מלמעלה למטה. השגיאה הראשונה היא בדרך כלל הסיבה; להלן תוצאותיו.
XHTML5: הניואנס שמשנה את הכללים
אם אתה מגיש XHTML5 —XHTML סריאליזציה לפי תחביר HTML5—, הכללים משתנים. אין עוד DTD: התאמה מוגדרת במפרט WHATWG HTML ובמפרט W3C על HTML. האימות הנכון הוא Nu Html Checker, לא מאמת ה-DTD הקלאסי.
הבדלים מעשיים שכדאי לשים לב אליהם לגבי אופן אימות xhtml:
- המאפיינים
data-*תקפים ב-XHTML5, לא ב-XHTML 1.0. - ה-DOCTYPE מפושט ל-`.
- האימות נעשה מול בודק ההתאמה של HTML5, שמותר יותר בחלק מהנקודות ומחמיר יותר באחרות (למשל, בשימוש באלמנטים מיושנים מסוימים).
הבחירה בין XHTML 1.0 ל-XHTML5 היא לא רק טכנית: אם הפרויקט שלך חדש, XHTML5 עם אימות vnu הוא הנתיב ההגיוני. אם אתה מתחזק מערכת מדור קודם עם DTD, הישאר ב-XHTML 1.0 ותאמת כנגד ה-DTD שלה.
אימות ונגישות: שתי שכבות נפרדות
שגיאה נפוצה היא האמונה שמסמך חוקי נגיש אוטומטית. זה לא. אימות בודק את התחביר והתאמת הסכימה; הנגישות מוערכת מול WCAG del W3C, המכסה תפיסות, תפעול ותאימות עם טכנולוגיות מסייעות.
עם זאת, יש חפיפה אמיתית: סימון לא חוקי מרמז בדרך כלל על מבנה לקוי (כותרות מקוננות בצורה גרועה, רשימות שבורות, טפסים ללא תוויות נכונות), וזה כן משפיע על הנגישות. האסטרטגיה ההגיונית לאימות XHTML ומסמכים אחרים היא לאמת תחילה (לחסל רעש מבני) ולבדוק נגישות לאחר עם כלים כמו axe, Lighthouse או ביקורות ידניות. אימות הוא תנאי הכרחי, אך אינו מספיק.
טעויות נפוצות בעת אימות XHTML
כשאתה לומד כיצד לאמת XHTML, הימנע מהטעויות הנפוצות הבאות:
- אמת רק את הבית. הסימון הבעייתי הוא בדרך כלל על תבניות פנימיות.
- התעלם מקידוד. ‘charset’ המוצהר בצורה גרועה מייצר שגיאות רפאים.
- בלבל בצורת היטב עם תקף. הם שכבות נפרדות; לפתור אותם לפי הסדר.
- השתמש במאמת שגוי. vnu עבור XHTML5, DTD עבור XHTML 1.x.
- תקן שגיאות מדורגות מבלי לקרוא את הראשונה. אתה מבזבז זמן ומתקן תסמינים.
- ללא אוטומציה. אימות ידני לא שורד את הספרינט השני.
- בהנחה שתקף = נגיש. הם תקנים שונים עם מטרות שונות.
נקודות חשובות
- אימות XHTML כרוך בשתי שכבות: תקינות מבנית של XML (well-formedness) וציות ל-DTD או לסכימה המוצהרת.
- שירות W3C Markup Validation ו-Nu Html Checker (vnu) הם כלי העזר לאימות xhtml;
xmllintמכסה את שכבת ה-XML הטהורה. - עבור XHTML 1.0/1.1, השתמש באימות נגד DTD; עבור XHTML5, השתמש ב-vnu ושכח את ה-DTDs הקלאסיים.
- תקן את השגיאות מלמעלה למטה: הראשונה בדרך כלל גורמת לשגיאות הבאות.
- אוטומט את האימות בצינור שלך; סקירה ידנית אינה משתנה.
- תוקף אינו שם נרדף לנגיש: הם תקנים משלימים, לא מקבילים.
מקורות וקריאה נוספת
- XHTML — ויקיפדיה: שפת סימון HyperText הרחבה (XHTML) היא חלק ממשפחת שפות הסימון ב-XML אשר משקפות או מרחיבות גרסאות של ה-HyperText Markup בשימוש נרחב…
- XHTML Basic — ויקיפדיה: XHTML Basic היא שפת סימון מבוססת XML המיועדת לסוכני משתמשים פשוטים עם כוח מחשוב מוגבל, כגון טלפונים ניידים מוקדמים, מחשבי כף יד, זימונים וממירים…
שאלות נפוצות
מה ההבדל בין XHTML מעוצב היטב (well-formed) ל-XHTML תקף (valid)?
מסמך מעוצב היטב עוקב אחר הכללים התחביריים של XML: תגים סגורים, קינון נכון ותכונות במירכאות. בנוסף, מסמך חוקי מכבד את ה-DTD או הסכימה שהוא מצהיר: רק באמצעות אלמנטים ותכונות המותרים בהקשר שלו. ייתכן שיש לך מסמך מעוצב היטב אך לא חוקי, למשל אם אתה משתמש בתכונה שאינה קיימת ב-XHTML 1.0 Strict.
האם עדיין יש היגיון באימות XHTML בשנת 2024?
כן, משתי סיבות. ראשית, פרויקטים מדור קודם ממשיכים לשרת XHTML וצריכים להישאר תקפים כדי לא להישבר במצב XML. שנית, אימות הוא דיסציפלינה שמזהה שגיאות מבניות המשפיעות על הנגישות והתחזוקה. אם הפרויקט שלך חדש, כנראה שהוא משתמש ב-HTML5 או XHTML5, אבל ההרגל לאמת עדיין נשאר בעל ערך.
באיזה מאמת עליי להשתמש עבור XHTML5?
Nu Html Checker (vnu), זמין כשירות אינטרנט, JAR להפעלה ותמונת Docker. זהו אותו מנוע ש-W3C Markup Validation Service המודרני משתמש בו ומבין את תחביר HTML5 ואת הסדרת ה-XHTML שלו. אל תשתמש במאמתי DTD קלאסיים עבור XHTML5: הם לא יזהו תכונות data-* או תכונות HTML5 אחרות.
מדוע המאמת של W3C נותן לי שגיאות שאני לא מבין?
כי שגיאות רבות הן תוצאה של שגיאה קודמת. קינון שגוי יכול ליצור עשרות הודעות משניות. האסטרטגיה הנכונה היא לתקן את השגיאה הראשונה, לאמת שוב ולחזור. קורה גם שהמאמת מיישם את ה-DTD המוצהר ב-DOCTYPE; אם ה-DTD הזה אינו מה שציפית, השגיאות ייראו שרירותיות.
האם אני יכול לאמת XHTML משורת הפקודה?
כֵּן. אם אתה תוהה כיצד לאמת XHTML באמצעות CLI, xmllint --noout --valid archivo.xhtml בודק את את התקינות המבנית והתוקף מול ה-DTD. עבור HTML5/XHTML5, vnu.jar archivo.xhtml עושה את אותו הדבר. שתי האפשרויות הן אידיאליות לשילוב בסקריפטים של בנייה, pre-commit hooks, או תהליכי אינטגרציה רציפה, כאשר האימות הידני אינו יעיל בקנה מידה רחב.
האם אתר XHTML תקף הוא נגיש באופן אוטומטי?
לא. אימות בודק התאמה תחבירית וסכימה; הנגישות מוערכת מול ה-WCAG, המכסה היבטים כמו ניגודיות, ניווט במקלדת, טקסט חלופי או מבנה סמנטי. מסמך יכול להיות תקף לחלוטין ועדיין להישאר בלתי נגיש. אימות תחילה וביקורת נגישות לאחר מכן: הם שכבות משלימות.
¿Cumplir WCAG sin tocar el código?
Superposición de IA que promete cumplimiento WCAG ב-48 שעות