2009 7 มีนาคม 2009

โทร Windows หลายฟังก์ชั่น onload ในจาวาสคริ

ริอีกชิ้นเล็ก ๆ ของกลอุบายจาวาสคริปต์ที่ผมต้องขุดรอบเนื่องจากสถานการณ์ commaned มัน หนึ่งในเว็บไซต์ของฉันฉันมีสถานการณ์เช่นนี้ที่ฉันมีที่จะใช้ "windows.onload" สองครั้ง สิ่งแรกที่จะมาถึงใจที่ไม่มีประสบการณ์เหมือนผม (ฉันต้องบอกว่าตรงไปตรงมาตั้งแต่ฉันได้ใช้กรอบ JavaScript และห้องสมุดผมได้ forgotton ที่จะทำสิ่งง่ายๆด้วยตัวเอง ... ฉันเศร้า แต่จริง) คือวิธีต่อไปนี้ ...

 window.onload = onloadfn1;
 window.onload = onloadfn2;
 window.onload = onloadfn3;
 ฯลฯ ..

ขออภัยที่จะพูด แต่นี้ทำงานเคยชิน ... dont ต้องการเพื่อหารือเกี่ยวกับวิทยาศาสตร์การดำเนินการของจาวาสคริมาก ... แต่ตามประสบการณ์ล่าสุดของฉันเพียงฟังก์ชั่นล่าสุด (onloadfn3) จะป่วยจริงได้รับการดำเนิน

ในสถานการณ์ปกติซึ่งแตกต่างจากเหมือง (ซึ่งผมจะพูดถึงน้อยกว่า) ... คุณสามารถทำอย่างใดอย่างหนึ่งดังต่อไปนี้การดำเนินการฟังก์ชั่น onload mutliple ....

หรืออะไรเช่นนี้

 doOnLoad function () {
         onloadfn1 ();
         onloadfn2 ();
         onloadfn3 ();
 }
 window.onload = doOnLoad;

สำหรับสถานการณ์ปัจจุบันของฉันฉันไม่สามารถใช้อย่างใดอย่างหนึ่งดังกล่าวข้างต้น ...
ฉันไม่จำเป็นต้องเรียก windows.onload สองค่อนข้างที่เรียกฟังก์ชันที่สองภายในฟังก์ชัน onload เดียวทำไม? ที่นี่ดูอย่างรวดเร็วที่งบปัญหาของฉันคือ ...

"หน้าไซต์ของฉันมีโครงสร้างเหมือนธีม WordPress .... เช่นมี header.php ที่พบบ่อยและ Footer.php ที่ได้รับรวมเป็นทั้งหมดเป็นหน้าเว็บไซต์ มีฟังก์ชั่น implementaion onload ใน Footer.php ที่จะทำหน้าที่ onload บางที่พบบ่อยคือ และมีไม่กี่หน้าที่ต้องการบางสิ่งบางอย่างจาก OnLoad ของตนเองนอกเหนือจากที่ทำโดยฟังก์ชั่น onload ที่พบบ่อย ถ้าผมกำหนดฟังก์ชันโทรกลับโดยตรงไปยังตัวจัดการ window.onload จะมากกว่านั่งเรียกกลับได้รับมอบหมายก่อนหน้านี้ใน Footer.php "

.... เป็นปัญหาของฉันเข้าใจ :) ?

ดี! มีโซลูชั่นไม่กี่แห่งที่ผมพบคือ พวกเขาทั้งหมดจะคล้ายกันมากและส่วนใหญ่ implementions ของการแก้ปัญหาให้โดยไซมอน Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...

Solution:

เพียงเพิ่มโค้ดจาวาสคริปต์นี้ไปยังเว็บไซต์ ...

 ฟังก์ชั่น addLoadEvent (func) {
     var oldonload = window.onload;
     ถ้า (window.onload typeof! = 'ฟังก์ชั่น') {
        window.onload = func
     } else {
        window.onload = function () {
            ถ้า (oldonload) {
                   oldonload ()
           }
           func ()
        }
    }
 }

และเรียกว่าแทน "windows.onload" ปกติ

 addLoadEvent (FunctionToRunOnPageLoad);
 addLoadEvent ฟังก์ชั่น (() {
 * / รหัสมากขึ้นในการทำงานในการโหลดหน้า *
 }); 

