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 (255 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 (248 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