בולנט - דברים מיוחדים...     פרוטו - בניית אתרים

Israeli ASP Organization

ארגון ה-ASP הישראלי

מאמרים/דוגמאות קוד
קישורים
ספרות
חיפוש כללי:

חפש!
כלליHTMLASPASP.NETSQLמסדי נתוניםJavaScriptXML * XSLDHTML * CSSעיצוב וגרפיקהשרתיםComponentsפרסום ושיווקקידום אתריםקופירייטינגPHP
פרסומת
דף ראשי מדורים דרושים הרשמה למועדון אודותינו צור קשר
מיקום: מאמרים ודוגמאות קוד > XML * XSL

עידן ה XML

  • XML פרושו eXtensible Markup Language
  • XML זהו שפת תגים ממש כמו HTML
  • XML עוצב כדי להגדיר מידע
  • תגי ה-XML אינם מוגדרים מראש. עליך להגדיר בעצמך את התגים שתשתמש בהם.

ההבדל העיקרי בין XML לבין HTML

XML לא בא כדי להחליף את ה-HTML.
XML ו-HTML פותחו למטרות שונות אחד מהשני:

XML פותח כדי להגדיר מידע, ולהתמקד על מה זה מידע.
HTML פותח כדי להציג מידע, ולהתמקד על איך שהמידע נראה.

HTML בא בשביל להציג מידע, XML בא בשביל להגדיר מידע.

XML הוא דינמי

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

XML מאפשר למתכנת להשתמש בתגים משלו ובמבנה מסמך משלו.

XML הוא תוסף ל-HTML

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

XML בעתיד באינטרנט

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

אני מאמין ש-XML יהיה חלק חשוב ועיקרי בעתיד האינטרנט,
ממש כמו שה-HTML היה הבסיס לרשת האינטרנט.

כיצד XML יכול להיות שימושי?

  • XML יכול להחזיק מידע מופרד מה-HTML שלך.
  • XML יכול לשמש אותך כדי להחזיק מידע בתוך ה-HTML שלך.
  • XML יכול לשמש כפורמט להעברת מידע.
  • XML יכול לשמש ככלי לאחסנת מידע בקבצים או מערכי נתונים.

XML יכול להחזיק מידע מופרד מה-HTML שלך

דפי HTML נועדו כדי להציג מידע. כיום בתוך מסמכי HTML המידע נמצא בפנים.
כל חישובי המשתנים, בניית המערכים, הוצאה ממסדי נתונים, וכו נמצא בתוך ה-HTML שלך.
עם XML מידע זה יכול לשבת בקובץ XML נפרד, או בתוך אובייקט XML.
כתוצאה מכך הינך יכול להתרכז ב-HTML ככלי העיצוב וההצגה של המידע,
ולהיות בטוח ששינויים בלוגיה וההתעסקות עם המידע לא יפריעו ולא יכריחו
אותך לטפל ו/או לשנות את קוד ה-HTML שלך.

XML יכול לשמש אותך כדי להחזיק מידע בתוך ה-HTML שלך

מידע XML יכול להתקיים בתוך מסמכי HTML בצורת "Data Islands" (איי-מידע, נשמע מעפן בעברית).
אתה עדיין יכול להתרכז ב-HTML להצגת המידע.

XML יכול לשמש כפורמט להעברת מידע

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

כיום כבר יש פיתוחים חדשים כגון SOAP, XMLHTTP, Web Services שמאפשרים
להעביר מידע ברשת בין אתר לאתר או בין דף לדף בפורמט XML.
XMLHTTP למשל מאפשר הפעלה של קובץ ASP מצד הקליינט תוך כדי העברת
נתונים מהדף הקורא אל הדף שנקרא בפורמט XML.
SOAP ו-Web Services הם כלים חדשים ומרתקים שמאפשרים בנייה של "תחנות מידע"
שמוסרים ומחלקים מידע לכל דף שמבקש.
לדוגמא Web Service ששולח עץ מידע בפורמט XML של תחזית מזג האוויר אל האתר
שלך, או תוצאות משחקי הליגה האחרונות.
עם נחשוב קצת יותר בקטן, Web Service יכול לשמש כתחנה שמעבירה כותרות חדשות
מהאתר שלך לאתרים אחרים שרוצים לעדכן גולשים אצלם.