ข้อดีของโค้ดนี้ ...
1 ในขั้นต้นจะช่วยให้คุณมีเหตุการณ์ windows.onload หลายที่เรียกว่าแยกจากส่วนของรหัสของคุณโดยไม่ต้อง overridding ความหมายก่อนหน้านี้
2 มันเป็นสร้างความรำคาญจริงๆ มันสามารถนำมาวางไว้ในแฟ้มที่มีสคริปต์อื่น ๆ ของคุณหรือในแฟ้มที่แยกต่างหาก
3 มันทำงานได้แม้ว่า window.onload ได้ถูกกำหนด


2008 20 กันยายน 2008

ปัญหาที่เกิดขึ้นยุบ TEXTAREA ใน XSL / XSLT


งบที่มีปัญหา:
ฉันวิ่งเข้าไปในปัญหานี้เกี่ยวกับ textareas ใน XSLs ในคำง่ายปัญหาเกิดขึ้นเมื่อคุณมีแท็ก <textarea> ที่ว่างเปล่าแล้วมันจะยุบไป <textarea />
เช่นหากคุณมีสิ่งที่ต้องการต่อไปนี้ใน XSL และของคุณสำหรับข้อมูล XML ค่า TEXTAREA, ไม่มีอะไรตอบแทน ...

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ textarea>

ในฐานะที่เป็นเบราว์เซอร์ที่ไม่รู้จักนี้จะทำให้ส่วนที่เหลือของ HTM​​L รูปแบบที่จะวิ่งเข้ามาในพื้นที่ข้อความ

แนวทางแก้ปัญหา:

ใน XSL เพิ่มไม่ใช่ทำลายพื้นที่ () หลังจาก xsl: tag.BEWARE ค่าที่จะดูแลพื้นที่พิเศษนี้คุณได้เพิ่มในระหว่างการตรวจสอบด้านลูกค้าของข้อมูลนี้

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ textarea>

หรือ
<xsl:value-of select="concat (DESCRIPTION,'')"/>

หรือ
แทรก <xsl:value-of select="@unknown" tag /> ชี้ไปที่คุณลักษณะที่ไม่รู้จัก นี้จะบังคับให้ parser PHP XSLT เพื่อสร้างเปิดและปิดแท็กพื้นที่ข้อความถึงแม้ว่ามันจะมีอะไรที่อยู่ในระหว่าง

หรือ
แทรกเขตข้อมูล <xsl:text> ที่มีพื้นที่ที่จะบังคับให้แท็กปิด

อย่างไรก็ตามแม้ว่าการแก้ปัญหาดังกล่าวข้างต้นอาจดูเหมือนการแก้ไขปัญหาที่เกิดขึ้นผมยังไม่มั่นใจว่าพวกเขาจะถูกต้องและวิธีที่ดีที่สุดที่จะแก้ไขได้ หากมีวิธีใดที่ดีอื่น ๆ ของการแก้ไขมุมแหลมนี้กรุณาแจ้งให้เราทราบ


2008 14 กันยายน 2008

ความหลากหลายของ XSL เงื่อนไขการทดสอบ (คอลเลกชันของ XSL: IF และ XSL: เมื่อเงื่อนไข TEST)

ทุกครั้งที่ฉันต้องทำ XSL: หาก XSL หรือ: เมื่อการทดสอบผมได้กลับไปที่หนังสืออ้างอิง ฉันไม่เคยดูเหมือนจะจำได้ คิดว่าจะมีมากขึ้นออกมีเช่นเดียวกับฉันที่ค่อนข้างจะชอบที่จะมีทั้งหมดของพวกเขาเป็นไปได้ที่เดียวพร้อมที่จะถูกเรียกเมื่อมีความจำเป็น

สำหรับผู้ที่มีใหม่ ... ไวยากรณ์สำหรับ XSL: IF

test="expression"> <xsl:if
<- เนื้อหา: แม่แบบ ->
</ xsl: if>

xsl: ถ้า / XSL: เมื่อคอลเลกชันทดสอบ
เงื่อนไขด้านล่างนี้มีทั้งหมดที่เรียบง่ายและอธิบายตนเอง ดังนั้นผมเชื่อว่ามันจะไม่ต้องอธิบายมาก

test="position()=last()-1"> <xsl:if
นี้ถ้าองค์ประกอบสุดท้าย แต่หนึ่งในรายการ!
</ xsl: if>

<xsl:if test="SALARY> 5000 ">
เงินเดือนของสมาชิกผู้นี้มากกว่าอาร์เอส 5000
</ xsl: if>

