2009 7 Maret 2009

Memanggil Fungsi onload Beberapa Windows Dalam Javascript

Heres lain peice sedikit tipu daya Javascript yang saya harus menggali sekitar karena situasi commaned itu. Dalam salah satu situs web saya, saya memiliki situasi ini di mana saya harus menerapkan "windows.onload" dua kali. Hal pertama yang akan datang ke pikiran yang berpengalaman seperti saya (saya harus jujur ​​mengatakan itu, karena aku telah menggunakan Kerangka javascript dan perpustakaan, saya telah forgotton melakukan hal-hal sederhana sendiri ... menyedihkan tapi benar), adalah metode berikut ...

 window.onload = onloadfn1;
 window.onload = onloadfn2;
 window.onload = onloadfn3;
 dll ..

Maaf untuk mengatakan tetapi, ini tidak akan bekerja ... tidak ingin membahas ilmu eksekusi Javascript banyak ... tapi menurut pengalaman baru, hanya fungsi terakhir (onloadfn3) sakit akan benar-benar dijalankan.

Dalam situasi normal, tidak seperti saya (yang saya akan membicarakan sedikit kemudian) ... Anda bisa melakukan satu dari berikut ini untuk melakukan fungsi onload mutliple ....

ATAU sesuatu seperti ini

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

Untuk situasi saya saat ini, saya tidak dapat menggunakan salah satu di atas ...
Mengapa saya perlu memanggil windows.onload dua kali, bukan yang memanggil dua fungsi dalam fungsi onload tunggal? Berikut adalah cepat melihat pernyataan masalah saya ...

"Halaman My Site disusun seperti tema WORDPRESS .... yaitu ada header.php dan footer.php umum yang akan dimasukkan ke semua halaman situs. Ada fungsi onload implementaion di footer.php untuk melakukan beberapa fungsi onload umum. DAN ada beberapa halaman yang perlu sesuatu onload mereka sendiri, selain dari yang dilakukan oleh fungsi onload umum. Jika saya menetapkan fungsi callback langsung ke handler window.onload, akan over-naik callback sebelumnya ditetapkan dalam footer.php "

.... Apakah masalah saya dipahami :) ?

Nah! ada beberapa solusi yang saya temukan. Mereka semua sangat mirip dan terutama implementions dari solusi yang diberikan oleh Simon Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...

Solusi:

Cukup tambahkan kode javascript ke situs ...

 fungsi addLoadEvent (fungsi) {
     var oldonload = window.onload;
     if (typeof window.onload = 'function') {
        window.onload = fungsi
     } Else {
        window.onload = function () {
            if (oldonload) {
                   oldonload ()
           }
           func ()
        }
    }
 }

Dan menyebutnya bukan "windows.onload" biasa

 addLoadEvent (FunctionToRunOnPageLoad);
 addLoadEvent (function () {
 / * Kode lebih untuk berjalan di * buka halaman
 }); 

Keuntungan dari potongan kode ini ...
1. Terutama, It memungkinkan Anda memiliki beberapa peristiwa windows.onload, yang disebut dari bagian-bagian terpisah dari kode Anda, tanpa overridding definisi sebelumnya
2. Hal ini sangat mengganggu. Dapat ditempatkan dalam sebuah file dengan script Anda yang lain atau dalam file terpisah.
3. Ia bekerja bahkan jika window.onload sudah diatur.


2008 20 September 2008

TEXTAREA Tutup masalah dalam XSL / XSLT


MASALAH:
Aku berlari ke dalam masalah mengenai dihapus saja di XSLs. Dengan kata sederhana, masalahnya muncul ketika Anda memiliki tag <textarea> kosong, maka akan runtuh ke <textarea />.
yaitu jika Anda memiliki sesuatu seperti berikut dalam Anda XSL dan data XML untuk nilai textarea, mengembalikan apa-apa ...

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

Sebagai browser tidak mengenali ini, akan menyebabkan sisa formulir HTML untuk menjalankan ke dalam area teks.

MUNGKIN SOLUSI:

Dalam XSL, menambahkan non-breaking space () setelah xsl: tag.BEWARE nilai, untuk mengurus ini ruang ekstra yang ditambahkan, selama validasi sisi klien bidang ini.

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

Atau
<xsl:value-of select="concat (DESCRIPTION,'')"/>

Atau
Masukkan <xsl:value-of select="@unknown" tag /> menunjuk ke atribut diketahui. Hal ini akan memaksa PHP parser XSLT untuk menghasilkan tag pembukaan dan penutupan teks area, bahkan jika itu tidak ada di antara keduanya.

