2008 4 Agustus 2008

Sebuah masalah dengan posisi () dalam XSL ... atau itu?

Aku punya masalah strage saat membuat XSL hari ini. Mencari jawaban seluruh internet, tapi tak bisa menemukan .... Sebenarnya saya kira! Saya berkat tahu apa masalah saya, jadi apa yang saya cari?

Anyway! Hanya jika anda memiliki masalah yang sama juga dan entah bagaimana dengan kekuatan FORCE Anda berhasil mendarat di halaman ini ... Anda akan berterima kasih padaku ton ... Dan jika Anda telah sengaja mendarat di halaman ini untuk beberapa nasib aneh dan Anda berada pengembang XSL, DO MEMBUAT CATATAN INI SEKARANG, UNTUK MASA DEPAN penyebab, Jika suatu hari, Anda menghadapi masalah ini, maka FORCE mungkin tidak dengan Anda.

Soal pernyataan:
Aku punya XML, di mana ada dua node dengan beberapa item di dalamnya dan barang antara dua node memiliki korespondensi satu ke satu. Pada contoh di bawah, masing-masing item dalam <array simpul name="PLAYURL" /> berhubungan (posisi yang sesuai) untuk item dalam <array simpul 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>

Sekarang, saya memiliki satu lingkaran, di mana saya loop melalui <array name="SITENAME">, dan saya ingin mendapatkan item terkait (pada posisi yang sesuai) dalam <array name="PLAYURL">,

Apa yang Anda normaly akan mencoba lakukan adalah ...

<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>

MAAF! INI BEKERJA wont ... Ah! Surpised ...

Sekarang Anda mungkin akan ingin mencoba, hal seperti ini ...

<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>

Dan lagi ini tidak akan bekerja ... Sekarang Anda garuk-garuk kepala, mencoba untuk menghubungi semua orang yang Anda berpikir tahu beberapa XSL dan bisa membantu apapun ... Anda mencoba setiap pilihan lain ... dan masih wont work ... Nah! Thats apa yang terjadi pada saya minimal ...

DONT putus asa! TRY INI

<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 ASK ME WHY IT WORKS. Penyebab i dont memiliki alasan yang tepat ... jika Anda lakukan! Jangan menjatuhkan komentar. Mungkin cukup berguna. Juga! jika Anda memiliki JUDUL yang lebih baik untuk posting ini, melakukan drop me a line :)


2008 2 Agustus 2008

Mengatur DOCTYPE dalam XSL

Minggu lalu saya membuat sebuah tata letak HTML / CSS progessive untuk klien, diuji di IE6, IE7 dan FF 3, tampak baik-baik saja ... SAMPAI! tata letak pergi lebih bawah siklus manufacting. Gagal. Halaman elemen tata letak hanya pergi di seluruh tempat ketika tata letak HTML diubah menjadi XSL dan XML diterapkan untuk itu ... Nyebelin!

Tidak bisa tidur ok selama akhir pekan, untuk mengantisipasi Senin pagi, ketika aku harus memperbaikinya SH **. Tapi sekarang memiliki pengalam sedikit dalam menangani ini dengan jenis situasi (quirks Browser, maksud saya), saya tahu itu ada hubungannya dengan hal lain kecuali DOCTYPE .... dan It WAS ...

Masalah:
Anda ingin kontrol atas DOCTYPE, karena transformasi Anda akan menyertakan DOCTYPE standar secara eksplisit, dan Anda tata letak akan keluar untuk melemparkan.

Solusi:
XSLT spesifikasi menyediakan metode output untuk menetapkan DOCTYPE dari choise. Juga, bagi kita UI pengembang, topik yang menarik akan menjadi metode output HTML dan metode output XML .

Nah! sebelum Anda mendapatkan bosan, di sini adalah memperbaiki.

Untuk misalnya, jika Anda memiliki DOCTYPE berikut dalam versi HTML Anda:. -

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

Kemudian pada XSL Anda harus memiliki berikut ini: -

<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" />

dan Akhirnya! pastikan Anda keluaran XSLT mematuhi DOCTYPE Anda pilih.


2008 4 Mei 2008

Sertakan XSL dalam XSL

Jika XML / XSL Mentransformasi adalah domian Anda, maka ada kalanya kita ingin peice kode Dinamis untuk digunakan barang perpustakaan (yang akan dibuat dapat digunakan kembali). Yang saya maksud, mungkin bisa dibuat lebih jelas dengan skenario misalnya.

Bayangkan Anda membuat sebuah website (dan menggunakan XML, XSL transfroms ofcourse) dan sebagian besar halaman akan memiliki Modul Komentar. Nah! maka baik Anda menyalin atau sisipkan kode ini ke setiap halaman template (yang saya dont memiliki mengatakan, tapi membuat mimpi buruk pemeliharaan dan pengerjaan ulang) atau bahkan lebih baik, Anda membuat file TERMASUK yang bisa ditarik di mana pun Anda inginkan di halaman Anda ( s) ...
Jadi BAGAIMANA KITA MENCIPTAKAN file XSL TERMASUK dan termasuk di dalam file lain XSL? Berikut adalah bagaimana ...

Agar lebih jelas ... di sini adalah daftar singkat dari file yang Anda akan menciptakan ... di sini, kita akan termasuk info tentang buah-buahan dan sayuran ke dalam halaman induk disebut makanan.

1. food.xml - data xml file di mana transformasi akan diterapkan
2. food.xsl - utama XSL file, yang akan mengubah food.xml kami
3. inc_fruits.xsl - include file XSL yang akan membuat data buah-buahan
4. inc_vegtables.xsl - include file XSL yang akan membuat data vetetables

Aku nggak pikir saya harus menjelaskan banyak, kode untuk elemen di atas, akan cukup jelas ...

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>

Download semua file di atas sini (252 download)


2008 4 April 2008

Bekerja dengan Atribut Node XML XSLT

Jika Anda menggunakan XML dan XSL, maka Anda mungkin telah menemukan waktu, ketika Anda harus bermain-main dengan atribut dan nilai dari node XML XSL Anda. Mereka banyak situs dengan info panjang lebar tentang hal ini, namun tidak satupun saya temukan adalah singkat dan tepat ... Ini adalah TIDAK TUTORIAL XML / XSL, tapi upaya saya untuk menempatkan bersama-semacam daftar contekan ...

Sampel XML yang kita akan bekerja dengan terlihat seperti ini ...

<?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>

Jadi Mari kita mulai mengubah XML di atas kita menggunakan XSL

Contoh 1: Menampilkan nilai pada Atribut dipilih

<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>

Hasilnya akan terlihat seperti HTML

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


Contoh 2: Looping melalui dan menampilkan semua Nama Atribut XML dan Nilai mereka

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

Hasilnya akan terlihat seperti 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


Download semua file di atas sini (245 download)



Lihat saja nanti, saya akan terus mengupdate ini dengan temuan baru ...


NDK rumah | Mengekspresikan TI | Langit-langit Mulut Mengekspresikan | Penmenship Mengekspresikan | Awe Mengekspresikan | Mengekspresikan Diriku