תכנון קובץ ה-XML
התוכנית שאנו ניצור ב-PHP תייצר קובץ XML שתייצא מידע אודות ספרים מומלצים שמישהו דיווח עליהם. התוכנית השניה שניצור תקרא את קובץ ה-XML הנ"ל ותנתח את המידע בו, ולאחר מכן תדפיס את המידע למסך בצורה שנבחר. המידע שנרצה לייצא בקובץ ה-XML יהיה מידע על המדווח ועל הספרים שהוא ממליץ עליו.
המידע שנרצה לייצא על המדווח יהיה רק שמו. לכן ניצור תג בשם <REPORTER>
שיכיל את שם המדווח:
<REPORTER>name of the reporter</REPORTER>
המידע שנרצה לייצא על כל ספר שעליו הוא ממליץ יהיה: שם הספר, שם הסופר, ז'אנר, מספר עמודים ותקציר. לכן ניצור תג <BOOK>
שיכיל ילדים (nodes) עם המידע הנ"ל:
<BOOK>
<NAME>name of the book</NAME>
<AUTHOR>name of the author</AUTHOR>
<TYPE>type of book</TYPE>
<PAGES>number of pages</PAGES>
<SUMMARY>short summary of the book</SUMMARY>
</BOOK>
את רשימת הספרים המומלצים נרצה לקבץ ולסדר לפי מפתח כלשהו שנקבע. המפתח יכול להיות כל אחד מנתוני הספר פרט לתקציר. לשם כך את רשימת הספרים (תגי <BOOK>
) עם ערך מפתח זהה נשרשר תחת תג <GROUP>
שתגדיר לנו קבוצת ספרים עם מכנה משותף (לפי מפתח הקיבוץ). את הקבוצות של ערכי המפתח נשרשר מתחת לתג <GROUPBY>
שתגדיר לנו את המפתח לפיו הרשימה מקובצת ומסודרת. המבנה ייראה בערך כך:
<GROUPBY key="groupby_key"/* | הגדרת המפתח לפיו אנו מקבצים ומסדרים את רשימת הספרים. | */ |
>
<GROUP value="group_value_1"/* | ערך המפתח של הקבוצה הראשונה... | */ |
>
<BOOK>
...
</BOOK>
<BOOK>
...
</BOOK>
</GROUP>
<GROUP value="group_value_2"/* | ערך המפתח של הקבוצה השניה... | */ |
>
<BOOK>
...
</BOOK>
</GROUP>
</GROUPBY>
בקבצי XML חייב להיות תמיד תג שורש אחד! לכן את המידע של רשימת הספרים והמדווח נשרשר תחת תג שורש שנקרא לו <RECOMMENDS>
.
<RECOMMENDS>
<REPORTER>...</REPORTER>
<GROUPBY key="groupby_key">
...
</GROUPBY>
</RECOMMENDS>
ניתן היה גם לקבוע קובץ DTD על המבנה הזה, אך לצורך הפשטות של המדריך לא נעשה זאת.