XAML

확장 응용 프로그램 마크업 언어(Extensible Application Markup Language), 곧 XAML([zæ:mɛl])로 발음)은 마이크로소프트사가 구조값과 객체를 초기화하는 데 사용하려고 만든 선언형 XML 기반 언어이다. 마이크로소프트사의 Open Specification Promise를 통해 사용할 수 있다. XAML은 원래 윈도우 프레젠테이션 파운데이션의 코드 이름이기도 했던 Avalon에서 따와서 "eXtension Avalon Markup Language"를 대표하는 말이었다.

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

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

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

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

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

스키마(xmlns="https://web.archive.org/web/20170705010515/http://schemas.microsoft.com/..." 부분)는 컴퓨터에서 동작할 수 있게 변경할 필요가 있다.
마이크로소프트가 권장하는 스키마를 사용한 예시는 다음과 같을 수도 있다.

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

이것은 브라우저 내에 호스팅되는 샌드박스 환경에서 실행되는 컴파일된 응용 프로그램인 XBAP를 사용하여 WPF를 설치하는 경우 웹 페이지로 통합할 수 있다. 다른 방법으로는 실버라이트 플러그인을 사용하는 것이다. 닷넷 3.0 이후가 설치되어 있다면 느슨한(loose) XAML 파일도 실버라이트 플러그인 없이 닷넷 프레임워크 3.0과 결합하여 호환 웹 브라우저(인터넷 익스플로러와 파이어폭스 포함) 직접 확인이 가능하다. 코드는 HTML 페이지에 직접 추가할 수 없다. 대신 자바스크립트를 통해 페이지로 로드되어야 한다. 느슨한 XAML 파일들은 렌더링할 시각적인 내용을 정의하는 것으로 제한되는 마크업 전용 파일이다. 이들은 응용 프로그램과 컴파일되지 않는다.

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

같이 보기 
 레이아웃 매니저
 ZUML
 NextStep/Cocoa 인터페이스 빌더

각주

외부 링크 
 마이크로소프트 XAML 개요

XML 기반 표준
마이크로소프트 API
선언형 프로그래밍 언어
닷넷 프레임워크
마크업 언어
선언형 마크업 언어