Presentation is loading. Please wait.

Presentation is loading. Please wait.

Spring 20051 חלק 3: מבוא ל- XPath XML Path Language.

Similar presentations


Presentation on theme: "Spring 20051 חלק 3: מבוא ל- XPath XML Path Language."— Presentation transcript:

1 Spring 20051 חלק 3: מבוא ל- XPath XML Path Language

2 2 מסמך דוגמא Addison-Wesley Serge Abiteboul Rick Hull Victor Vianu Foundations of Databases 1995 Freeman Jeffrey D. Ullman Principles of Database and Knowledge Base Systems 1998

3 Spring 20053 מסמך XML כעץ bib book publisherauthor.. Addison-WesleySerge Abiteboul צומת השורש צומת המסמך price=55

4 Spring 20054 ביטויי XPath – דוגמאות פשוטות /bib/book/year התוצאה: 1995 1998 /bib/paper/year התוצאה: קבוצה ריקה של צמתים (אין אלמנטים בעלי שם paper)

5 Spring 20055 חיפוש צאצאים (סגור Kleene מוגבל) //author התוצאה: Serge Abiteboul Rick Hull Victor Vianu Jeffrey D. Ullman /bib//first-name התוצאה: Rick קבוצה של 4 צמתים

6 Spring 20056 בחירת צמתים שאינם אלמנטים text() מחזיר צמתים מסוג טקסט node() מחזיר כל צמת ללא חשיבות לסוגו הביטוי הבא /bib/book/author/text() מחזיר את שמות הסופרים ששמם נמצא בצומת טקסט אחד. Serge Abiteboul Victor Vianu Jeffrey D. Ullman הסופר Rick Hull אינו מופיע משום ששמו מופרד לשני אלמנטים, כלומר לאלמנט author לא קיים צומת בן מסוג טקסט.

7 Spring 20057 בחירת אלמנט כלשהו - wildcard //author/* התוצאה: Rick Hull ה-wildcard * במקרה זה בוחר כל צומת אלמנט ללא חשיבות לשמו.

8 Spring 20058 גישה לתכונות /bib/book/@price התוצאה: “55” ה-@ מתייחס לתכונות ה-@price מתייחס לתכונה price @* מתייחס לתכונה כל שהיא

9 Spring 20059 בחירה לפי ביטויים בוליאניים /bib/book/author[first-name = “Rick”] התוצאה: Rick Hull הביטוי בתוך [ ] דורש כי שמו הפרטי של הסופר הוא Rick. שאלה: כתבו ביטוי המחזיר את כל הספרים מהמילניום הנוכחי? /bib/book[ year >= 2000] על מנת לבצע את השוואה, הערך הטקסטואלי של צומת year מומר לערך מספרי.

10 Spring 200510 בחירה לפי ביטויים בוליאניים //book[@price<60][publisher = "Addison-Wesley"] המשמעות של […][…] היא ששני הביטויים הבוליאניים חייבים להתקיים. התוצאה ? הביטוי הנ"ל שקול ל- //book[@price<60 and publisher = "Addison-Wesley"]

11 Spring 200511 ביטויים בוליאניים קיומיים (existential) /bib/book/author[first-name][address[zip][city]]/last-name התוצאה: מוחזרים שמות משפחה (last-name) של סופרים בעלי שם פרטי המופיע בתוך צומת נפרד ובעלי כתובת הכוללת מיקוד (zip) ושם עיר (city). המשמעות של [first-name] היא הדרישה כי לכל צומת author יש לפחות צומת בן first-name אחד. שאלה: החזירו סופרים בעלי שם פרטי בלבד (ללא שם משפחה). /bib/book/author[first-name][not(last-name)]

12 Spring 200512 פונקציות /bib/book[2] שקול ל- /bib/book[position() = 2] פונקציה position() מחזירה את המספר הסידורי של צומת ההקשר בקבוצת הייחוס שלו. //author[last()] פונקציה last() מחזירה את מיקום הצומת האחרון בקבוצת הייחוס. האם שני הביטויים הבאים שקולים? //author[1][2] //author[2][1]

13 Spring 200513 פונקציות - המשך /bib//*[name()=”book”] שקול ל- /bib//book name() הינה פונקציה המחזירה את שם הצומת. /bib/book[count(author)>1] count() מחזירה את מספר הצמתים בקבוצת הקלט. id(“a0130353000”) id() מחזירה את הצמתים בעלי תכונות ID כפי שנתון ע"י הקלט.

14 Spring 200514 XPath – כיווני ניווט (צירים – axes) ניתן לנוע על פני 13 הכיוונים הבאים: ancestor:: - מכיל אבות קדמונים של צומת ההקשר ancestor-or-self:: - מכיל אבות קדמונים של צומת ההקשר ואת הצומת עצמו attribute:: - מכיל אטריביוטים (תכונות) של צומת ההקשר child:: - מכיל בנים של צומת ההקשר descendant:: - מכיל צאצאים של צומת ההקשר descendant-or-self:: - מכיל צאצאים של צומת ההקשר ואת הצומת עצמו following:: - מכיל צמתים המופיעים אחרי צומת ההקשר במסמך למעט צמתים צאצאים

15 Spring 200515 כיווני ניווט - המשך following-sibling:: - מכיל אחים של צומת ההקשר המופיעים אחריו במסמך namespace:: - מכיל צמתים מסוג namespace של צומת ההקשר parent:: - מכיל את צומת האב (אם קיים) של צומת ההקשר preceding:: - מכיל צמתים המופיעים לפני צומת ההקשר במסמך למעט צמתים שהם אבות קדמונים preceding-sibling:: - מכיל אחים של צומת ההקשר המופיעים לפניו במסמך self:: - מכיל את צומת ההקשר עצמו

16 Spring 200516 קיצורים כתיב מקוצרכתיב מלא ברירת מחדלchild:: @attribute::.self::node()..parent::node() ///descendant-or-self::node()/ [number][position() = number]

17 Spring 200517 קיצורים- דוגמאות כתיב מקוצרכתיב מלא /bib/book/child::bib/child::book /bib/book/@price/child::bib/child::book/ attribute::price /.//title (equivalent to //title) /self::node()/descendant-or- self::node()/child::title //author/../descendant-or-self::node()/ child::author/parent::node()

18 Spring 200518 דוגמאות //author/descendant-or-self::node()/child::zip ⇔ //author//zip ⇔ //author/descendant::zip מה מחזירים הביטויים הבאים? //book/publisher/parent::*/author //book[author[position()<last()]] //book[count(author[1]) = count(author[1] | author[last()] ) ] שני הביטויים עלולים להחזיר תוצאות שונות אם מוסיפים בסוף בחירת מיקום

19 Spring 200519 דוגמאות - המשך מהם הספרים ששנת ההוצאה שלהם היא המאוחרת ביותר? //book[ not(year < //book/year) ] מי הם המחברים אשר כתבו יותר מספר אחד? יש להחזיר כל מחבר כזה פעם אחת בדיוק. /bib/book/author[.=../following-sibling::*/author and not(.=../preceding-sibling::*/author)]


Download ppt "Spring 20051 חלק 3: מבוא ל- XPath XML Path Language."

Similar presentations


Ads by Google