5.3.1 קישורים
5.3.2 הדרישות מ Xlink
5.3.3 simple link
5.3.4 הגדרת התנהגות הקישור
5.3.5 סמנטיקה של קישורים
5.3.6 קישורים מורחבים
5.3.7 סיכום

ההצלחה הגדולה של האינטרנט מקורה בקישורים . המשתמש נמצא במרחק קליק אחד מאינסוף משאבים. כאשר XML באה לעולם היא חסרה מרכיב מובנה של קישורים שהיה חלק מ HTML.

Xlink הוא הנסיון של W3C לתת ל XML את המרכיב הנחוץ הזה. Xlink כוללת את היתרונות של - XML חוזק וקלות שימוש ובנוסף מרחיב את יכולות הקישור הרגיל. השילוב של הגמישות של XML ביחד עם החוזק שבקישורים יגרום להתפתחות האינטרנט ולהגברת העניין בו אף יותר מכיום.

5.3.1 קישורים

לפני שניגש ל -Xlink נעבור בקצרה על קישורים פשוטים ב -HTML עם המושגים האלה נמשיך הלאה

קישור(link) הוא חיבור בין משאבים . משאב יכול להיות כל דבר אשר נגיש ברשת. ב-HTML החיבור בין המשאבים הוא ע"י תג a בנוסף למאפיין href אשר מציין את מיקומו של המשאב.

להלן דוגמה לקישור כזה :
<a href="http://www.cnn.com/infrx.htm">The cnn site </a>

הדפדפן מציג את הקישור ע"י צביעתו בצבע שונה והדגשתו בקו תחתון. כאשר המשתמש לוחץ על הקישור נטען הדף(המשאב) בדפדפן של המשתמש

הקישור ב- HTML כולל את המשאב ההתחלתי, שהמשתמש לוחץ עליו ואת משאב הסיום שאליו הוא מופנה. משאב ההתחלה הוא זה שנמצא בתוך התג a, במקרה שלנו זהו הטקסט the cnn site משאב זה הוא חלק מאלמנט הקישור עצמו ולכן הוא המשאב המקומי . אתר ה -cnn נמצא במיקום אחר ולכן הוא המשאב המרוחק.

המשאב המרוחק יכול להיות מכל סוג - דף WEB, קובץ הנמצא על שרת קבצים מרוחק, אפילו מצלמת וידאו

המאפיין href מציין את המשאב ע"י שימוש בציון URI.

דוגמאות לסוגים השונים שמציין מאפיין זה :

  • ftp://ftp.what.com/ex/img1.gif- קישור לשרת קבצים
  • mailto:bob@hotmail.com- קישור לכתובת דוא"ל
  • examples/ex1.html- קישור למשאב אשר נמצא על אותו שרת (כתובת יחסית)
  • http://www.cnn.com/one.html#number1- מיקום ספציפי בדף html

5.3.2 הדרישות מ Xlink

בנוסף ליתרונות שיש לקישור רגיל הגדירה W3C את הדרישות הבאות מ -Xlink :

  • עליה לאפשר להוסיף קישור לכל אלמנט של XML
  • על הקישורים להכיל מרכיבים המובנים הן ע"י אדם והן ע"י מכונה
  • מפתחים צריכים להיות מסוגלים לתת ל אפליקציית Xlink את כל המידע הדרוש
  • אודות הקישור
  • קישור יכול להיות מופעל לאו דווקא ע"י המשתמש
  • קישור יכול להכיל יותר משני משאבים
  • משאבים משני צידי הקישור יכולים להיות בעלי התנהגות שונה

5.3.3 simple link

סוג הקישור האקויולנטי לקישור ב- HTML הוא הקישור הפשוט.
דוגמה :
<go xlink:type="simple" xlink:href =" http://www.cnn.com/index.html" >The cnn site </go>

כאן האלמנט הוא go.
xlink:type="simple"

הקישור הפשוט מזוהה ע"י הסוג simple

xlink:href

מקביל ל href בקישור הרגיל

דוגמה להגדרה של קישור פשוט במסמך DTD

<!ELEMENT simple_link ANY>
<!ATTLIST simple_link
xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
xlink:type CDATA #FIXED "simple"
xlink:href CDATA #REQUIRED>

מסמך זה מתחיל בהצהרה על האלמנט שישמש כקישור ב - DTD , במקרה שלנו simple_link

לאחר מכן מגדירים שזהו אלמנט של Xlink אח"כ המאפיין xlink:type מגדיר את הסוד של הקישור כקישור פשוט. לבסוף מוגדר המאפיין href כ -REQUIRED

השימוש בקישור הפשוט הוא כמו שימוש בכל אלמנט XML אחר. מה שמבדיל הוא היכולת של אפליקציית Xlink לעבד את הקישורים.

דוגמה לשימוש באלמנט הקישור

<?xml version ="1.0"?>
<simple_link
xmlns:xlink="http://www3.org/1999/xlink"
xlink:type="simple"
xlink:href="http://www.cnn.com/index.html"
the cnn site
</simple_link>

