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[1] 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).[2]
Ö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.[3] 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”.[4][5]
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.[6]
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: [7]
<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.[8] 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[9] 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.[10] Från och med januari 2010 är Moonlight 2 en kompatibel implementation av Silverlight 2.[11]
Referenser
- ^ Microsoft adds XAML to 'Open Specification' list - Software Development Times On The Web Arkiverad 11 december 2008 hämtat från the Wayback Machine.
- ^ Rob Relyea : January 2004 - Posts Arkiverad 11 oktober 2007 hämtat från the Wayback Machine.
- ^ ”XAML Syntax Terminology”. Microsoft Corporation. http://msdn2.microsoft.com/en-us/library/ms788723.aspx.
- ^ MSDN forum post by the WF product manager Arkiverad 27 december 2007 hämtat från the Wayback Machine.
- ^ RuleML and BPEL are other examples of XML-based declarative logic languages
- ^ Guthrie, Scott (22 februari 2008). ”Silverlight Tutorial Part 7: Using Control Templates to Customize a Control's Look and Feel”. http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-7-using-control-templates-to-customize-a-control-s-look-and-feel.aspx. Läst 8 mars 2008.
- ^ Microsoft XAML Overview page at XAML Overview (Root element and xmlns)
- ^ Windows Presentation Foundation on the Web: Web Browser Applications - MSDN
- ^ ”Microsoft runs into EU Vista charges”. itwire.com. 28 januari 2007. Arkiverad från originalet den 13 september 2008. https://web.archive.org/web/20080913123353/http://www.itwire.com/content/view/8988/53/. Läst 16 april 2008.
- ^ Foley, Mary Jo (25 september 2007). ”Microsoft officially ‘extends support’ for Novell’s Silverlight Linux port”. zdnet.com. Arkiverad från originalet den 2 mars 2012. https://www.webcitation.org/65rhdKLyY?url=http://www.zdnet.com/blog/microsoft/microsoft-officially-extends-support-for-novells-silverlight-linux-port/695. Läst 13 oktober 2007.
- ^ ”Releasing Moonlight 2, Roadmap to Moonlight 3 and 4”. Miguel de Icaza. http://tirania.org/blog/archive/2009/Dec-17.html. Läst 17 december 2009.
Externa länkar
|