XML יכול לשמש ככלי לאחסנת מידע

XML יכול לאחסן מידע בקבצים וגם מסדי נתונים. אפליקציות יכולות להיכתב כדי
לאחסן ולשלוף מידע, ואפליקציות כלליות כדי להציג את המידע.

ב-SQL Server 2000 ניתן במקום לשלוף Record-sets מתוך הטבלאות,
לשלוף גם מידע בצורת XML, וגם פנימה.

XML Syntax

דוגמא של מסמך XML:

<% OpenTextFile Response.Write ShowAsCode(GetFile("xml/cd_catalog.xml")) CloseTextFile %>

<?xml version="1.0"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Dont forget me this weekend!</body> </note>
ניתוח המסמך:

השורה הראשונה במסמך היא הגדרת ה-XML. היא תמיד צריכה להיות בראש המסמך.
זוהי הגדרת גירסת ה-XML. בדוגמא זאת, הינו מאשר את סטנדרט ה-1.0 של XML:
<%=ShowAsCode("")%>
השורה הבאה הינה האלמנט הראשון בדף, ה-Root Element:
<%=ShowAsCode("")%>
השורות הבאות מגדירות 4 אלמנטים בנים (Child Elements) של אלמנט השורש (Root Element):

<to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Dont forget me this weekend!</body>
השורה האחרונה מגדירה את סוף אלמנט השורש:
<%=ShowAsCode("")%>
כל האלמנטים ב-XML חייבים להיסגר עם תג סוגר

