ראינו לא מזמן כיצד ליצור RSS Feed לאתר (הסימן הכתום הזה שהדפדפן מראה כשאפשר להירשם לחדשות ועידכונים מהאתר...)
שם בעצם יצרנו קובץ xml פשוט והדפדפן הציג לנו אותו בצורה יפה ומסודרת. רציתי להראות משהו נחמד שנקרא xslt שזהו בעצם קובץ, שאומר לתוכנה שקוראת xml, איך להציג את הקובץ
שימו לב, את הקובץ xml עם התוכן אני יוצר כרגיל איך שיצרתי עד היום בלי שינוי, הקובץ הזה רק נותן הוראה איך להציג את התוכן, וכך הדפדפן, או כל קורא xml יודע להציג אותו בצורה יפה ולא בתור טקסט פשוט
נראה דוגמה ואז נבין איזה פשוט זה.
נניח שיש לי קובץ xml כזה:

<?xml version="1.0" encoding="utf-8" ?>
    <channel>
        <title>coding games</title>
        <link>http://www.talgiladi.net</link>
        <description>code samples </description>
        <ttl>180</ttl>
        <item>
            <title><![CDATA[Creating xml documents with xml text writer]]></title>
            <link>http://www.talgiladi.net/XmlTextWriter.aspx</link>
            <guid isPermaLink="true">http://www.talgiladi.net/XmlTextWriter.aspx</guid>
            <description><![CDATA[xml text writer for fast and easy creation of xml documents]]></description>
            <pubDate>2/5/2008 9:24:18 PM</pubDate>
        </item>
</channel>

זה בעצם אותו קובץ שהשתמשתי בו בשביל ה RSS רק הורדתי 2 שורות כדי שהדפדפן לא יזהה אותו בתור RSS ויציג אותו בצורה שונה.
כעת נלך ליצירת קובץ חדש ונבחר xslt

create xslt file

קיבלנו קובץ xml חדש. 3 שורות הראשונות אנחנו לא נוגעים, כעת נתחיל לתת הוראות. זיכרו שהקובץ הזה אמור להורות לקורא xml כיצד להציג כל חלק בקובץ
נתחיל להסביר לו איך לקרוא:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes msxsl" >
<xsl:output method="xml" indent="yes"/>

עד כאן השורות המקוריות שאומרות שהקובץ הוא xslt, שהוא בעצם גיליון עיצוב ל xml, ושהתוצאה שלו תהיה xml

<xsl:template match="/">

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

<html><head><title>

מכיוון שאני רוצה שהתוצאה תהיה html חוקי אני אומר לו להדפיס את תגי ה html
כעת אני רוצה לתת לדף שלי כותרת לפי ערך שאני בוחר מקובץ ה xml ולכן נכתוב את ההוראה:

<xsl:value-of select="/channel/title" />

ההוראה הזאת אומרת להציג ערך שהוא התוצאה של האלמנט בשם "channel/title", כך שכל ערך שאשים במסמך ה xml שלי בתוך האלמנט הזה הוא יהיה הכותרת של הדף.
כעת נמשיך ב html פשוט

</title></head><body>

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

<div style="direction:rtl" />

ועכשיו אני לתת הוראה לרוץ בלולאה, עבור כל אלמנט item שיש לי ב xml

<xsl:for-each select="/rss/channel/item">

ועבור כל אלמנט נכתוב את התבנית הבאה:

<ddiv style="direction:rtl">/span>
<a href="{link}">/span>
<xsl:value-of select="title" />
</a>

בתוך הלינק שמתי {link} כך שהערך שנמצא באלמנט link בקובץ xml שלי יוכנס כאן.
ואז שוב השתמשתי במה שראינו מקודם- להציג את הערך שנמצא בתוך אלמנט title בתוך כל item. ונוסיף גם לדף שלנו את התיאור של כל item:

&<span>
</span>xsl:value-of select="description" disable-output-escaping="yes" />
&</span>

שוב אותה שיטה, רק הוספתי גם הוראה לא לפרמט את התוצאה - הכוונה היא שאם הקורא יראה את הסימן span class="code_keywords">< אז לא לפרמט אותו ל &lt; וזאת מכיוון שיתכן שהתיאור שלי במאמר יכיל בעצמו Html כמו טקסט בולט, קו תחתון וכו' ואני רוצה שזה אכן יראה כמו Html ולא כמו אוסף של דברים מוזרים...
זהו... כעת במסמך ה xml שלי שעבורו בניתי את ה xslt יש להוסיף שורה למעלה שאומרת לקורא ה xml שיש קובץ מיוחד שמסביר איך להציג את התוכן , ולתת קישור לקובץ הזה:

<?xml-stylesheet type="text/xsl" href="MyXSLT.xslt" version="1.0"?>

ישנה מחלקה מיוחדת בדוט נט בשם XPath שעוזרת לנו להשתמש ב xslt בצורה תכנותית להמרה של קבצי xml, שזה בעצם מה שהדפדפן עושה או כל קורא xml אחר, בעזרת השם נדבר על המחלקה הזאת בקרוב

להורדת דוגמה

למידע נוסף

טוען נתונים...
אהבתם?
המליצו לאחרים!

נהניתם? בעיות? הערות?
אני רוצה לשמוע!
rss feed