<xsl:if test="count(JOBS)> 3 ">
มีรายได้มากกว่า 3 ตำแหน่งงานในรายการนี​​้!
</ xsl: if>

<xsl:if test="(@DEPT ='SALES') หรือ (@JOINYEAR = '1997')">
คนนี้เป็นฝ่ายขายหรือปีของเขาจากการเข้าร่วมเป็น 1997
</ xsl: if>

test="EXPERIENCE"> <xsl:if
บุคคลนี้มี atleast องค์ประกอบหนึ่งสำหรับเด็กที่มีประสบการณ์
</ xsl: if>

test="@HOBBY"> <xsl:if
คนที่มีคุณลักษณะงานอดิเรก
</ xsl: if>

เงื่อนไขข้อความเดียวกันสามารถนำมาใช้สำหรับ XSL: เลือก / XSL: เมื่อเช่นกัน

xsl: เลือก

XSLT ของ xsl: คำแนะนำและเลือกเป็นคล้ายกับ xsl: ถ้า แต่มีความแตกต่างที่สำคัญบางประการดังนี้
•หนึ่ง xsl: องค์ประกอบเลือกสามารถทดสอบมากกว่าหนึ่งเงื่อนไขและเพิ่มโหนดที่แตกต่างกับต้นไม้ผลตามที่เงื่อนไขเป็นจริง
• xsl: เลือกองค์ประกอบสามารถมีแม่แบบเริ่มต้นที่จะเพิ่มต้นไม้ผลถ้าไม่มีเงื่อนไขเป็นจริง (เปรียบเทียบ xsl: ถ้าที่มีเทียบเท่าของสภาพ "อื่น" no.)
• xsl: เลือกองค์ประกอบมี subelements เฉพาะที่จำเป็นเพื่อให้การทำงานในขณะที่คุณสามารถวางองค์ประกอบดีขึ้นใด ๆ ที่คุณต้องการภายในของ XSL: หากองค์ประกอบ

<xsl:choose>
test="boolean-expression"> <xsl:when
สนใจสิ่งที่เมื่อ boolean นี้แสดงออกเป็น ture
</ xsl: เมื่อ>
<xsl:otherwise> ทำอย่างอื่น </ xsl: มิฉะนั้น>
</ xsl: เลือก>


2008 13 สิงหาคม 2008

Tokenizing String คั่นภายใน XSL

หากความต้องการของคุณคือการแยกค่าโหนดใน XML, ที่ประกอบด้วยสตริงที่คั่นด้วยค่าลงไปในแต่ละรายการแล้วคุณได้มาถึงสถานที่ที่เหมาะสม ... ลองดูได้ที่ตัวอย่างด้านล่าง หากคุณไม่คุ้นเคยกับนิด ๆ หน่อย ๆ ของ XML และ XSL ... ผมไม่คิดว่าคุณจะต้องการคำอธิบายใด ๆ
นอกจากนี้ตัวอย่างนี้รวมถึงการใช้งานของฟังก์ชั่นเช่น XSL XSL: โทรแม่, xsl: substring ก่อน, xsl: substring หลังถ้านั่นคือสิ่งที่คุณหลังจาก

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 พบใด ๆ .... ที่จริงฉันเดา! ฉันอาศัยทราบว่าปัญหาของฉันคือเพื่อให้ฉันทำในสิ่งที่มองหา?

ต่อไป! ในกรณีที่คุณมีปัญหานี้เหมือนกันมากเกินไปและอย่างใดโดยอำนาจของแรงที่คุณมีการจัดการที่ดินในหน้านี้ ... คุณจะขอบคุณฉันตัน ... และถ้าคุณมีที่ดิน accidently ในหน้านี้สำหรับชะตากรรมบางอย่างแปลกและคุณเกิดขึ้นเป็น นักพัฒนา XSL, DO จดบันทึกนี้ตอนนี้สำหรับสาเหตุอนาคตถ้าวันหนึ่งคุณต้องเผชิญกับปัญหานี้แล้ว FORCE อาจจะไม่ได้อยู่กับคุณ

งบปัญหา:
ฉันมี XML นี้ซึ่งมีสองโหนดกับหลายรายการในนั้นและรายการระหว่างทั้งสองโหนดจะมี 1-1 จดหมาย ในตัวอย่างด้านล่างรายการในแต่ละโหนด <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>

Sorry!! นี้ทำงานเคยชิน ... Ah! 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>

