Download presentation
Presentation is loading. Please wait.
Published byΠάτροκλος Παπαφιλίππου Modified over 6 years ago
1
7. מבוא למסמכי XML ו-DTD (מבוסס על שקפים של אלדר פישר)
מערכות מסדי נתונים 7. מבוא למסמכי XML ו-DTD (מבוסס על שקפים של אלדר פישר)
2
רקע היסטורי XML פותח כצמצום של סטנדרט ה-SGML
(Standard Generalized Markup Language). SGML היא שפת-על שנועדה להגדיר תחביר לשפות תיוג – שפות המאפשרות להוסיף תגיות למסמכי טקסט ובכך לסמן את חלקי המסמכים. פיתוחה החל בשנות ה-70 והיא הפכה לסטנדרט ב שימשה בעיקר לייצור שפות לכתיבת מסמכים טכניים. עם זאת, מעט מאוד תוכנות ישמו את הסטנדרט המלא. ה-SGML הוא במובן מסוים "כללי מדי", דבר הגורם לריבוי של מקרי-קצה שעל התוכנה לדאוג לטפל בהם אחד לאחד.
3
HTML ו-XML תת השפה הנפוצה ביותר שפותחה ב-SGML היא
HTML Hyper Text Markup Language. מטרתה – הגדרת אופן ההצגה הויזואלית של דפים ברשת האינטרנט. ב-HTML אוסף התגים קבוע ומוכר על ידי הדפדפנים (browsers). מה היתרון באוסף תגים קבוע מראש? מה החיסרון? החל מ-1996 החלה ב-W3C העבודה על תת-גרסה "פשוטה" של SGML, שנקראה XML eXtensible Markup Language, מתוך מטרה לאפשר תיוג כללי של מסמכי אינטרנט מחד, אך בצורה פשוטה, יחסית ל-SGML, מאידך. XML מאפשר להגדיר שפות תיוג שונות באופן יחסית פשוט.
4
HTML ו-XML XML HTML XHTML SGML
שימוש בתגיות להגדרת המשמעות של חלקי הטקסט. שימוש בתגיות להגדרת צורת הטקסט וסגנונו. XML HTML ניתן להגדיר תגיות אוסף תגיות קבוע הצגה ויזואלית משתנה הצגה ויזואלית מוגדרת פורמט קשיח גמיש ולא רגיש לשגיאות למי זה טוב?
5
XML מאפשר לייצג באופן טבעי מידע מובנה למחצה
1. אחסון מידע בפורמט ידוע – לא נדרשת תוכנה מיוחדת לשימוש במידע, בשונה למשל ממידע ב-RDBMS. 2. כתחביר להעברת מידע (Data exchange format) – משמש להעברת נתונים בין תוכנות שונות אשר לא תוכננו מראש לעבוד בתיאום. דוגמאות: SOAP ב-Web Services, RSS 3. קובץ קונפיגורציה של אפליקציות. XML מאפשר לייצג באופן טבעי מידע מובנה למחצה
6
מידע מובנה ומידע מובנה למחצה
המידע המאוחסן במסדי נתונים רלציונים הוא מובנה (structured): כל אובייקט שייך לאחד ממספר סופי וקבוע מראש של טיפוסים. טיפוס האובייקט קובע במדויק את מספר "תתי-האובייקט" שבו ואת סוגיהם (במינוח הרלציוני הדבר מתבטא בפירוט התכונות של טיפוס האובייקט). בעולם האמיתי קיימים מקרים שבהם מודל זה אינו גמיש מספיק. למשל: מפרטים טכניים של מכונות. לא לכל מכונה יהיה אותו מספר חלקים מכל סוג, לחלק מהחלקים יהיו הוראות התקנה מיוחדות ולחלק לא, וכו'... מסמכי תיעוד (כגון ספרי הדרכה). לא לכל פרק יהיה אותו מספר של תתי-פרקים ולא בכל תת-פרק יהיה אותו מספר של תרשימים (אם בכלל).
7
מידע מובנה למחצה ו-XML תחביר ה-XML הוא גישה לאחסון מידע שנאמר עליה שהיא מובנית למחצה (semi-structured) ומתארת עצמה (self-describing). מובנית למחצה: ניתן לתת ייצוג טבעי ב-XML למידע שייצוגו במסד נתונים מובנה לא יהיה טבעי. הייצוג ישקף את האילוצים הקיימים על מבנה המידע, מבלי "לאלץ" אותו לסכימה מובנית לחלוטין. מתארת עצמה: מסמך XML טיפוסי ישקף לא רק את המידע המאוחסן, אלא גם את הסכימה שלפיה המידע אוחסן.
8
XML כמתאר טקסט מסומן ניתן להסתכל על קובץ XML כקובץ טקסט עם תיוגים על קטעים ממנו: זוהי נקודת המבט השלטת ביישומים כגון עיצוב מסמך לפרסום (באתר רשת או באופן אחר), וכן בחלק גדול מהספרות העכשווית בתחום. <movie> <title>Gone with the wind</title> <year>1939</year> <review> The age-less classic <emph>Do not miss !</emph> </review> </movie> Gone with the wind 1939 The age-less classic Do not miss ! title year review emphasis movie
9
XML כמייצג עץ (מתויג, סדור, עם ערכים)
נקודת מבט זו מתאימה במיוחד ליישומים הקשורים במאגרי מידע ממוחשבים, ולכן נתמקד בעיקר בה במהלך הקורס. <movie> <title>Gone with the wind</title> <year>1939</year> <review> The age-less classic <emph> Do not miss ! </emph> </review> </movie> movie title year review #pcdata emph “Gone with the wind” “1939” “The age-less classic” “Do not miss !”
10
עצים סדורים ומתויגים באופן פורמאלי, מסמך XML יתאר את המבנה הקומבינטורי בעל הרכיבים הבאים: קבוצת צמתים (nodes) N וקבוצת קשתות E, אשר ביחד מהווים עץ מכוון (בעל שורש). סדר טוב ">" על הצמתים, המתאר סדר הגעה אפשרי בביצוע אלגוריתם DFS מהשורש, ובפרט שומר על כיווני העץ אם צומת y הוא בן של x אז x<y. בייצוג גרפי של העץ ניתן לייצג סדר זה ע"י כך שנכתוב צמתים אחים לפי סדרם, משמאל לימין. פונקצית תיוג (tagging/labeling) חלקית מקבוצת הצמתים N אל "אלפבית" סופי כל שהוא (למשל קבוצת כל התגים החוקיים במסמך HTML). פונקצית ערך חלקית מקבוצת הצמתים N אל "אלפבית" אין-סופי. במסמך XML ערכים אלו יהיו מחרוזות וקטעי טקסט.
11
תחביר בסיסי של מסמך XML צומת "רגיל" בעץ בעל התווית "tag" יצוין במסמך ע"י זוג התגים <tag>…</tag>. תוכן כל תת-העץ מתחת לצומת המדובר ייוצג במסמך בין זוג התגים הנ"ל. דוגמא: <date> <day>14</day> <month>May</month> <year>1948</year> </date> עבור צמתי טקסט (#PCDATA) פשוט כותבים את ערכם במסמך. שימו לב שבעיבוד המסמך מתעלמים מהתצורה המדויקת של רווחים, מעברי שורה, ודומיהם (white spaces). לייצוג צומת בעל תווית אולם ללא בנים ניתן להשתמש בסימון המקוצר <tag/>. דוגמא: <tune><do/><re/><mi/></tune>.
12
תחביר בסיסי המשך הצמד “<tag>…</tag>” משחק תפקיד דומה לצמד "פתח סוגריים (מסוג tag) ... סגור סוגריים (תואמים)". על מנת שהמסמך אכן ישקף מבנה של עץ, יש להקפיד על הכללים הבאים: כל התגים מתחלקים לזוגות תואמים, עם “<tag>” לפני “</tag>” (למעט אלו בסימון המקוצר “<tag/>”, השקול לסימון “<tag></tag>”). עבור כל זוג תגים בחלוקה הנ"ל, לא קיים ביניהם תג אשר בן הזוג שלו אינו ביניהם. דוגמא: הצירוף הבא אינו חוקי: <bold><italic>Some Text</bold></italic> רק צירופים כגון אלו חוקיים: <bold><italic>Some Text</italic></bold> <bold>Some</bold> <italic>Text</italic>
13
מעץ גרפי למסמך XML “Merilyn Monroe” “1.6.1926” <actor>
name birthday #pcdata “ ” <actor> </actor> “Merilyn Monroe” name birthday #pcdata “ ” <actor> <name> </name> <birthday> </birthday> </actor> “Merilyn Monroe” #pcdata “ ” <actor> <name> Merilyn Monroe </name> <birthday> </birthday> </actor>
14
תכונות עבור צמתים בעלי תוויות ניתן להצהיר על תכונות עם ערכים. אלו בד"כ ישמשו לכתיבת מידע נוסף על סוג הצומת. דוגמאות: <title language=“en”>Gone with the wind</title> <image file=“wind.eps”/> בספרות יש מספר גישות להתייחסות לתכונות. אנו נתייחס להן כאל צמתים בנים של הצומת שעבורו הן מוכרזות. בדוגמה הראשונה למעלה נייצג את העץ באופן הבא: @language title #pcdata “en” “Gone with the wind”
15
עצי XML התאמות נוספות תמונה מדויקת פורמלית של מסמכי XML כעץ תינתן באופן הבא: השורש של העץ יהיה צומת מיוחד המייצג את המסמך כולו. בהרבה מקרים יהיה לצומת השורש בן יחידי (למשל, קבצי XHTML, SVG,... ) שיקרא צומת המסמך, אולם יש מקרים שבהם לצומת זה יהיו מספר בנים (למשל, קובץ יומן – log). שאר הצמתים יחולקו לצמתי אלמנטים (המתאימים לתגים במסמך), צמתי תכונות (המתאימים לתכונות של תגים) וצמתי טקסט. צמתי תכונות וטקסט תמיד יהיו עלים שהם בנים של צמתי אלמנטים. הסדר תמיד ימקם את צמתי התכונות לפני כל האחים שלהם, ולא יהיה מוגדר כלל בתוך קבוצות של צמתי תכונות אחים (כך שהמדובר למעשה בסדר חלקי). תוויות יהיו לצמתי האלמנטים וצמתי התכונות. ערכים יהיו לצמתי התכונות וצמתי הטקסט.
16
מה יש עוד במסמך XML השורה הראשונה של קובץ XML תכיל הצהרה על סוג המסמך ועל הקידוד של האותיות (ASCII, Unicode, …): <? XML version=“1.0” encoding=“UTF-8” ?> (למעשה אין צורך להכריז על UTF-8 כי זוהי ברירת המחדל). הקובץ עשוי לכלול הערות. אלו יהיו מוקפות בסימון “<!--…-->” ויהיו מיועדות בעיקר לעיניים אנושיות למרות שנהוג לכלול אותם בתיאור העץ (כצמתים מסוג "הערה"), המקובל הוא שאין להערות השפעה על הגדרת המשמעות של תוכן מסמך. קובץ המציית לתחביר ה-XML יקרא בנוי היטב – well formed. בקובץ XML יהיו בדרך כלל גם הצהרות על מבנהו. מייד נלמד על כמה מהן הקשורות להגדרת המבנה ע"י DTD.
17
Document Type Description
ללא הגבלות נוספות על תחביר ה-XML, אין דרך להבטיח שהמסמך אכן יתאים לסוג המידע שאותו היישום הספציפי אמור לאחסן או לקרוא. על מנת להגדיר את ישום ה-XML, קבוצת המסמכים ה"תקינים", אנו נשתמש בשפה מתאימה. השפה הנפוצה ביותר לשם כך, וזו שנלמד בקורס, נקראת DTD Document Type Description. מסמכים המצייתים ל-DTD המתאר את היישום המתאים יקראו תקינים valid. מכיוון שה-DTD (ושפות סכמה אחרות) מגדיר למעשה את "שפת כל המסמכים התקינים", שפת ה-DTD נקראת לעיתים גם "על-שפה" (meta-language). שימו לב ששפות הסכמה מגבילות בעיקר את סוגי הצמתים ותוויות הצמתים. DTD אינה מגבילה בד"כ את ערכי הצמתים, פרט לכמה מקרים יוצאים מהכלל.
18
XML ו-DTD שפת הגדרת הסכמות, DTD, היא למעשה חלק בלתי נפרד מסטנדרט ה-XML. מסמך XML יכול להכיל בתחילתו הכרזת מבנה ב-DTD. בד"כ הכרזה זו תכיל הפניה לקובץ DTD חיצוני, אולם ניתן גם למקם את כל הכרזת המבנה במסמך ה-XML עצמו. קובץ ה-DTD הוא לא מסמך XML בעצמו, אלא סדרה של הכרזות (כל אחת מהצורה “<!...>” ).
19
מה מוגדר ב-DTD החלק הארי של ה-DTD יגדיר אלו בנים (לפי סוג ותווית) יכולים להיות לכל צומת. book @language chapter title paragraph #PCDATA DTD
20
הכרזת המבנה ההכרזה על מבנה המסמך היא מהצורה <!DOCTYPE doc …> כאשר "doc" הוא התווית של צומת המסמך. בד"כ לאחר הכרזה זו שאר הקובץ יהיה מסמך תקין ע"פ תוכן ה-DOCTYPE, המוקף בצמד <doc>…</doc> יחיד (ז"א שלצומת השורש יהיה בן יחיד שהוא צומת אלמנט עם תווית doc). עבור הכרזת DTD פנימית למסמך ה-XML, כל הכרזות המבנה יכונסו בסוגריים מרובעים: <!DOCTYPE doc [ … ] >
21
דוגמא למסמך עם DTD פנימי
<?xml version=“1.0” encoding=“UTF-8” ?> <!DOCTYPE hello [ <!ELEMENT hello (#PCDATA)> ] > <!-- Actual document starts here --> <hello> Hello Word! </hello>
22
הכרזות מבנה עם קובץ חיצוני
על מנת להכריז על קובץ DTD חיצוני (לפי URL) משתמשים במילה SYSTEM. דוגמא: <!DOCTYPE book SYSTEM “ ניתן גם לשלב DTD חיצוני עם התאמות ותוספות פנימיות לקובץ: <!DOCTYPE book SYSTEM “ [ …. ] > על מנת להכריז גם על זיהוי ציבורי (Public ID) אשר יזהה את היישום ללא תלות במיקום הספציפי של הקובץ, משתמשים במילה PUBLIC: <!DOCTYPE book PUBLIC “-//OASIS//DTD DocBook V4.2//EN” “
23
ביטויים רגולרים בדומה לשפות אחרות (כגון Perl, bash), בכמה שפות הקשורות ב-XML, כולל DTD, נעשה שימוש בביטויים המבטאים שפות רגולריות. שימוש בביטויים אלו מוסיף חוזק לשפה ה"מארחת" במקומות בהם אנו נדרשים לתאר סדרה קבילה של עצמים, במחיר לא יקר במיוחד ברמת כתיבתו של Parser עבור אותה שפה. ב-DTD ה"אלפבית" שלנו הוא קבוצת התוויות החוקיות לפי אותו DTD, ולא תווים בודדים.
24
ביטויים רגולרים תחביר
הביטויים האטומיים הם אלו המורכבים מ"אות" בודדת. במקרה שלנו המדובר הוא בתגים אשר מורשים להופיע במסמך XML המציית לאותו DTD (למשל title, section,…). עבור צומת טקסט נשתמש במילה השמורה “#PCDATA” (תחת מגבלות אשר יתוארו בהמשך). הפעולות הבסיסיות: בהינתן שני ביטויים רגולרים φ1, φ2, ניתן להרכיב אותם באופנים הבאים: שרשור: φ1,φ2 מציין את השפה המורכבת מכל שרשור אפשרי של סדרה תקנית לפי φ1 וסדרה תקנית לפי φ2 (בסדר זה). איחוד: φ1 | φ2 מציין את השפה המורכבת מאיחוד שתי השפות המתאימות. סגור Kleene: הביטוי φ1∗ מציין את השפה המורכבת משרשור של מספר כל שהוא של סדרות הנמצאות בשפה של φ1. גם הסדרה הריקה תימצא ב- φ1∗, כשרשור של אפס סדרות מהשפה של φ1.
25
ביטויים רגולרים פעולות מרוכבות
התחביר של DTD מגדיר בנוסף את הפעולות הבאות: הביטוי φ+ מתאר את כל השרשורים האפשריים של סדרת תגים אחת או יותר מתוך φ. שקול לביטוי φ,(φ∗). הביטוי φ? מתאר את השפה המורכבת מהסדרות התקינות לפי φ בתוספת הסדרה הריקה. מכיוון שאין ב-DTD קבוע המתאר את הסדרה הריקה המשמש בביטויים רגולרים (אלא רק מילה שמורה עבור המקרה שבו אנו מוכנים לקבל אך ורק את הסדרה הריקה), אנו חייבים במקרים מסוימים להשתמש בביטוי זה.
26
הכרזה בסיסית על טיפוס צומת
נעשית באופן הבא: <!ELEMENT tag children … > כאשר: “tag” הוא התווית של הצומת, “children …” הוא ביטוי רגולרי המתאר אלו בנים יכולים להיות לצומת עם תווית זו, ובאיזה סדר. עם הגדרת הבנים האפשריים, הכרזה זו גם מגדירה את “tag” כתווית חוקית עבור האלמנטים של המסמך. הכרזה זו אינה מספקת מידע על תכונות, אלא רק על בנים שהם צמתי אלמנט וצמתי טקסט. התכונות יוגדרו בהכרזה נפרדת.
27
דוגמאות <!ELEMENT person (name,address∗) > מגדירה צמתי “person” עם הדרישה שיהיה להם בן אחד “name” שלאחריו אפס או יותר בנים “address”. <!ELEMENT name (#PCDATA) > מגדירה צמתי “name” כצמתים אשר יכולים להכיל רק טקסט (בין סימני ה-<name>…</name>). צמד ההכרזות: <!ELEMENT paragraph (#PCDATA | emph)∗ > <!ELEMENT emph (#PCDATA) > יגדיר אלמנט “paragraph” המכיל טקסט עם "הדגשות" (מקטעים המוקפים ב-<emph>…</emph>).
28
מגבלות בשימוש ב-#PCDATA
לא ניתן לשלב הכרזות על צמתי טקסט באפן חופשי בביטויים הרגולרים עבור הבנים של צומת נתון, אלא ניתן להשתמש רק באחת משתי התצורות הבאות: הכרזה על צומת שיכול להכיל אך ורק טקסט: נעשית על פי הדוגמה הבאה: <!ELEMENT title (#PCDATA)> הכרזה על צומת המכיל טקסט ובנים אחרים: ניתן להכריז על סוגי הבנים הנוספים, אך לא על סדרם ומספרם, ע"פ הדוגמא הבאה: <!ELEMENT richtext (#PCDATA | bold | italic)∗>
29
אפשרויות הכרזה נוספות לצמתים
<!ELEMENT tag EMPTY> מכריז על צומת אלמנט “tag” אשר לא יכולים להיות לו בנים כלל. <!ELEMENT tag ANY> מכריז שלצומת “tag” יכולים להיות בנים מסוג טקסט ומסוג אלמנט עם כל תווית חוקית עבור המסמך, ובכל סדר שהוא. בהכרזה זו לרב לא נעשה שימוש כי כל הרעיון בכתיבת DTD הוא לציין מגבלות על מבנה העץ.
30
הכרזה על תכונות הכרזה על אפשרות לקיום תכונות עבור צומת אלמנט עם תווית “tag” נעשית באופן הבא: כאשר: atti שם התכונה ה-i (יש לזכור עם זאת שלסדר הכרזת התכונות כאן אין השפעה על סדר הופעתן במסמך ה-XML עצמו) typei סוג המידע בתכונה. בדרך כלל זה יהיה CDATA, הווה אומר שהערך יכול להיות מחרוזת כל שהיא. defi ערך ברירת-מחדל עבור התכונה במידה וזו אינה מופיעה במסמך. <!ATTLIST tag att1 type1 def1 att2 type2 def2 … >
31
תכונות המשך ערך ברירת המחדל יכול להיות כל ערך חוקי עבור התכונה. דוגמא: <!ATTLIST book language CDATA “en”> בנוסף, אפשר במקום ערך ספציפי להשתמש באחת מהמילים השמורות הבאות: #REQUIRED מתאר מצב שבו חובה על כל צומת אלמנט במסמך שעבורו הוגדרה התכונה לקבל ערך מפורש עבורה. #IMPLIED מתאר מצב שבו התכונה אינה חייבת להופיע כצומת בן של צומת האלמנט המתאים. באחריות התוכנה לטפל גם במקרה שבו תכונה זו אינה מופיעה.
32
תכונות דוגמה ההכרזות: <!ELEMENT image EMPTY>
<!ATTLIST image source CDATA #REQUIRED height CDATA #IMPLIED width CDATA #IMPLIED > מגדירות אלמנט “image” כאלמנט ללא בנים פרט לתכונות. התכונות הן “source” אשר חייבת להופיע (ולהכיל למשל את שם קובץ התמונה), ו-“height” ,”width” אשר אינן חייבות להופיע (ואם הן אינן מופיעות, אז על התוכנה להסתדר בלעדיהן, למשל ע"י הסקת מימדי התמונה מתוכן הקובץ שלה). שימו לב ששתי התכונות האחרונות הוגדרו כמחרוזות. אין אפשרות ב-XML להגדיר טיפוסים לתכונות אשר יחייבו את הערכים להיות מספרים.
33
זיהויים והפניות ב-XML כפי שניתן לראות אף ממסד הנתונים הפשוט ביותר, מבנה של עץ סדור לא תמיד יספיק לקבלת תמונה מלאה של המידע המאוחסן. שפת ה-DTD מאפשרת לנו להגדיר תכונות היכולות לשמש כזיהויים של צמתים במסמך, ותכונות אחרות המשמשות כמצביעים לזיהויים אלה. התכונות הנ"ל מוגדרות כתכונות מסוג ID (עבור זיהויים) ותכונות מסוג IDREF או IDREFS (עבור מצביעים).
34
הכרזת תכונת זיהוי ID נעשית על פי הדוגמא הבאה:
<!ATTLIST person idnum ID #REQUIRED> כל התכונות מסוג ID במסמך חייבות להיות שונות זו מזו (ללא קשר לתוויות הצמתים שהתכונות משויכות אליהן). ערך תכונה מסוג ID הוא מחרוזת אלפא-נומרית אשר מתחילה באות (כך שבעצם אין אפשרות בדוגמא להכניס רק את מספר הזהות של אדם, אלא יש להקדים לו אות). אין אפשרות לתת ערכי ברירת מחדל לתכונת ID פרט ל-#REQUIRED או #IMPLIED.
35
הכרזת תכונת הפניה תכונה מסוג IDREF היא תכונה שערכה חייב להיות זהה לערך של אחת מהתכונות מסוג ID המופיעות במסמך. ניתן גם להגדיר "רשימת שכנויות" בעלת מספר לא קבוע של מצביעים, באמצעות IDREFS. תכונה מסוג IDREFS היא תכונה שערכה הוא ערך אחד או יותר מאלו המופיעים במסמך בתכונות מסוג ID, מופרדים ברווחים. גם לתכונות מסוגים אלו לא יתכנו ברירות מחדל פרט ל-#REQUIRED ו-#IMPLIED.
36
דוגמא למקטע DTD עם מזהים
מקטע זה מגדיר צמתי “person” עם הפניות עבור אב, אם, וילדים. שימו לב להגדרת סוג התכונה “gender”. מדוע לא דרשנו “#REQUIRED” עבור התכונות “mother”, “father” ? אלו אילוצים הכרחיים עבור עץ גנאולוגי אין יכולת לאכוף באמצעות ההכרזות כאן ? <!ELEMENT person (name, address∗) > <!ATTLIST person idnum ID #REQUIRED gender (male | female) #REQUIRED father IDREF #IMPLIED mother IDREF #IMPLIED children IDREFS #IMPLIED >
37
ישויות ניתן להגדיר ב-DTD ישויות (Entities), מעין "הגדרות מאקרו", וניתן להכליל ישויות במסמך: - פנימיות או חיצוניות - מנותחות תחבירית (Parsed) או לא מנותחות (Unparsed) בשימוש במסמך, הישויות יוחלפו בתוכן המתאים. בהרבה מקרים המדובר בתו Unicode מתאים. דוגמה: אם נרצה לכתוב <aaa> בתוך מסמך XML כטקסט ולא כתג, נכתוב <aaa> כאשר < זו הישות > ו-> זו הישות >. עבור #PCDATA נדרש להחליף ישויות בתוכן המתאים בעוד שעבור CDATA (בתכונות) לא מחליפים את הישויות
38
החוזק התיאורי של DTD לא כל הגבלה על מבנה העץ של המסמך ניתנת לתיאור ע"י שפת DTD. לדוגמא, לא ניתן לתאר את ההגבלה הבאה: "במהלך המסמך כולו יש בדיוק צומת אחד עם התווית mainpoint". לחלק מהשפות האחרות לתיאור יישומי XML יש כושר תיאורי חזק יותר. הכושר התיאורי החזק ביותר הרצוי הוא זה של שפות העץ הרגולריות (לא נלמד בקורס זה את הגדרתן המדויקת). למרבית שפות הסכימה של XML, כגון DTD ו-XML-Schema (החזקה ממנה), יש חוזק תיאורי חלש יותר משפות העץ הרגולריות.
39
חיבור מידע ממקורות שונים
נניח שרוצים ליצור מסמך שבחלקו מכיל מידע התואם DTD אחד, ובחלקו מכיל מידע התואםDTD אחר. מה יקרה אם שתי הגדרות הסכמה (ה-DTDs) מכילות שמות אלמנטים זהים? הפתרון: שימוש במרחבי שמות (namespaces) שונים. - כל מרחב שמות יצוין על ידי מזהה - המזהה ישויך לקידומת - לכל תגית שעשויה להיות דו משמעות, נוסיף לה כתחילית את המזהה שישייך אותה למרחב השמות המתאים. xmlns:prefix=URI
40
<table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table> <table> <name>Coffee Table</name> <width>80</width> <length>120</length> </table> <root> <h:table xmlns:h=" <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> <f:table xmlns:f=" <f:name>Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> </root> השימוש במרחבי שמות מאפשר למנתח תחבירי להבדיל בין טבלאות לשולחנות
41
הערה אחרונה במהלך הרצאה זו לא למדנו את סטנדרט ה-XML (כולל שפת ה-DTD) בשלמותו, אלא רק מבוא. הנכם מוזמנים לקרוא עוד על סטנדרט ה-XML בספרות, וכן על הסטנדרטים הנלווים. בקורס אנו נתמקד עתה שליפת מידע מ-XML: שפת החיפוש XPath, וההכללה שלה XQuery.
42
ספרות נוספת Elliotte Rusty Harold and W. Scott Means, XML in a Nutshell, O’Reilly. Neil Bradley, The XML Companion, Addison-Wesley. מאמר סקירה מעניין עם זוויות תיאורטיות: Nils Klarlund, Thomas Schwentick and Dan Suciu, XML: Model, Schemes, Types, Logics and Queries.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.