Extensible Application Markup Language

**Extensible Application Markup Language** (XAML, dieja *zammel* ) adalah sebuah bahasa berbasis XML deklaratif yang diciptakan oleh Microsoft yang digunakan untuk menginisialisasi nilai dan objek terstruktur. XAML tersedia di bawah Open Specification Promise Microsoft. Akronim ini pada mulanya merupakan singkatan dari Extensible Avalon Markup Language - *Avalon*, yaitu sebuah nama kode untuk Windows Presentation Foundation (WPF).

## Tinjauan

XAML digunakan secara ekstensif di dalam teknologi .NET Framework 3.0, khususnya Windows Presentation Foundation (WPF) dan Windows Workflow Foundation (WF). Di dalam WPF, XAML digunakan sebagai sebuah bahasa markup antarmuka pengguna untuk mendefinisikan elemen antarmuka pengguna, *data binding*, *eventing*, dan fitur-fitur lain. Dalam WF, workflow dapat didefinisikan dengan menggunakan XAML.

Elemen XAML memetakan langsung ke *instance* objek Common Language Runtime, sementara atribut XAML memetakan ke properti dan *event* Common Language Runtime di atas objek-objek tersebut. File XAML dapat diciptakan dan disunting dengan alat desain visual semacam Microsoft Expression Blend, Microsoft Visual Studio, dan desainer visual Windows Workflow Foundation yang dapat di-*host*-kan. XAML juga dapat diciptakan dan disunting dengan penyunting teks standar, penyunting kode semacam XAMLPad dan Kaxaml, atau dengan penyunting grafis semacam Vectropy.

## Teknologi

File XAML dapat dikompilasi ke dalam file .baml (Binary XAML) yang dapat dimasukkan sebagai sumber daya ke dalam *assembly* .NET Framework. Pada saat *run-time*, mesin framework mengekstrak file .baml dari *assembly* tersebut, mem-*parse*, dan menciptakan sebuah pohon visual WPF atau *workflow*.

Bila digunakan dalam Windows Presentation Foundation, XAML digunakan untuk menjelaskan visual antarmuka pengguna. WPF memungkinkan definisi dari kedua objek 2D dan 3D, rotasi, translasi, animasi, dan berbagai efek dan fitur lainnya.

Bila digunakan pada konteks-konteks Windows Workflow Foundation, XAML digunakan untuk menjelaskan logika deklaratif yang berpotensial berjalan lama, seperti yang dibuat oleh alat pemodelan proses dan sistem aturan. Format serialisasi untuk *workflow* sebelumnya disebut* 'XOML*', untuk membedakan dari penggunaan XAML sebagai markup antarmuka pengguna, tetapi sekarang tidak dibedakan lagi. Bagaimanapun, file ekstensi untuk file yang berisi *markup workflow* masih berupa "XOML".

## Templat

XAML menggunakan sebuah cara spesifik untuk mendefinisikan Look and Feel yang disebut *Templat*, berbeda dari sintaks Cascading Style Sheets, tetapi mirip dengan XBL.

## Contoh

Contoh di bawah ini memperlihatkan sebuah teks "Hello World!" di dalam *container* XAML *top-level* yang disebut Canvas.

```xml
<Canvas xmlns="http://schemas.microsoft.com/client/2007"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <TextBlock>Hello World!</TextBlock>
</Canvas>
```


Skema (bagian xmlns="http://schemas.microsoft.com ...") bisa saja berbeda di komputer Anda.
Dengan menggunakan skema yang disarankan Microsoft, contoh di atas menjadi


```xml
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
  <TextBlock>Hello World!</TextBlock>
</Canvas>
```


Teknologi ini dapat diintegrasikan ke dalam halaman web jika WPF diinstal menggunakan XBAP yang merupakan aplikasi terkompilasi yang berjalan di dalam sebuah lingkungan *bak-pasir* yang di-*host* dalam *browser*. Cara lain adalah dengan menggunakan *plugin* Silverlight. Kode tidak bisa dimasukkan langsung dalam halaman HTML, tetapi harus dimuat ke dalam halaman melalui JavaScript. Jika .NET 3.0 atau lebih tinggi diinstal, file Loose XAML juga dapat dilihat di browser yang kompatibel (termasuk Internet Explorer dan Firefox) sehubungan dengan. NET Framework 3.0, tanpa perlu plugin untuk Silverlight. File Loose XAML adalah file yang berisi markup saja yang terbatas hanya untuk mendefinisikan isi visual yang akan di-render. File ini tidak dikompilasi dengan sebuah applikasi.


```xml
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>XAML Example </title>
    <script type="text/javascript" src="MySilverlight.js" />
    <script type="text/javascript" src="Silver.js" />
  </head>
  <body>
    <div id="MySilverlight" >
    </div>
    <script type="text/javascript">
      createMySilverlight();
    </script>
  </body>
</html>
```


File *MySilverlight.js* mesti berisi kode yang memuat kode XAML di atas (sebagai sebuah file XML) di bawah elemen html *MySilverlight*.

## Kritik

European Committee for Interoperable Systems berpendapat bahwa penggunaan XAML oleh Microsoft di dalam Silverlight bertujuan untuk memperkenalkan konten di dalam world wide web yang hanya dapat dilayani dari platform Windows.

Namun XAML juga dapat dilihat di browser non-Microsoft pada Windows dan Mac. Microsoft juga menyediakan dukungan langsung untuk pengembangan Silverlight Viewer untuk GNU/Linux bernama Moonlight.

## Catatan kaki

## Pranala luar
* Exporter Adobe Fireworks to XAML (gratis) 
* WPF SDK 
* Microsoft XAML overview 
* Pengenalan kontrol-kontrol XAML dari Microsoft Longhorn Developer 
* United XAML Initiative  - Open Source XAML
* NetFXGuide.com 
* LearnWPF 
* Situs teknologi bahasa markup 
* Free XAML Designs Website 
* Mediaportal 
* Konverter LightWave 3D > Objek XAML 
* Dylan's XAML Word (Word Processor) on Codeplex 
* 3DPaintBrush - Create XAML from 3D models