อย่าถามฉันว่าทำไมการทำงาน สาเหตุผมมีเหตุผลที่ถูกต้อง ... ถ้าคุณทำ! กรุณาอย่าวางแสดงความคิดเห็น มันอาจจะมีประโยชน์สวย นอกจากนี้! ถ้าคุณมีชื่อที่ดีกว่าสำหรับการโพสต์นี้ทำวางฉันบรรทัด :)


2008 2 สิงหาคม 2008

การตั้งค่า DOCTYPE ใน XSL

สัปดาห์ที่แล้วผมได้สร้างรูปแบบ HTML / CSS progessive สำหรับลูกค้า, การทดสอบใน IE6, IE7 และ FF 3, ประจักษ์สมบูรณ์ดี ... จนกระทั่ง! เค้าโครงไปต่อไปลงวงจร manufacting มันล้มเหลว องค์ประกอบเค้าโครงหน้าเพิ่งไปทั่วทุกสถานที่เมื่อรูปแบบ HTML ได้แปลงเป็น XSL และ XML นำไปใช้กับมัน ... ว้า!!

นอนไม่หลับแล้วมากกว่าวันหยุดสุดสัปดาห์ในความคาดหมายของเช้าวันจันทร์เมื่อฉันจะต้องแก้ไข SH นี้ ** แต่ตอนนี้มี experince เล็กน้อยในการจัดการกับชนิดนี้สถานการณ์ (Quirks เบราว์เซอร์ที่ผมหมายถึง), ฉันรู้มันได้จะทำอย่างไรกับอะไรอย่างอื่น แต่ DOCTYPE .... และมันคือ ...

ปัญหา:
คุณต้องการควบคุมมากกว่า DOCTYPE เนื่องจากการเปลี่ยนแปลงของคุณจะมี DOCTYPE เริ่มต้นอย่างชัดเจนและรูปแบบที่คุณจะออกโยน

โซลูชัน:
XSLT รายละเอียด วิธีการให้ออกไปตั้ง DOCTYPE จาก choise นอกจากนี้สำหรับเรานักพัฒนา UI, หัวข้อที่น่าสนใจจะเป็น วิธีการแสดงผล HTML และ วิธีการส่งออก XML .

ดี! ก่อนที่คุณจะได้รับเบื่อที่นี่คือการแก้ไข

สำหรับเช่นถ้าคุณมี DOCTYPE ต่อไปนี้ในรูปแบบ HTML ของคุณ:. -

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

จากนั้นใน XSL คุณจะต้องมีดังต่อไปนี้: -

<xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/loose.dtd" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" indent="yes" />

และในที่สุด! ไม่แน่ใจว่าเอาท์พุท XSLT ของคุณเชื่อฟัง DOCTYPE คุณได้เลือกไว้


2008 4 พฤษภาคม 2008

รวม XSL XSL ภายใน

หาก XML / XSL แปลงเป็น domian ของคุณแล้วมีเวลาเมื่อเราต้องการชิ้นส่วนของรหัสแบบไดนามิกที่จะใช้รายการที่ห้องสมุด (ที่จะทำใหม่ใช้งาน) สิ่งที่ฉันหมายความอาจอาจจะทำให้ชัดเจนมากขึ้นกับสถานการณ์เช่นนี้

ลองนึกภาพคุณกำลังสร้างเว็บไซต์ (และใช้ XML, XSL transfroms ofcourse) และมากที่สุดของหน้าเว็บจะมีโมดูลความเห็น ดี! แล้วทั้งคุณคัดลอกหรือวางรหัสนี้เป็นแม่แบบในทุกหน้า (ซึ่งผมได้ขอพูด แต่ทำให้การบำรุงรักษาและการทำงานซ้ำฝันร้าย) หรือดียิ่งขึ้นคุณจะสร้างแฟ้มรวมซึ่งอาจจะทำลายในที่ที่คุณต้องการได้ในหน้าเว็บของคุณ ( s) ...
ดังนั้นเราจะสร้างไฟล์ 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: template>
</ 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 พวกเขาจะโหลดของเว็บไซต์ที่มีข้อมูลการยืดยาวเกี่ยวกับเรื่องนี้ แต่ไม่มีผู้ใดผมพบว่ามีช่วงสั้น ๆ และแม่นยำ ... นี้ไม่มีสอน 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: looping ผ่านและแสดงชื่อแอตทริบิวต์ทั้งหมด 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 บ้าน | การแสดงไอที ​​| เพดานการแสดง | Penmenship การแสดง | Awe การแสดง | การแสดงตัวเอง