ע"י שימוש ב- DTD שהגדרנו קודם ניתן להשתמש בקישור כך

<?xml version="1.0"?>
<!DOCTYPE simple_link SYSTEM "simple_link.dtd">
<simple_link xlink:href="http://www,cnn.com/index.html">
the cnn site
</simple_link>

5.3.4 הגדרת התנהגות הקישור

התנהגות הקישור אחרי שהוא מופעל נקבעת ע"י שני מאפיינים : show ו -actuate מאפיינים אלה מגדירים את ההתנהגות של הקישור , לא את המכניזם שיוצר התנהגות זו. מה שזה מאפשר הוא חופש פעולה לחברות תוכנה לבחור בעצמם את המימוש לפי הפלטפורמה המוצעת אם זה דפדפן או רובוט חיפוש.

Show ו-actuate הם אופציונליים , כלומר אין חובה לכלול אותם

Show

מאפיין זה מציין מה קורה כאשר אנו עוברים למשאב המקושר
ניתן לתת חמישה ערכים:

embed -המשאב צריך להיכנס בדיוק בנקודה שבה היתה ההפניה אליו. דוגמה טובה היא באמצעות תג Img של HTML

replace- המשאב צריך לעלות באותו הקשר, לדוגמה שימוש באותו חלון להצגת המשאב דוגמה טובה מ-HTML :
<a href="file.html"' target="_blank">some content </a>

  • new- מציין שהמשאב יוצג במקום אחר לא השפעה על ההצגה הקודמת. לדוגמה פתיחת חלון חדש כשהחלון הקודם עדיין פתוח.
  • Other- ההתנהגות אינה מוגבלת ע"י Xlink אך צריך להוסיף מאפיינים נוספים על מנת שאפליקציית ה Xlink תדע לפענח אותו .
  • none- ההתנהגות אינה מוגבלת ע"י Xlink ואין מאפיינים היכולים להוסיף מידע. האפליקציה המפענחת רשאית לעשות כרצונה

actuate

מאפיין זה מגדיר מתי הקישור מופעל
הערכים האפשריים :

  • onLoad- מופעל ברגע שפוגשים בו ( למשל: תמונה)
  • onRequest- לא מופעל עד אשר לא מתבצעת עליו פעולה , זה יכול להיות לחיצה של המשתמש או פרק זמן שעבר המוגדר ע"י התוכנה.
  • Other- לא מוגבל ע"י Xlink. נחוצים מאפיינים נוספים.

הנה מסמך DTD אשר מרחיב את הדוגמה הקודמת ע"י הוספת התנהגות

