19

Click here to load reader

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

  • View
    223

  • Download
    5

Embed Size (px)

Citation preview

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

Spring 2005 1

:3חלק XPathמבוא ל-

XML Path Language

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

Spring 2005 2

מסמך דוגמא<bib> <book price=“55”>

<publisher>Addison-Wesley</publisher> <author>Serge Abiteboul</author> <author>

<first-name>Rick</first-name> <last-name>Hull</last-name>

</author> <author>Victor Vianu</author> <title>Foundations of Databases</title> <year>1995</year> </book> <book>

<publisher>Freeman</publisher> <author>Jeffrey D. Ullman</author> <title>Principles of Database and Knowledge Base Systems</title> <year>1998</year> </book></bib>

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

Spring 2005 3

כעץXMLמסמך

bib

book book

publisher author . . . .

Addison-Wesley Serge Abiteboul

צומת השורש

צומת המסמך

price=55

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

Spring 2005 4

– דוגמאות פשוטותXPathביטויי

/bib/book/year

התוצאה:

<year>1995</year>

<year>1998</year>

/bib/paper/year

התוצאה:

(paperקבוצה ריקה של צמתים )אין אלמנטים בעלי שם

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

Spring 2005 5

חיפוש צאצאים מוגבל(Kleene)סגור

//authorהתוצאה:

<author>Serge Abiteboul</author><author>

<first-name>Rick</first-name> <last-name>Hull</last-name></author><author>Victor Vianu</author><author>Jeffrey D. Ullman</author>

/bib//first-nameהתוצאה:

<first-name>Rick</first-name>

קבוצה 4של

צמתים

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

Spring 2005 6

בחירת צמתים שאינם אלמנטים

text)( מחזיר צמתים מסוג טקסטnode)( מחזיר כל צמת ללא חשיבות לסוגו

הביטוי הבא/bib/book/author/text)(

מחזיר את שמות הסופרים ששמם נמצא בצומת טקסט אחד.Serge Abiteboul Victor Vianu

Jeffrey D. Ullman

הסופרRick Hull ,אינו מופיע משום ששמו מופרד לשני אלמנטים לא קיים צומת בן מסוג טקסט. authorכלומר לאלמנט

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

Spring 2005 7

wildcard - בחירת אלמנט כלשהו

//author/*התוצאה:

<first-name>Rick</first-name>

<last-name>Hull</last-name>

* במקרה זה בוחר כל צומת אלמנט ללא wildcardה-חשיבות לשמו.

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

Spring 2005 8

גישה לתכונות

/bib/book/@price

”55“התוצאה:

מתייחס לתכונות @ה-

price מתייחס לתכונה price@ה-

מתייחס לתכונה כל שהיא @*

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

Spring 2005 9

בחירה לפי ביטויים בוליאניים /bib/book/author[first-name = “Rick”]

התוצאה:<author>

<first-name>Rick</first-name><last-name>Hull</last-name>

</author>.Rick דורש כי שמו הפרטי של הסופר הוא [ ]הביטוי בתוך

שאלה: כתבו ביטוי המחזיר את כל הספרים מהמילניום הנוכחי?

/bib/book[ year >= 2000] מומר לערך מספרי.yearעל מנת לבצע את השוואה, הערך הטקסטואלי של צומת

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

Spring 2005 10

בחירה לפי ביטויים בוליאניים

//book[@price<60][publisher = "Addison-Wesley"]

היא ששני הביטויים הבוליאניים […][…]המשמעות של חייבים להתקיים.

? התוצאה-הביטוי הנ"ל שקול ל

//book[@price<60 and publisher = "Addison-Wesley"]

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

Spring 2005 11

ביטויים בוליאניים קיומיים (existential)

/bib/book/author[first-name][address[zip][city]]/last-name:התוצאה

של סופרים בעלי (last-name)מוחזרים שמות משפחה שם פרטי המופיע בתוך צומת נפרד ובעלי כתובת

.(city) ושם עיר (zip)הכוללת מיקוד המשמעות של]first-name[ היא הדרישה כי לכל צומת

author יש לפחות צומת בן first-name.אחד שאלה: החזירו סופרים בעלי שם פרטי בלבד )ללא שם

משפחה(. /bib/book/author[first-name][not)last-name(]

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

Spring 2005 12

פונקציות /bib/book[2]

-שקול ל/bib/book[position)( = 2] פונקציהposition)( מחזירה את המספר הסידורי של

צומת ההקשר בקבוצת הייחוס שלו. //author[last)(]

פונקציהlast)( מחזירה את מיקום הצומת האחרון בקבוצת הייחוס.

?האם שני הביטויים הבאים שקולים //author[1][2] //author[2][1]

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

Spring 2005 13

פונקציות - המשך

/bib//*[name)(=”book”] -שקול ל/bib//bookname)(.הינה פונקציה המחזירה את שם הצומת

/bib/book[count)author(>1]count)(.מחזירה את מספר הצמתים בקבוצת הקלט

id)“a0130353000”(id)( מחזירה את הצמתים בעלי תכונות ID כפי שנתון

ע"י הקלט.

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

Spring 2005 14

XPath – כיווני ניווט )צירים – axes)

הכיוונים הבאים:13ניתן לנוע על פני ancestor:: מכיל אבות קדמונים של צומת ההקשר -ancestor-or-self:: מכיל אבות קדמונים של צומת ההקשר -

ואת הצומת עצמוattribute:: מכיל אטריביוטים )תכונות( של צומת ההקשר -child:: מכיל בנים של צומת ההקשר -descendant:: מכיל צאצאים של צומת ההקשר -descendant-or-self:: - מכיל צאצאים של צומת ההקשר

ואת הצומת עצמוfollowing:: מכיל צמתים המופיעים אחרי צומת ההקשר -

במסמך למעט צמתים צאצאים

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

Spring 2005 15

כיווני ניווט - המשך

following-sibling:: מכיל אחים של צומת ההקשר המופיעים -

אחריו במסמךnamespace:: מכיל צמתים מסוג -namespace של צומת

ההקשרparent:: מכיל את צומת האב )אם קיים( של צומת ההקשר -preceding:: מכיל צמתים המופיעים לפני צומת ההקשר -

במסמך למעט צמתים שהם אבות קדמוניםpreceding-sibling:: - מכיל אחים של צומת ההקשר המופיעים

לפניו במסמךself:: מכיל את צומת ההקשר עצמו -

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

Spring 2005 16

קיצורים

כתיב מלא כתיב מקוצר

child:: ברירת מחדל

attribute:: @

self::node)( .

parent::node)( ..

/descendant-or-self::node)(/ //

[position)( = number] ]number[

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

Spring 2005 17

קיצורים- דוגמאות

כתיב מלא כתיב מקוצר

/child::bib/child::book /bib/book

/child::bib/child::book/attribute::price

/bib/book/@price

/self::node)(/descendant-or-self::node)(/child::title

/.//title )equivalent to //title(

/descendant-or-self::node)(/child::author/parent::node)(

//author/..

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

Spring 2005 18

דוגמאות//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)(] ( ]

שני הביטויים עלולים להחזיר תוצאות שונות אם מוסיפים

בסוף בחירת מיקום

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

Spring 2005 19

דוגמאות - המשך

מהם הספרים ששנת ההוצאה שלהם היאהמאוחרת ביותר?

//book[ not)year < //book/year( ] מי הם המחברים אשר כתבו יותר מספר אחד? יש

להחזיר כל מחבר כזה פעם אחת בדיוק. /bib/book/author[.=../following-sibling::*/author

and not).=../preceding-sibling::*/author(]