220 likes | 474 Views
חלק 1: XML. Extensible Markup Language. המבנה של מסמך XML. מסמך XML מורכב מתגים ( (tags וטקסט. התגים מגיעים בזוגות, למשל <date> ...</date> התגים חייבים להיות מקוננים היטב מקונן היטב <book> <title> ... </title> ... </book> לא מקונן היטב <book> <title> ... </book> ... </title>.
E N D
חלק 1: XML Extensible Markup Language
המבנה של מסמך XML • מסמך XML מורכב מתגים ( (tagsוטקסט. • התגים מגיעים בזוגות, למשל <date> ...</date> • התגים חייבים להיות מקוננים היטב מקונן היטב <book> <title> ... </title> ... </book> לא מקונן היטב <book> <title> ... </book>... </title>
המבנה של מסמך XML (המשך) • דוגמה: <title>The Big Sleep</title> <price>7.75</price> --עדיין נחשב כטקסט 7.75 אלמנטים עם תוכן ריק <title> </title> שקול ל- <title/>
מסמךXML שלם <?xml version ="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE inventory SYSTEM "http://www.cs.technion.ac.il/book.dtd"> <!-- File name: books.xml --> <inventory> <book ISBN="a364215452" available="no"> Best Seller <title>Leaves of Grass</title> <author>Jeff Cohen</author> <author>Walt Whitman</author> <binding>hardcover</binding> <price>7.75</price> A collection of some of the finest American free-verse poetry </book > </inventory >
תוכן מעורבב • אלמנט יכול להכיל תוכן מעורב של תת-אלמנטים וטקסט <book ISBN=“a364215452”> Best Seller <title>Leaves of Grass</title> <author>Jeff Cohen</author> <binding>hardcover</binding> <price>7.75</price> A collection of some of the finest American free-verse poetry </book > • נתונים מהצורה הנ"ל בדרך כלל לא ייווצרו ממסדים רלציוניים.
תכונות (Attributes) תג פותח יכול להכיל תכונות. בדרך כלל משתמשים בתכונות כאשר רוצים לתאר את התוכן של האלמנט. <inventory> <book ISBN=“a364215452”>…</book > <book ISBN=“a126365452”>…</book > <book ISBN=“a126365452” available=”no”>…</book > </inventory > אופציונאלי
תג הכותרת (Header Tag) <?xml version="1.0" standalone="no" encoding="UTF-8"?> • אפשר לא לרשום את תכונת הקידוד (encoding) ואז ישתמש מעבד ה-XML בערך ברירת המחדל UTF-8. • תג הכותרת אינו מהווה חלק מהמסמך ואינו נגיש מתוכו.
הערות ב-XML <!-- File name: books.xml --> • הערות משמשות לעזור לקריאות של המסמך, אך בדרך כלל מעבד ה-XML יתעלם מהן. • ניתן להוסיף הערות לכל חלק במסמך, אך לא בתוך תגים. • דוגמה: <price>7.75 <!--price comment --> </price> <price<!--price comment -->>7.75</price>
מסמכים בנויים היטב (Well Formed) תכונה שמתייחסת לכל מסמך.מסמך בנוי היטב מקיים את הדרישות הבאות: • קינון טוב של התגים. • קיום המגבלות על הערות. • אלמנט לא מכיל יותר מתכונה אחת עם אותו שם. • קיים לפחות אלמנט אחד במסמך. • קיים אלמנט שורש יחיד.
חלק 2: מתאר מסמך (DTD) אילוץ מבנה על מסמכי XML
Document Type Descriptors • DTD מגדיר אילוצים על מבנה של מסמך XML • DTD מהווה מפרט סינטקטי • נאמר שמסמך הוא תקף (Valid) אם הוא מכיל DTD ותואם ל-DTD: • תואם לדקדוק שמבוטא ע"י ביטויים רגולריים. • מקיים את המגבלות על טיפוסי תכונות. • מקיים את המגבלות על מזהים ומצביעים.
פירוט המבנה • ב-DTD, אלמנטי XML מוצהרים ע"י הצהרת אלמנט. • הצהרה על אלמנט תהיה בצורה הבאה: <!ELEMENT element-name element-content> • ה-element-content מתאר את הבנים של האלמנט. • element-content יכול להכיל: • ANY- מגדיר שהאלמנט מכיל תוכן שאינו מפר את התנאים של מסמך בנוי היטב • EMPTY- מגדיר שהאלמנט ריק • ביטוי רגולרי – בדרך כלל מוקף בסוגריים
קיבוץ ע"י סוגריים נגדיר את מבנה אלמנטי הספר ע"י הביטוי: (title, author+, binding?, (price|points)?) מה המשמעות של הביטוי הנ"ל?
תוכן מעורב ב-DTD • פירוט תוכן שמכיל #PCDATA חייב להיות לפי אחת מהתבניות הבאות: • (#PCDATA) - רק טקסט מותר כתוכן האלמנט. • (#PCDATA | c1 | c2 | …)* - מאפשר ערבוב של טקסט ואלמנטים אבל ללא הגבלה על מספר וסדר
הגדרת תכונות ב-DTD • הגדרת תכונות תיעשה לפי התבנית הבאה: <!ATTLIST element-name att-name att-type default> • דוגמה: <!ELEMENT book “…”> <!ATTLISTbook ISBN ID #REQUIRED available (yes | no) “no” previous IDREFS #IMPLIED> • ISBN - חייב להופיע, מסוג ID - מזהה ייחודי • Available - אופציונאלי (ערך ברירת מחדל “no”), אנומרציה (yes | no) • previous - אופציונאלי, מסוג IDREFS – רשימת מצביעים
דוגמה: רשימת מצאי <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT binding (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ELEMENT points (#PCDATA)> <!ELEMENT book (title, author+, binding?, (price | points)?)> <!ATTLIST book ISBN ID #REQUIRED available (yes | no) “no” previous IDREFS #IMPLIED> <!ELEMENT inventory (book)*>
חייב להופיע אפציונאלי מצביעים אופציונאלי כותרת אחת בדיוק ספרים ככל שנרצה מחבר אחד או יותר לכל היותר סוג כריכה אחד לכל היותר מחיר אחד או מס' נקודות אחד דוגמה: רשימת מצאי <inventory> <book ISBN=”a364215452” available=“no” previous=“a3532156 a3215643 a241546” > <title>Leaves of Grass</title> <author>Jeff Cohen</author> <author>Walt Whitman</author> <binding>hardcover</binding> <price>7.75</price> </book > <book >…</book > <book >…</book > <book >…</book > </inventory >
קישור בין מסמך XMLל-DTD שלו • הצהרה פנימית: <?xmlversion="1.0"?> <!DOCTYPE inventory [<!ELEMENT ...> … ]> <inventory> ... </inventory> • הצהרה חיצונית ע"י שם קובץ. <!DOCTYPE inventory SYSTEM "schema.dtd"> • URL: <!DOCTYPE inventory SYSTEM "http://www.schemaauthority.com/schema.dtd"> • הצהרה חיצונית מסוג:PUBLIC <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> צומת המסמך
דוגמה מלאה <?XMLversion ="1.0" encoding="UTF-8“ standalone="no"?> <!DOCTYPE inventory SYSTEM "http://www.cs.technion.ac.il/book.dtd"> <!-- File name: books.xml --> <inventory> <book ISBN=“a364215452” available=“no” previous=“a3532156 a3215643 a241546” > <title>Leaves of Grass</title> <author>Jeff Cohen</author> <author>Walt Whitman</author> <binding>hardcover</binding> <price>7.75</price> </book > <book >…</book > <book >…</book > <book >…</book > </inventory >
דוגמא שגויה - מצא את הטעויות <?XMLversion ="1.0" encoding="UTF-8“ standalone="no"?> <!DOCTYPE inventory SYSTEM "http://www.cs.technion.ac.il/book.dtd"> <!-- File name: books.xml --> <inventory> <book ISBN=“a364215452” available=“no” previous=“a3532156 a3215643 a241546” > <title>Leaves of Grass</title> <author>Jeff Cohen</author> <binding>hardcover</binding> <price>7.75</price> </book > <book ISBN=“a364215452” previous=“a3532156 a3215643 a241546” > <title><alias>Leaves of Grass</alias></title> <point>2.5</points> </book > </inventory > ID לא ייחודי Title אינו מסוג PCDATA author נדרש לפי הגדרה אך חסר