Extensible Application Markup Language

Extensible Application Markup Language (XAML) är ett deklarativt XML-baserat språk som används för att initialisera strukturerade värden och objekt Språket har utvecklats av Microsoft, och förkortningen stod inledningsvis för Extensible Avalon Markup Language, där Avalon var kodnamnet för Windows Presentation Foundation (WPF).

Överblick 
XAML är en bärande komponent i .NET 3.0 och .NET 4.0, särskilt inom Windows Presentation Foundation (WPF), Silverlight, och Windows Workflow Foundation (WF). I WPF används XAML som det språk som definierar gränssnittselement, händelser och andra funktioner. I WF kan XAML användas för att definiera arbetsflödet.

Element i XAML är mappade mot CLR-objekt, och attribut är mappade mot motsvarande objekts CLR-egenskaper. XAML-filer kan skapas och redigeras med hjälp av designverktyg, till exempel Microsoft Expression Blend, Microsoft Visual Studio och Windows Workflow Foundation visual designer. De kan även skapas och redigeras med ett vanligt textredigeringsprogram, kodredigeringsprogram som XAMLPad eller ett grafiska redigeringsprogram som Vector Architect.

Allt som skapats eller implementerats i XAML kan även uttryckas med mer traditionell .NET-kod som till exempel C# eller Visual Basic.NET. En av fördelarna med XAML är däremot den minskade komplexitet som krävs för ett verktyg som bearbetar XAML, som en följd av att det bygger på XML. Som en följd av detta har en stor mängd produkter dykt upp, speciellt inom WPF, som skapar XAML-baserade applikationer. Eftersom XAML är baserat på XML så kan utvecklare och designers dela och redigera innehåll sinsemellan utan något krav på kompilering. Då XAML är starkt kopplat till .NET 3.0 så är idag den enda fullt kompatibla implementationen Microsofts.

Teknologi 
En XAML-fil  kan kompileras till en .baml-fil (Binary XAML), som kan användas som en källa i en .NET-konstruktion. Vid körning så extraherar motorn .baml-filen från källan, parsar den och skapar ett motsvarande visuellt träd eller arbetsflöde i WPF.
I WPF används XAML för att beskriva visuella användasgränssnitt. WPF tillåter definitioner av objekt i både 2D och 3D, rotationer, animationer och en mängd andra effekter och funktioner. 
I sammanhang med WF så används XAML istället för att beskriva potentiellt långvarig deklarativ logik, till exempel sådan skapad av modelleringsverktyg och regelsystem. Serialiseringsformatet för arbetsflöden kallades tidigare ”XOML”, för att urskilja det från användningen av XAML för definition av gränssnitt. Nu är dessa dock ej längre åtskilda.  Dock är filändelsen för filer som innehåller definitioner av arbetsflöden fortfarande “XOML”.

Mallar 
XAML har ett specifikt sätt att definiera “utseende och känsla” som kallas för “Mallar”, dessa skiljer sig från syntaxen för CSS och ligger istället närmare XBL.

Exempel 
Det här exemplet i WPF visar texten “Hello World!” i en behållare i XAML kallad Canvas. 
<Canvas xmlns="http://schemas.microsoft.com/client/2007"  
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <TextBlock>Hello World!</TextBlock>
</Canvas>

Schemat (the xmlns="https://web.archive.org/web/20170705010515/http://schemas.microsoft.com/..." ) kan behöva ändras för att fungera på din dator.  
Med användning av ett schema rekommenderat av Microsoft kan exemplet även se ut som följande:

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

Detta kan integreras i en hemsida om WPF är installerad med användning av XBAP (XAML Browser Applications) som är kompilerade applikationer som körs i en sandlådemiljö inuti webbläsaren. Ett annat sätt är att använda ett plugin för Silverlight. Koden kan inte inkluderas direkt i en HTML-sida, den måste istället laddas in via JavaScript. Om .NET 3.0 eller senare version finns installerat så kan lösa XAML-filer även visas i en kompatibel webbläsare så som Internet Explorer eller Firefox, utan behov av ett Siverlight-plugin. Lösa XAML-filer är endast till för markup och alltså begränsade till att definiera det visuella innehållet. Dessa är inte kompilerade.

<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>
Filen MySilverlight.js måste innehålla koden som laddar XAML-koden ovan (som en XML) under html-elementet "MySilverlight".

Kritik 
European Committee for Interoperable Systems menar att Microsofts användning av XAML i Silverlight har som mål att föra ut innehåll på internet som endast kan nås via en Microsoft Windows-plattform. 
Genom användandet av plugin så är dock XAML möjligt att visa i webbläsare som inte är utvecklade av Microsoft samt i Mac OS X. Microsoft erbjuder även stöd för Novells utveckling av en Silverlight-visare för GNU/Linux kallad Moonlight. Från och med januari 2010 är Moonlight 2 en kompatibel implementation av Silverlight 2.

Referenser

Externa länkar 
 Microsoft XAML overview

Programspråk