<!ELEMENT link (#PCDATA)>
<!ATTLIST link
xlink:type CDATA #FIXED "simple"
xlink:href CDATA #REQUIRED
xlink :show (new
|replace
|embed
|other
|none)
#IMPLIED
xlink:actuate (onLoad
|onRequest
|other
|none) #IMPLIED>

5.3.5 סמנטיקה של קישורים

המאפיין title

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

המאפיין role

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

<employee_link xlink:type="imple"
xlink:href="/rob_lau.xml"
xlink:role="/roles/person">
Rob Lau
</employee_link>

ב-role נמצא המידע איך לפענח את המידע אודות העובד שנמצא במסמך ה-XML

המאפיין arcrole

מאפיין זה מתאר את הקשר שבין המשאב המקומי למשאב המרוחק .
דוגמה :

<person xlink:type="simple"
xlink:href="/sue_lau.xm"
xlink:role="http://www.cnn.com/roles/person"
xlink:arcrole="http://www.cnn.com/relationships/mother"
xlink:title="Here is information about Rob's mother">
Rob Lau
</perosn>

5.3.6 קישורים מורחבים

לעיתים קישורים פשוטים אינם מספיקים .בין המקרים:

דוגמה:

<moviereview xlink:type="extended">
<locator xlink;type="locator"
xlink:href="/PulpFiction.html"
xlink:role="http://www.cnn.com/roles/Movie/">
<locator xlink;type="locator"
xlink:href="/TheHunter.html"
xlink:role="http://www.cnn.com/roles/Movie/">
<locator xlink;type="locator"
xlink:href="/DieHard.html"
xlink:role=http://www.cnn.com/roles/Movie/">
<moviereview>

כמו שאנו רואים קישור אחד מקשר למספר משאבים מרוחקים

קישורים מורחבים מוגדרים בצורה דומה לקישורים פשוטים.
במקום simple נותנים את הערך extended ל-xlink:type
ניתן להשתמש גם בארבע ה אלמנטים נוספים :resource,locator,arc,title
אלמנטים אלה מוסיפים מידע אודות הקישור.

הנה דוגמה ל-DTD שמגדיר קישור מורחב

<!ELEMENT elink (locator* , resource* , arc*, title?)>
<ATTLIST elink
xlink;type CDATA #FIXED "extended"
xlink:role CDATA #IMPLIED
xlink:title CDATA #IMPLIED>

אלמנט locator

DTD של אלמנט זה:

 
<!ELEMENT locator (title?)>
<!ATTLIST locator
xlink:type CDATA #FIXED "locator"
xlink:href CDATA #REQUIRED
xlink:role CDATA #IMPLIED
xlink:title CDATA #IMPLIED
<xlink:label NMTOKEN #IMPLIED

אלמנט זה מחזיק התייחסות לקישור הקשור לקישור המרכזי. Href משמש לאותה מטרה כמו בקישור פשוט , גם title ו-role משמשים לאותן מטרות. אלמנט זה מהווה מזהה עבור האלמנט locator

אלמנט resource

הגדרת ה- DTD של אלמנט זה:

<!ELEMENT resouce ANY>
<!ATTLIST resource
xlink;type CDATA #FIXED "resource"
xlink:role CDATA #IMPLIED
xlink:title CDATA #IMPLIED
xlink:label NMTOKEN #IMPLIED>

אלמנט זה מהווה את הצד של המשאב המקומי בקישור . מכיוון שזהו המשאב המקומי אין לו מאפיין href

ל - role,title,label ישנו אותו תפקיד

דוגמה :

<elink>
<resource xlink:role="http://www.movies.com/movie">
<title>Matrix , The</title>
<date>1999</date>
</resource>
<locator xlink:role="http://www.movies.com/person"
xlink:title="Keanu Reeves"
xlink:href="http://www.movies.com/people/KeanuReeves.xml/">/
<locator xlink:role="http://www.movies.com/person"
xlink:title="Kate Bush"
xlink:href="http://www.movies.com/people/KareBush.xml/">/
</elink>

הדוגמה מראה שלושה משאבים , אחד מקומי ושניים מרוחקים. המקומי מחזיק מידע אודות סרט והמשאבים המרוחקים אודות שחקנים בסרט. המשאב המקומי מצויין ע"י האלמנט resource, ומכיל מידע אודות השם והתאריך של הסרט. המשאב במקומי מגדיר לאפליקציות המשתמשות בו שזהו סרט ע"י המאפיין role.

האלמנט arc

הנה ה- DTD של אלמנט זה

<!ELEMENT arc (title?)>
<!ATTLIST arc
xlink:type CDTAT #FIXED "arc"
xlink:title CDATA #IMPLIED
xlink:arcrole CDATA #IMPLIED
xlink:show (new|replace|embed|other|none) #IMPLIED
xlink:actuate (onLoad | onRequest | other| none) #IMPLIED
xlist:from NMTOKEN #IMPLIED
xlist:to NMTOKEN #IMPLIED>

אלמנט זה מתאר את מידע אודות המעבר בין הקישורים השונים באותו קישור זאת ע"י שימוש

המאפיינים from ו- to .

דוגמה :

<elink>
<locator xlink:label="A" xlink:href="http://www.cnn.com/x1.xml"/>
<locator xlink:label="B" xlink:href="http://www.cnn.com/x2.xml"/>
<locator xlink:label="C" xlink:href="http://www.cnn.com/x3.xml"/>
<arc xlink:from="A" xlink:to="B" xlink:title="link from x1 to x2"/>
<arc xlink:from="B" xlink:to="B" xlink:title="link from x3 to x1"/>
</elink>

ישנן שש אפשרויות מעבר אך מידע מוצג רק על שני מעברים, הישום שמשתמש בקישור יכול להשתמש במעברים הנותרים כראות עיניו.

ניתן לקבץ מספר משאבים בקבוצה אחת ע"י נתינת שם זהה לכולם . ע"י כך אלמנט arc יכול לתאר יותר ממעבר אחד .

דוגמה :

<elink>
<locator xlink:label="A" xlink:href="http://www.cnn.com/x1.xml"/>
<locator xlink:label="A" xlink:href="http://www.cnn.com/x2.xml"/>
<locator xlink:label="C" xlink:href="http://www.cnn.com/x3.xml"/>
<arc xlink:from="A" xlink:to="B" xlink:actuate="onRequest"/>
<arc xlink:from="B" xlink:to="B" xlink:actuate="onRequest"/>
</elink>

בדוגמה זו התנהגות מוגדרת ע"י אלמנט actuate לארבעה מבין שישה מעברים אפשריים. אלמנט titlle ה-DTD :
<!ELEMENT title ANY>
<!ATTLIST xlink:type CDATA #FIXED "title">

ע"י שימוש באלמנט title במקום מאפיין יש לנו גמישות רבה יותר. להגדיר שתי כותרות , כל אחת בשפה שונה.לדוגמה נית
<elink>
<title xml:lang="en">A large book!</title>
<title xml:lang="fr">Une grande livre</title>
some content
</elink>

5.3.7 סיכום

היתרונות של Xlink רבים , ביניהם:

  • אפשרות לקישור משאבים מכל סוג שהוא
  • קישורים דו כיווניים
  • קישורים בין קבוצות של משאבים
  • אפשרות לשליטה מרכזית בקישורים וכך להפוך אותה לטובה יותר

 

CDF
קישורים שימושיים