Hoppa till innehållet

Extensible Application Markup Language

Från Wikipedia
Fil:Wpfapp.PNG
XAML WPF Application.

Extensible Application Markup Language (XAML) är ett deklarativt XML-baserat språk utvecklat av Microsoft som används för att initialisera strukturerade värden och objekt[1]Akronymen stod från början för “Extensible Avalon Markup Language” . Avalon var kodnamnet för Windows Presentation Foundation (WPF).[2]

Överblick

XAML har en omfattande användning i .NET 3.0] och .NET 4.0, speciellt inom Windows Presentation Foundation (WPF), Silverlight, och Windows Workflow Foundation (WF). I WPF används XAML som ett så kallat “user interface markup language” för att definiera 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, medan attributen i XAML är mappade mot CLR-properties på de objekten. XAML-filer kan skapas och editeras med hjälp av designverktyg Microsoft Expression Blend, Microsoft Visual Studio och Windows Workflow Foundation visual designer. De kan även skapas och editeras med ett vanligt textredigeringsprogram, ett kodredigeringsprogram så som till exempel XAMLPad eller ett grafiskt redigeringsprogram som till exempel 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. Dock är en av poängerna med XAML den minskade komplexiteten som krävs för ett verktyg som processar 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 Då XAML är baserat på XML så kan utvecklare och designers dela och editera 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 iWPF 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="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

  1. ^ Microsoft adds XAML to 'Open Specification' list - Software Development Times On The Web
  2. ^ Rob Relyea : January 2004 - Posts
  3. ^ ”XAML Syntax Terminology”. XAML Syntax Terminology. Microsoft Corporation. http://msdn2.microsoft.com/en-us/library/ms788723.aspx. 
  4. ^ MSDN forum post by the WF product manager
  5. ^ RuleML and BPEL are other examples of XML-based declarative logic languages
  6. ^ Guthrie, Scott (2008-02-22). ”Silverlight Tutorial Part 7: Using Control Templates to Customize a Control's Look and Feel”. 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. 
  7. ^ Microsoft XAML Overview page at XAML Overview (Root element and xmlns)
  8. ^ Windows Presentation Foundation on the Web: Web Browser Applications - MSDN
  9. ^ ”Microsoft runs into EU Vista charges”. Microsoft runs into EU Vista charges. itwire.com. 2007-01-28. http://www.itwire.com/content/view/8988/53/. Läst 16 april 2008. 
  10. ^ Foley, Mary Jo (2007-09-25). ”Microsoft officially ‘extends support’ for Novell’s Silverlight Linux port”. Microsoft officially ‘extends support’ for Novell’s Silverlight Linux port. zdnet.com. http://blogs.zdnet.com/microsoft/?p=695. Läst 13 oktober 2007. 
  11. ^ ”Releasing Moonlight 2, Roadmap to Moonlight 3 and 4”. 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. 

Länkar