2008 13 אוגוסט 2008

Tokenizing מחרוזת מופרד בתוך XSL

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

XML להשתנות (food.xml): -
נניח המשימה היא tokenize מופרד מיתר באמצעות פסיק, את את "מילות מפתח" תג

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<date>July 2008</date>
<description>All about things we eat everyday</description>
<keywords>Fruits, Vegetables, Pulses, Meat, Cereals </keywords>
</food>

XSL (food.xsl): -

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>XSL 1.0 Delimited String Tokeniser</title>
</head>
<body>
<xsl:value-of select="food/meta"/>
<div >
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="food/keywords" />
<xsl:with-param name="delimitr" select="','" />
</xsl:call-template>

</div>
</body>
</html>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="string" />
<xsl:param name="delimitr" />
<xsl:choose>
<xsl:when test="contains($string, $delimitr)">
<div style="border:1px solid red;">
<h3><xsl:value-of select="substring-before($string,$delimitr)" /></h3>
<xsl:variable name="data" select="substring-before($string,$delimitr)"/>
</div>
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="substring-after($string, $delimitr)" /><xsl:with-param name="delimitr" select="$delimitr" /></xsl:call-template>
</xsl:when>
<xsl:otherwise>
<div style="border:1px solid red;">
<h3><xsl:value-of select="$string" /></h3>
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

פלט HTML כתוצאה: -

<div>
<div style="border: 1px solid red;">
<h3>Fruits</h3>
</div>
<div style="border: 1px solid red;">
<h3> Vegetables</h3>
</div>
<div style="border: 1px solid red;">
<h3> Pulses</h3>
</div>
<div style="border: 1px solid red;">
<h3> Meat</h3>
</div>
<div style="border: 1px solid red;">
<h3> Cereals </h3>
</div>
</div>

אין צורך לומר ... פשוט לשנות את הפרמטר "delimitr" כדי מפריד על פי בחירתך


2008 4 אוגוסט 2008

בעיה עם מיקום () ב XSL ... או זה?

היה לי את הבעיה strage תוך יצירת XSL היום. חיפשתי תשובות בכל רחבי הרשת, אבל couldnt למצוא כל .... למעשה אני מניח! אני בכח יודע מה הבעיה שלי, אז מה אני מחפש?

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

הבעיה בהצהרה:
יש לי את ה-XML, שם יש שני צמתים עם מספר פריטים בו את הפריטים בין שני צמתים יש התכתבות 00:59. בדוגמה הבאה, כל פריט <array הצומת name="PLAYURL" /> מתייחס (המיקום המתאים) כדי פריט <array הצומת name="SITENAME" />

<?xml version="1.0" encoding="utf-8"?>
<myplaylists>
<playlist>
<title>Best of Rest </title>
<array name="SITENAME">
<str>www.musicindiaonline.com</str>
<str>www.dhingana.com</str>
<str>www.raaga.com</str>
<str>www.smashits.com</str>
<str>www.desimusic.com</str>
<str>www.musicplug.in</str>
</array>
<array name="PLAYURL">
<str>http://www.musicindiaonline.com/123/</str>
<str>http://www.dhingana.com/play/123</str>
<str>http://www.raaga.com/123</str>
<str>http://ww.smashits.com/123</str>
<str>http://www.desimusic.com/123</str>
<str>http://www.musicplug.in/123</str>
</array>
</playlist>
</myplaylists>

עכשיו, יש לי לולאה, שם אני לולאה דרך <array name="SITENAME">, ואני רוצה לקבל את הפריט בנושא (במיקום המתאים) ב <array name="PLAYURL">,

מה היית normaly מנסה לעשות זה ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
play from : <a href="{../../array[@name='PLAY']/str[position()]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

סליחה!! זה לא יעבוד ... אה! Surpised ...

עכשיו אתה בטח רוצה לנסות, משהו כזה ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos"> <xsl:value-of select="position()"/></xsl:variable>
play from : <a href="{../../array[@name='PLAY']/str[$pos]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

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

Dont ייאוש!! נסה את זה

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ pos-int ]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

Dont שואלים אותי למה זה עובד. כי אני לא צריך סיבה נכון ... אם אתה עושה! נא לא לזרוק הערה. זה יכול להיות שימושי למדי. כן! אם יש לך כותרת טובה יותר לתפקיד זה, לעשות ירידה לי בשורה :)


2008 4 מאי 2008

כלול בתוך XSL XSL

