XML

עמוד XML
XML (ראשי תיבות של eXtensible Markup Language) הוא תקן לקידוד וייצוג נתונים במחשבים. שימוש ב־XML מקל על החלפת נתונים בין מערכות שונות שפועלות על גבי תשתיות שונות. תקן ה-XML לא מגדיר איזה מידע יוצג אלא מגדיר כיצד לייצג מידע באופן כללי. תקן XML שייך למשפחת שפות הסימון (markup language), ומבוסס על תקן משנת 1986 בשם SGML.

מבחינה טכנית, XML איננה שפת תכנות, שכן אף על פי שהתחביר (syntax) שלה מוגדר היטב, אין לה אוצר מילים ולא בקרת זרימה. למעשה, ניתן לראותה כתבנית ליצירת שפות אחרות, ביניהן XHTML, XAML, XUL, SVG, XBRL וכדומה.

גם תקן ה-XML, בדומה לשפת HTML, נקבע על ידי ה־World Wide Web Consortium.

תכונות ה־XML:
* ייצוג המידע באופן טקסטואלי.
* שמירת המטא-מידע ביחד עם המידע עצמו. כלומר, שמירת תיאור הנתונים עם הנתונים עצמם.
* סידור המידע במגוון צורות ולא רק בטבלה כמו ברוב הפורמטים האחרים. ב-XML טבעי מאוד לסדר מידע באופן היררכי (עץ).

הייצוג עצמו מתבצע תוך שימוש בתגיות (Tags) שמגדירות רכיבי מידע (Elements). בתוך רכיבי המידע ניתן לאחסן את המידע עצמו או רכיבים נוספים. דוגמאות לרכיבי מידע:
{| align="center"
|
<syntaxhighlight lang="xml">
 <tag>Information</tag>
 <number-of-articles>102,119</number-of-articles>
 <name>
 <first-name>John</first-name>
 <last-name>Doe</last-name>
 </name>
 <name>
 <first-name>Yoni</first-name>
 <last-name>Weiden</last-name>
 </name>
 <name>
 <first-name>Jane</first-name>
 <last-name>Doe</last-name>
 </name>
</syntaxhighlight>
|}
מלבד צורה בסיסית זו, ניתן לציין ב-XML "תכונות" (Attributes) לכל תגית:

<syntaxhighlight lang="xml">
 <number-of-articles updated="today">102,119</number-of-articles>
</syntaxhighlight>

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

ה־XML שימושי כמעט בכל תחום של מחשבים. חשיבותו הגדולה ביותר היא בחיבורים בין מערכות שונות. לדוגמה: קיים תקן כיצד לייצג מידע על חולה והטיפולים שהוא עובר ("תיק חולה") באמצעות מסמך XML. כך יכולה המערכת של בית החולים לשלוח את המידע הזה לרופא המשפחה שיכול לקלוט לתוך מערכת המידע שלו את התרופות אותם קיבלו חוליו במהלך אשפוזם.

כדי לתמוך בהחלפת מידע מסוג זה פותחו תקנים להעברת מסמכי XML כדוגמת SOAP.

ניתן להגדיר את המבנה של קובץ XML על ידי שימוש בקובץ נוסף, שמגדיר באילו תגיות ניתן להשתמש, מה המבנה שלהן ואיזה מידע יכול להיות מאוחסן בכל אחת מהן. קובץ כזה יכול לתאר לדוגמה את המבנה של "תיק חולה". בעבר השתמשו בפורמט DTD כדי להגדיר את התחביר. כיום משתמשים בפורמט XSD (המכונה גם Schema), שבעצמו מנוסח ב־XML (לעומת DTD שיש לו תחביר נפרד).

==ישויות ב-XML==
המפרט של XML מגדיר בדיוק חמש ישויות (Entity references) או הפניות לתווים, או ייצוג לתו באמצעות תווים אחרים, שכל מפענחי ה-XML מכירים. שימוש בישויות אלו יעשה לרוב כשמעוניינים להכניס תו מיוחד, שמשמש כחלק מהתחביר של XML. ניתן להצהיר במפורש על הישויות ב-DTD אך אם עושים זאת, חייבים לתת לישויות את ערכי ברירת המחדל. XML מאפשר ישויות נוספות בתנאי שהן מוגדרות מראש בקובץ הגדרת המסמך.

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

{| class=wikitable
|- style="background: #efefef;"
! שם
! תו
! קוד יוניקוד
! גרסה
! תיאור בעברית
! תיאור באנגלית
|-
| <syntaxhighlight lang="text">"</syntaxhighlight>
| "
| 
| XML 1.0
| גרש כפול
| quotation mark
|-
| <syntaxhighlight lang="text">&</syntaxhighlight>
| &
| 
| XML 1.0
| סימן וגם
| ampersand
|-
| <syntaxhighlight lang="text">&apos;</syntaxhighlight>
| '
| 
| XML 1.0
| גרש בודד
| apostrophe
|-
| <syntaxhighlight lang="text"><</syntaxhighlight>
| 
| 
| XML 1.0
| סימן קטן מ-
| less-than sign
|-
| <syntaxhighlight lang="text">></syntaxhighlight>
| 
| 
| XML 1.0
|סימן גדול מ-
| greater-than sign
|}

== ראו גם==

==קישורים חיצוניים==

* 
* [http://www.xml.org xml.org]
* [http://www.philo.de/xmledit עורך XML חופשי]
* [https://web.archive.org/web/20060207031737/http://www.xml-dev.com/xml/editors.html כלי עריכה] לכתיבת מסמכי XML
* [http://www.liquid-technologies.com/xml-editor.aspx/ Liquid XML Editor]
* 
* 

*
קטגוריה:תקנים בתקשורת מחשבים
קטגוריה:פיתוח יישומי ווב
קטגוריה:תקני סריאליזציה