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 การแสดง | การแสดงตัวเอง