ב-HTML חלק מהאלמנטים לא חייבים להיסגר בתג סוגר. הקוד הבא חוקי ב-HTML:
<%=ShowAsCode("

This is a paragraph" & vbCrlf & "

This is another paragraph")%>
ב-XML כל האלמנטים חייבים להיסגר עם תג סוגר:
<%=ShowAsCode("

This is a paragraph

" & vbCrlf & "

This is another paragraph

")%>
XML מחזיק בתוכו מידע, ומידע הוא רגיש. XML לא תקני, פשוט לא יעביר מידע הלאה,
אפילו עם שכחת ליסגור תג אחד.

תגים ב-XML הם Case Sensetive (רגישים לאותיות קטנות וגדולות)

תגים ב-XML רגישים לאותיות קטנות וגדולות. התג שונה מהתג
ועל כן פתיחה וסגירה של תגים חייבת להיות באותה צורה:
<%=ShowAsCode(" אלמנט לא תיקני!!!" & vbCrlf & "אלמנט תיקני")%>
כל תגי ה-XML חייבים להיות מקוננים בצורה סדירה

ב-HTML כמה תגים יכולים להיות מקוננים בצורה לא סדירה עם אחרים, לדוגמא:
<%=ShowAsCode("This text is bold and italic")%>
ב-XML כל התגים חייבים להיות מקוננים בצורה מסודרת עם האחרים בצורה הזאת:
<%=ShowAsCode("This text is bold and italic")%>
כל מסמך XML חייב תג שורש

כל מסמכי XML חייבים להכיל תג אחד שמגדיר את השורש, או באנגלית בשם שתשתמשו הרבה: Root Element.
פתיחת תג השורש קובע את התחלת המסמך (השורש), והסגירה שלו סוגרת את המסמך.
במסמך XML יכול להיות רק תג שורש אחד, וכל התגים האחרים חייבים להיות מקוננים בתוכו.
כל אלמנט יכול להכיל סאב-אלמנטים (Child Elements). סאב-אלמנטים חייבים להיות מקוננים
בסדר בתוך אבי-האלמנטים (Parent Element).

<root> <child> <subchild> </subchild> </child> </root>
Attributes חייבים להיות בתוך גרשיים !

אלמנטים ב-XML יכולים להכיל Attributes ממש כמו ב-HTML, אבל לא כמו ב-HTML,
Attributes ב-XML חייבים חייבים להיות בתוך גרשיים, אחרת כל פיספוס קטן יכול להפיל את ה-XML.
למד את שני מסמכי ה-XML שלמטה, הראשון לא תיקני, והשני תיקני:

<?xml version="1.0"?> <note date=12/11/99> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Dont forget me this weekend!</body> </note> <?xml version="1.0"?> <note date="12/11/99"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Dont forget me this weekend!</body> </note>

XML Attributes

Attributes ב-XML בדרך-כלל נועדים כדי להגדיר אלמנטים, או כדי להביא מידע נוסף על אלמנטים.
למשל ב-HTML שורה זו: מכילה Attribute בשם SRC שמכיל מידע
לאלמנט בשם IMG.

Attributes תמיד נמצאים בתוך התג של הלאמנט, הנה כמה דוגמאות:

<!-- HTML example: --> <img src="computer.gif"> <a href="demo.asp"> <!-- XML example: --> <file type="gif"> <person id="3344">
בדרך-כלל, או נפוץ יותר, להשתמש ב-Attributes כערכים להגדיר מידע שלא חלק מתכולת המידע
במסמך XML. במילים אחרות, בדרך-כלל מידע בתוך Attributes יותר חשוב לפארסר ה-XML (XML Parser)
מאשר לגולש. בכל-אופן, בדוגמא מעל ה-id של אלמנט ה-person הוא משתנה counter שלא חשוב
לגולש, אבל חשוב לאפליקציה שרוצה לפרמט או להציג את אלמנט ה-person.

Elements vs. Attributes

הציצו בדוגמאות ה-XML האלו:

<-- :כדי להגדיר מין Attributeשימוש ב- --> <person sex="female"> <firstname>Anna</firstname> <lastname>Smith</lastname> </person> <-- :כדי להגדיר מין Elementשימוש ב- --> <person> <sex>female</sex> <firstname>Anna</firstname> <lastname>Smith</lastname> </person>
בדוגמא הראשונה המין הוא Attribute, ובדוגמא האחרונה המין הוא Element.
שני הדוגמאות מעניקות לקורא את אותו מידע.

אין חוקים קבועים באשר למתי להשתמש ב-Attributes כדי להגדיר מידע, ומתי להשתמש ב-Elements.
בניסיון שלי למדתי להשתמש כמה שיותר באלמנטים, ובמידע פנימי להצגת האלמנטים כגון id,
סוג הערך או גודל הערך - אני יוצר Attributes לאלמנטים.

הנה עוד דוגמא, שמדגימה איך אלמנטים יכולים לשמש במקום Attributes.
שלושת דוגמאות ה-XML מכילות את אותו מידע.
Attribute של תאריך מודגם בראשון, אלמנט של תאריך בשני, ואלמנט מובנה באלמנטים בשלישי.

<?xml version="1.0"?> <note date="12/11/99"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Dont forget me this weekend!</body> </note> <?xml version="1.0"?> <note> <date>12/11/99</date> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Dont forget me this weekend!</body> </note> <?xml version="1.0"?> <note> <date> <day>12</day> <month>11</month> <year>99</year> </date> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Dont forget me this weekend!</body> </note>
האם להימנע מ-Attributes ?

למה לך להימנע מ-Attributes ? הנה כמה בעיות עם שימוש ב-Attributes :

  • Attributes לא יכולים להכיל ערכים מרובים (אלמנטים כן).
  • Attributes לא יכולים להיות מובנים.
  • Attributes לא יכולים להגדיר מבנה (כמו ש-Child elements יכולים).
אם תתחיל להישתמש ב-Attributes כדי להכיל מידע נרחב, אתה יכול לגמור עם
עם מסמכים שגם קשה לתפעל אותם, וגם לשנות אותם.
מה שאני מנסה להגיד זה שאתה צריך להשתמש באלמנטים להגדרת מידע.
השתמש ב-Attributes רק בשביל להגדיר מידע שאינו שייך לקורא/לגולש.
בבקשה אל תיגמור בצורה כזו:
<?xml version="1.0"?> <note day="12" month="11" year="99" to="Tove" from="Jani" heading="Reminder" body="Dont forget me this weekend!"> </note>
זה לא ממש נראה כמו XML, הבנת?

וולידציה של XML

מסמכי XML "Well Formed"

מסמך XML שהוא "Well Formed" הוא מסמך שתואם את חוקי ה-Syntax של XML שהגדרנו למעלה.
"Well Formed" הוא ביטוי שמשתמשים בו הרבה בעולם ה-XML, והוא חשוב מאוד.
המסמך הבא הוא "Well Formed" XML:

<?xml version="1.0"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Dont forget me this weekend!</body> </note>
הגדרת מסמך ה-XML למעלה, רק תג שורש אחד (Root Element), כל הסאב-אלמנטים (Child Elements)
נמצאים בתוך השורש, לכל תג/אלמנט יש סוגר, וכולם מקוננים בצורה נכונה.

DTD & Schemas

למסמכי XML אפשר להצמיד Schema ו/או DTD, שמאפשרים לעשות וולדיציה אישית על הרכב ה-XML.
עם תרצו, אוכל להרחיב על הנושא בעתיד.

XML בדפדפנים

XML ב-Netscape Navigator 6

נטסקייפ הבטיחו תמיכה מלאה ב-XML בדפדפן החדש שלהם.
האמת היא שלא בדקתי את הנושא לעומק, מפאת שנאתי הגדולה לדפדפן
המקולל הזה. שלא תבינו אותי לא נכון, אני לא אוהב את הדיקטטור הגדול בשם Microsoft,
אבל שחברה כמו Netscape משאירה בשוק את Netscape 4 שנתיים שלמות
ומורידה את רמת התיכנות באינטרנט לקרשים, איך אפשר לא לשנוא אותם?

XML ב-Internet Explorer 5

לאינטרנט אקספלורר יש תמיכה מלאה בסטרנדרטים גם ל-XML 1.0 וגם לXML Document Object Model (DOM).
הסטרנדרטים האלו נקבעים ע"י ה(World Wide Web Consortium (W3C

תעשו לעצמכם טובה אישית ותורידו את האינטרנט אקספלורר 5.5 הנפלא של מיקרוסופט:
אינטרנט אקספלורר (גירסה 5.0) תומכת ב:

  • הצגת מסמכי XML
  • תמיכה מלאה בסטנדרטים ה-W3C DTD
  • XML מובנה בתוך HTML כ-Data Islands
  • הזנת מידע XML לתוך אלמנטים של HTML
  • פירמוט XML עם XSL
  • פירמוט XML עם CSS
  • תמיכה ב-"Behaviors" של CSS
  • גישה ל-XML DOM
הצגת XML עם Internet Explorer 5.0

אתה יכול להשתמש באינטרנט אקספלורר כדי להציג לך את מסמכי ה-XML שלך, בדיוק כמו שאתה
רואה כל מסמך HTML. יש כמה דרכים לפתוח מסמך XML. אתה יכול ללחוץ עליו מלינק,
להזין את הכתובת שלו ב-address bar, לחיצה כפולה עליו מספרייה, וכו.

עם תפתח קובץ XML עם אינטרנט אקספלורר, הוא יציג לך את ה-Root Element, וה-Child Elements פתוחים.
סימן של "פלוס" (+) ו"מינוס" (-) יופיעו משמאל לאלמנטים שמכילים עוד אלמנטים, ולחיצה עליהם
תפתח או תיסגור את ה"עץ" שלהם.

עם תלחצו על הקובץ שלפניכם: note.xml, אינטרנט אקספלורר יפתח אותו בצורה זאת.

צפייה של XML לא תיקני

עם תפתח קובץ XML לא תיקני (לא "Well Formed"), אינטרנט אקספלורר יציג לך שגיאה בקובץ.
עם תלחצו על הקובץ שלפניכם: note_error.xml, הדפדפן יציג שגיאה.

דוגמאות XML

כדי לאפשר לכם הרגשה יותר טובה באשר למה זה XML, אספתי כמה דוגמאות בשבילכם:

אוקיי! הבנתי מה זה XML, אבל מה לעזאזל אני עושה איתה ???

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

XSL

זאת השיטה שאני משתמש בה להצגת XML לרוב. זה נראה גם ש-XSL, שכבר נהפך ל-XSLT,
תופס תאוצה בקרב מפתחי האינטרנט. בהצצה ראשונה, XSLT נראה כמו HTML, אבל מקרוב
אפשר לראות ש-XSLT בנוי מ-HTML, ומאלמנטים מיוחדים לשליפה והתעסקות עם המידע מה-XML.

איך זה פועל?
אפשר לדמיין את קובץ ה-XML (או האובייקט) וקובץ ה-XSLT כשני גלגלי שיניים.
פעולת החיבור ביניהם נקראת "Transformation", וזה בעצם חיבור ו"הפעלת" ה-XSLT על
המידע ב-XML. כששני "גלגלי שיניים" אלו מתחברים, הם פולטים החוצה HTML שנוצר
מהפעלה של ה-XSLT על המידע.

צפו למאמר נרחב על XSLT בקרוב.

XML DOM ב-JavaScript או ב-VBScript

כדי ליצור הצגה של נתונים מתוך XML בצורה דינמית גם בצד הסרבר וגם בצד הקליינט
ניתן ורצוי להשתמש באובייקט ה-XML DOM המשוכלל שמאפשר ניווט ושליטה מלאה
בעץ המידע ה-XML.
אובייקט ה-XML DOM הוא בעצם אובייקט שמכיל את עץ האלמנטים של ה-XML,
הזנת ה-XML לתוך האובייקט יכולה לקרות מload- פשוט של קובץ XML,
או מהזנת string XML בעזרת loadXML, או בנייה דינמית של אלמנטים לתוכו.

צפו למאמר נרחב על XML DOM בקרוב.

סיכום

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

בנייה של אתר טוב עם שורשים חזקים צריכה להיות מחושבת ומאורגנת.
שליפה והתעסקות עם נתוני database צריכה להיות השיכבה הכי נמוכה והיא צריכה להיכתב
בצורה כזאת שאחרי שכתבת את המנגנון לא תצטרך יותר להתעסק עם שאילתות וקריאות לdatabase.
השיכבה השנייה היא האפליקציות הקטנות שמרכיבות ביחד את האפליקציה הכוללת.
הם משתמשות בשיכבת הdatabase שכתבת כדי לישלוף מידע ממסד הנתונים ולהעביר אותו
ל"עץ" נתונים בצורת XML ולהתכונן להעביר אותו לשיכבה הבאה - שהוא הצגת המידע לקורא.
השיכבה האחרונה יכולה להיות בכמה שיטות כמו שנאמר למעלה, אבל שהגעת לשלב הזה
אתה יודע בדיוק איך המידע יגיע עלייך! כל מה שאתה צריך לעשות זה לעצב את המידע בצורה
שאתה רוצה אל הקורא.

כך אנו מפרידים בצורה בלתי ייאמנת את השיכבות השונות שאתר גדול ברשת בנוי עליו,
וניהולו נהפך לעבודה מסודרת ומיקצועית עם שיכבות ניפרדות והרגשה טובה בראש ובמחשב :)

אשמח לקבל תגובות, הערות ובקשות לאי-מייל שלי, cyx_@hotmail.com

ותעברו לחשיבה XMLית אנשים !



התגובות שלכם

         
01. 12/10/2005  ערן
כל הכבוד, מאמר לעניין

02. 19/10/2005  עוז
תודה רבה, מאמר מעולה!

03. 20/10/2005  רפי ב.
XML אפשר ליכתוב עם ה-Notepad הפשוט של Windows.

דוגמא שימושית:
אם למשל תרצה ליצור קונפיגורציה לאתר שלך, ליצור מעין אוסף של מידע שאתה צריך בהרבה מקומות, כמו שם של החברה, כתובת, אימיליים, כיווני-צבע שלא יכולים להיכנס ל-CSS, אפשר ליצור קובץ XML שיכיל בתוכו את הערכים הדרושים.

04. 08/09/2005  אדם
מאמר לעניין, כתוב יפה ונוח לקריאה
מסביר כמו שצריך. אחלה!

05. 12/09/2005  עמי
כאשר אני רוצה לכתוב XML איפה אני רושם אותו ?? על מה ?? תוכנה כלשהי ??

         

מחבר: רפי בודילרמת קושי: 2  ||  ציון: (8.73684210526316)כל הזכויות שמורות ל-IAO ©

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