Atau
Masukkan bidang <xsl:text> berisi ruang untuk memaksa tag penutup.

Namun, meskipun solusi yang disebutkan di atas mungkin tampak untuk memperbaiki masalah, saya masih tidak yakin bahwa mereka benar dan cara terbaik untuk memperbaikinya. Jika ada cara lain yang lebih baik untuk memperbaiki permainan kata-kata ini, Harap beritahu kami.


2008 14 September 2008

Sebuah Berbagai Kondisi Uji XSL (Koleksi XSL: JIKA dan XSL: KETIKA Kondisi UJI)

Setiap kali saya harus melakukan XSL: IF atau XSL: KETIKA tes, saya harus kembali ke buku-buku referensi. Saya sepertinya tidak pernah mengingatnya. Berpikir akan ada lebih banyak di luar sana, sama seperti saya, yang lebih suka memilih untuk memiliki mereka semua, mungkin, di satu tempat, siap dirujuk bila diperlukan.

Bagi mereka yang baru ... Sintaks untuk XSL: JIKA

<xsl:if test="expression">
<- Isi:! Template ->
</ Xsl: if>

Xsl: jika / XSL: ketika Koleksi Uji
Kondisi di bawah ini adalah semua sederhana dan Cukup jelas. Jadi saya percaya itu tidak perlu banyak penjelasan

<xsl:if test="position()=last()-1">
Ini jika elemen terakhir tapi satu dalam daftar!
</ Xsl: if>

<xsl:if test="SALARY> 5000 ">
Gaji dari orang ini lebih besar dari Rs. 5000
</ Xsl: if>

<xsl:if test="count(JOBS)> 3 ">
Ada lebih dari 3 pekerjaan dalam daftar ini!
</ Xsl: if>

<xsl:if test="(@DEPT ='SALES') atau (@JOINYEAR = '1997')">
Orang ini adalah dari departemen penjualan ATAU Tahun nya Bergabung adalah 1997
</ Xsl: if>

<xsl:if test="EXPERIENCE">
Orang ini memiliki minimal satu elemen PENGALAMAN anak.
</ Xsl: if>

<xsl:if test="@HOBBY">
Orang tersebut memiliki atribut hobi.
</ Xsl: if>

Kondisi teks yang sama dapat digunakan untuk XSL: pilih / XSL: KETIKA juga

xsl: pilih

XSLT yang xsl: Pilih instruksi mirip dengan xsl: jika namun memiliki beberapa perbedaan penting:
• Satu xsl: elemen pilih dapat menguji lebih dari satu kondisi dan menambahkan node yang berbeda untuk hasil pohon yang berdasarkan kondisi benar.
• Sebuah xsl: pilih elemen dapat memiliki template default untuk menambah hasil pohon jika tidak ada kondisi adalah benar. (Bandingkan xsl: jika, yang tidak memiliki setara dengan kondisi "lain".)
• Para xsl: pilih elemen memiliki subelements tertentu yang diperlukan untuk itu untuk bekerja, sementara Anda dapat menempatkan setiap well-formed elemen yang Anda inginkan di dalam sebuah xsl: jika elemen.

<xsl:choose>
<xsl:when test="boolean-expression">
Lakukan sesuatu saat ini boolean ekspresi adalah Ture
</ Xsl: ketika>
<xsl:otherwise> Apakah sesuatu yang lain </ xsl: dinyatakan>
</ Xsl: pilih>


2008 13 Agu 2008

Tokenizing String Delimited dalam sebuah XSL

Jika kebutuhan Anda adalah untuk membagi nilai node dalam XML, yang berisi string dipisahkan nilai, ke setiap item, maka Anda telah mencapai tempat yang tepat ... kita lihat contoh di bawah ini. Jika Anda sudah familiar dengan sedikit XML dan XSL ... Saya tidak berpikir Anda akan perlu penjelasan apapun.
Juga, contoh ini meliputi penggunaan fungsi XSL seperti xsl: call-template, xsl: substring-sebelumnya, xsl: substring-setelah, kalau itu yang Anda setelah.

XML untuk diubah (food.xml): -
Asumsikan tugas ini adalah untuk tokenize yang dibatasi string dengan koma, pada "kata kunci" tag

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

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

Tak perlu dikatakan ... hanya mengubah parameter "delimitr" untuk pembatas pilihan Anda


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