{{위키데이터 속성 추적}}
{{Infobox file format
| name          = 확장 응용 프로그램 마크업 언어<br />Extensible Application Markup Language (XAML)
| icon          = 
| logo          = 
| screenshot    = 
| caption       = 
| extension     = <tt>.xaml</tt>
| mime          = application/xaml+xml
| type code     = 
| uniform type  = 
| magic         = 
| owner         = [[마이크로소프트]]
| released      = {{시작 날짜|2008|06|df=yes}}<ref>{{인용
 | url = http://download.microsoft.com/download/0/A/6/0A6F7755-9AF5-448B-907D-13985ACCF53E/&#91;MS-XAML&#93;.pdf
 | format = PDF
 | title = &#91;MS-XAML&#93; – v1.0, Xaml Object Mapping Specification 2006
 | publisher = [[마이크로소프트]]
 | date = June 2006
 | accessdate = 2010-06-24
 | archive-date = 2010-12-24
 | archive-url = https://web.archive.org/web/20101224204704/http://download.microsoft.com/download/0/a/6/0a6f7755-9af5-448b-907d-13985accf53e/%5BMS-XAML%5D.pdf
 | url-status = dead
 }}</ref>
| latest release version = v2019
| latest release date = {{시작 날짜와 나이|2019|03|12|df=yes}}<ref>{{웹 인용
 | url = http://www.microsoft.com/downloads/details.aspx?FamilyID=52a193d1-d14f-4335-aa86-c53193e1885d&displayLang=en
 | title = Extensible Application Markup Language (XAML)
 | publisher = [[마이크로소프트]]
 | date = 12 March 2019}}</ref>
| genre         = [[사용자 인터페이스 마크업 언어]]
| container for = 
| contained by  = 
| extended from = [[XML]]
| extended to   = 
| standard      = 
| free          = 
| url           = 
}}
'''확장 응용 프로그램 마크업 언어'''(Extensible Application Markup Language), 곧 '''XAML'''([zæ:mɛl])로 발음)은 [[마이크로소프트]]사가 구조값과 객체를 초기화하는 데 사용하려고 만든 선언형 [[XML]] 기반 언어이다. 마이크로소프트사의 [[Open Specification Promise]]를 통해 사용할 수 있다.<ref>{{웹 인용 |url=http://www.sdtimes.com/(X(1)S(kw21wu45u03kzpnafqlanyiy))/content/article.aspx?ArticleID=31886&AspxAutoDetectCookieSupport=1 |제목=Microsoft adds XAML to 'Open Specification' list - SD Times On The Web<!-- 봇이 붙인 제목 --> |확인날짜=2011년 7월 19일 |보존url=https://web.archive.org/web/20081211204034/http://www.sdtimes.com/%28X%281%29S%28kw21wu45u03kzpnafqlanyiy%29%29/content/article.aspx?ArticleID=31886&AspxAutoDetectCookieSupport=1 |보존날짜=2008년 12월 11일 |url-status=dead }}</ref> XAML은 원래 [[윈도우 프레젠테이션 파운데이션]]의 코드 이름이기도 했던 Avalon에서 따와서 "eXtension Avalon Markup Language"를 대표하는 말이었다.<ref>{{웹 인용 |url=http://www.windows-now.com/blogs/rrelyea/archive/2004/01.aspx |제목=January 2004 - Posts - Rob Relyea<!-- 봇이 붙인 제목 --> |확인날짜=2007년 10월 6일 |보존url=https://web.archive.org/web/20071011212059/http://www.windows-now.com/blogs/rrelyea/archive/2004/01.aspx |보존날짜=2007년 10월 11일 |url-status=dead }}</ref>

== 개요 ==
XAML은 [[닷넷 프레임워크|닷넷 프레임워크 3.0]] 기술에, 특히 [[윈도우 프레젠테이션 파운데이션]](WPF), [[윈도 워크플로 파운데이션]](WF)에 널리 쓰인다. WPF에서 XAML은 [[사용자 인터페이스 마크업 언어]]로 쓰이면서 사용자 인터페이스의 요소, 데이터 바인딩, 이벤트 등의 기능을 정의한다. 윈도 워크플로 파운데이션에서 [[워크플로]]는 XAML을 사용하여 정의할 수 있다.

XAML 요소는 [[공통 언어 런타임]] 객체 인터페이스에 직접 매핑할 수 있지만 XAML은 공통 언어 런타임 속성과 이벤트를 해당 객체로 매핑하는 데 사용한다. XAML 파일은 [[마이크로소프트 익스프레션 블렌드]], [[마이크로소프트 비주얼 스튜디오]], 호스팅 가능한 [[윈도 워크플로 파운데이션]] 비주얼 디자이너와 같은 시각 디자인 도구로 만들고 편집할 수 있다. 표준 [[문서 편집기]], [[XAMLPad]]와 같은 코드 편집기, [[Vectropy]]와 같은 그래픽 편집기로 만들어 편집할 수도 있다.

XAML을 추가하거나 그것으로 만든 어떠한 것이든 [[C 샤프|C#]], [[비주얼 베이직 닷넷]]과 같은 기존에 쓰여왔던 닷넷 언어를 사용하여 표현할 수 있다. 그러나 이 기술의 주된 측면은 [[XML]] 기반이기에 XAML을 처리하는 도구에 필요한 복잡성을 줄이는 것이다.<ref>[http://msdn2.microsoft.com/en-us/library/ms788723.aspx XAML Syntax Terminology<!-- 봇이 붙인 제목 -->]</ref> 그 결과 다양한 제품이 XAML 기반의 응용 프로그램을 만들 수 있는(특히 [[윈도우 프레젠테이션 파운데이션]]) 공간에서 등장하고 있다. XAML은 단순히 XML 기반이므로 개발자들과 디자이너들은 컴파일을 하지 않아도 두 마크업 언어 사이에서 콘텐츠를 자유로이 공유하고 편집할 수 있다.

== 예 ==
이 윈도우 프레젠테이션 파운데이션의 예는 캔버스(Canvas)라 불리는 최상위 XAML 컨테이너에 "Hello, world!"를 표시한다.

<syntaxhighlight lang=XML>
<Canvas xmlns="http://schemas.microsoft.com/client/2007"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <TextBlock>Hello, world!</TextBlock>
</Canvas>
</syntaxhighlight>

스키마(xmlns="https://web.archive.org/web/20170705010515/http://schemas.microsoft.com/..." 부분)는 컴퓨터에서 동작할 수 있게 변경할 필요가 있다.
마이크로소프트가 권장하는 스키마를 사용한 예시는 다음과 같을 수도 있다.<ref>Microsoft XAML Overview page at
[https://msdn.microsoft.com/en-us/library/ms752059.aspx#xaml_files XAML Overview (Root element and xmlns)]</ref>

<syntaxhighlight lang=XML>
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
  <TextBlock>Hello, world!</TextBlock>
</Canvas>
</syntaxhighlight>

이것은 브라우저 내에 호스팅되는 샌드박스 환경에서 실행되는 컴파일된 응용 프로그램인 [[XBAP]]를 사용하여 WPF를 설치하는 경우 [[웹 페이지]]로 통합할 수 있다. 다른 방법으로는 [[마이크로소프트 실버라이트|실버라이트 플러그인]]을 사용하는 것이다. 닷넷 3.0 이후가 설치되어 있다면 느슨한(loose) XAML 파일도 실버라이트 플러그인 없이 닷넷 프레임워크 3.0과 결합하여 호환 [[웹 브라우저]]([[인터넷 익스플로러]]와 [[파이어폭스]] 포함) 직접 확인이 가능하다.<ref>[https://msdn.microsoft.com/en-us/library/aa480223.aspx#wpfandwbas_topic6 Windows Presentation Foundation on the Web: Web Browser Applications - MSDN]</ref> 코드는 [[HTML]] 페이지에 직접 추가할 수 없다. 대신 [[자바스크립트]]를 통해 페이지로 로드되어야 한다. 느슨한 XAML 파일들은 렌더링할 시각적인 내용을 정의하는 것으로 제한되는 마크업 전용 파일이다. 이들은 응용 프로그램과 컴파일되지 않는다.

<syntaxhighlight lang="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>
</syntaxhighlight>
''MySilverlight.js'' 파일은 ''MySilverlight'' 요소 밑에 상기의 XAML 코드(XML 파일로)를 로드하는 코드를 포함해야 한다.

== 같이 보기 ==
* [[레이아웃 매니저]]
* [[ZK 프레임워크|ZUML]]
* [[인터페이스 빌더|NextStep/Cocoa 인터페이스 빌더]]

== 각주 ==
{{각주}}

== 외부 링크 ==
* [https://web.archive.org/web/20060717193028/http://windowssdk.msdn.microsoft.com/en-us/library/ms752059.aspx 마이크로소프트 XAML 개요]

{{마이크로소프트 개발 도구}}
{{닷넷 프레임워크}}
{{위젯 툴킷}}
{{그래픽 파일 포맷}}
{{문서 마크업 언어}}

[[분류:XML 기반 표준]]
[[분류:마이크로소프트 API]]
[[분류:선언형 프로그래밍 언어]]
[[분류:닷넷 프레임워크]]
[[분류:마크업 언어]]
[[분류:선언형 마크업 언어]]
[[분류:마이크로소프트 윈도우 멀티미디어 기술]]
[[분류:닷넷 용어]]