אם XML / XSL הופך הוא domian שלך, אז יש פעמים שאנחנו רוצים peice של קוד דינמי לשמש פריט בספריה (להיעשות מחדש שמיש). למה אני מתכוון, מן הסתם יכול להיות ברור יותר עם התרחיש הזה למשל.

תאר לעצמך שאתה יוצר אתר אינטרנט (באמצעות XML, XSL transfroms ofcourse) ורוב הדפים יהיה מודול תגובות. טוב! אז אם אתה מעתיק או להדביק את הקוד הזה לתוך התבנית כל דף (שבו אני לא צריך להגיד, אבל לעשות תחזוקה חוזרת סיוט) או אפילו טוב יותר, אתה יוצר קובץ לכלול שניתן נעצרה בכל מקום שבו אתה רוצה את זה בדף שלך ( ים) ...
אז איך אנחנו יוצרים קובץ XSL לכלול ולכלול אותו בתוך קובץ אחר XSL? הנה כמה ...

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

1. food.xml - נתוני XML קובץ שבו השינוי יחול
2. food.xsl - קובץ XSL הראשי, אשר יהפכו food.xml שלנו
3. inc_fruits.xsl - XSL כוללים קובץ יעבד נתונים פירות
4. inc_vegtables.xsl - XSL כוללים קובץ יעבד נתונים vetetables

אני לא חושב שאני צריך להסביר הרבה, את הקודים המרכיבים הנ"ל, יהיה עצמית הסבר ...

FOOD.XML


<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<date>July 2008</date>
<description>All about things we eat everyday</description>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>

<vegetables>
<item name="spinach" moreinfo="http://www.spinach.com">Spinach is full of iron</item>
<item name="asparagus" moreinfo="http://www.asparagus.com">Asparagus contains loads of vitamin D </item>
<item name="fenugreek" moreinfo="http://www.fenugreek.com">Fenugreek is rich in vitamin C</item>
</vegetables>
</food>


FOOD.XSL


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="inc_fruits.xsl" />
<xsl:include href="inc_vegetables.xsl" />
<xsl:template match="/">
<html>
<head>
<title>Title</title>
</head>
<body>
<h3><xsl:value-of select="/food/description" /></h3>
Modification Date : <xsl:value-of select="/food/date" />
<hr/>
<h5> About Fruits</h5>
<xsl:call-template name="about_fruits"/>

<hr/>
<h5> About Vegetables</h5>
<xsl:call-template name="about_vegetables"/>

<hr/>
</ Body>
</ Html>
</ Xsl: תבנית>
</ Xsl: stylesheet>


INC_FRUITS.XSL

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" />
<xsl:template name="about_fruits">
<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>


INC_VEGETABLES.XSL

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" />
<xsl:template name="about_vegetables">
<xsl:for-each select="/food/vegetables/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

להוריד את כל הקבצים הנ"ל כאן (252 הורדות)


2008 4 אפריל, 2008

עבודה עם תכונות ה-XML צומת XSLT

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

דגימת ה-XML אנו עובדים עם נראה כך ...

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>
</food>

כך מאפשר להתחיל להפוך XML מעל שלנו באמצעות XSL

דוגמה 1: הצגת הערך תכונה נבחר

<xsl:value-of select="/food/fruits/item[@name='orange']" /><br />
to get more information about <a href="{/food/fruits/item[@name='orange']/@moreinfo}" target="new" ><xsl:value-of select="/food/fruits/item[@name='orange']/@name" /> </a>

התוצאה HTML ייראה

Orange is the color and rich in vitamin C,
to get more information about <a href="http://www.orange.com" target="new">


דוגמא 2: שהסתחררו ולהציג את כל שמות מאפיין XML וערכיהם

<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>,
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>

התוצאה HTML ייראה


attribute name : name, attribute value : mango
attribute name : moreinfo, attribute value : http://www.mango.com
attribute name : name, attribute value : banana
attribute name : moreinfo, attribute value : http://www.banana.com
attribute name : name, attribute value : orange
attribute name : moreinfo, attribute value : http://www.orange.com
attribute name : name, attribute value : Papaya
attribute name : moreinfo, attribute value : http://www.papaya.com


להוריד את כל הקבצים הנ"ל כאן (245 הורדות)



לראות את החלל הזה, אני אמשיך לעדכן את זה עם הממצאים החדשים ...


NDK הבית | הבעת IT | חך הבעת | Penmenship הבעת | הנוראים הבעת | לבטא את עצמי